Beispiel #1
0
def model():
    model = nfem.Model()

    model.add_node(id='1', x=0, y=0, z=0, support='xyz')
    model.add_node(id='2', x=1, y=0, z=0, support='yz')
    model.add_node(id='3', x=2, y=0, z=0, support='xyz')
    model.add_node(id='4', x=0, y=1, z=0, support='xz')
    model.add_node(id='5', x=1, y=1, z=0, fz=-1)
    model.add_node(id='6', x=2, y=1, z=0, support='xz')
    model.add_node(id='7', x=0, y=2, z=0, support='xyz')
    model.add_node(id='8', x=1, y=2, z=0, support='yz')
    model.add_node(id='9', x=2, y=2, z=0, support='xyz')

    # outer elements
    model.add_truss(id='1', node_a='1', node_b='2', youngs_modulus=1, area=1)
    model.add_truss(id='2', node_a='2', node_b='3', youngs_modulus=1, area=1)
    model.add_truss(id='3', node_a='3', node_b='6', youngs_modulus=1, area=1)
    model.add_truss(id='4', node_a='6', node_b='9', youngs_modulus=1, area=1)
    model.add_truss(id='5', node_a='8', node_b='9', youngs_modulus=1, area=1)
    model.add_truss(id='6', node_a='7', node_b='8', youngs_modulus=1, area=1)
    model.add_truss(id='7', node_a='4', node_b='7', youngs_modulus=1, area=1)
    model.add_truss(id='8', node_a='1', node_b='4', youngs_modulus=1, area=1)

    # inner elements
    model.add_truss(id='9', node_a='2', node_b='5', youngs_modulus=1, area=1)
    model.add_truss(id='10', node_a='5', node_b='8', youngs_modulus=1, area=1)
    model.add_truss(id='11', node_a='4', node_b='5', youngs_modulus=1, area=1)
    model.add_truss(id='12', node_a='5', node_b='6', youngs_modulus=1, area=1)

    return model
Beispiel #2
0
def model():
    model = nfem.Model()

    model.add_node('A', x=0, y=0, z=0, support='xyz')
    model.add_node('B', x=1, y=1, z=0, support='z', fy=-1)
    model.add_node('C', x=2, y=0, z=0, support='xyz')

    model.add_truss('1', node_a='A', node_b='B', youngs_modulus=1, area=1)
    model.add_truss('2', node_a='B', node_b='C', youngs_modulus=1, area=1)

    return model
Beispiel #3
0
def model():
    model = nfem.Model()

    model.add_node('A', x=0, y=0, z=0, support='xyz')
    model.add_node('B', x=4, y=1, z=0, support='xz')

    model.add_truss('1', node_a='A', node_b='B', youngs_modulus=10, area=1)

    model.load_factor = 1

    return model
Beispiel #4
0
def model_1():
    model = nfem.Model()

    model.add_node(id='A', x=0, y=0, z=0, support='xyz')
    model.add_node(id='B', x=1, y=0, z=0, support='z', fy=-1)
    model.add_node(id='C', x=2, y=0, z=0, support='z', fy=-1)
    model.add_node(id='D', x=3, y=0, z=0, support='z', fy=-1)
    model.add_node(id='E', x=4, y=0, z=0, support='xyz')

    model.add_truss(id='1', node_a='A', node_b='B', youngs_modulus=1, area=1)
    model.add_truss(id='2', node_a='B', node_b='C', youngs_modulus=1, area=1)
    model.add_truss(id='3', node_a='C', node_b='D', youngs_modulus=1, area=1)
    model.add_truss(id='4', node_a='D', node_b='E', youngs_modulus=1, area=1)

    return model
Beispiel #5
0
def model():
    youngs_modulus = 1
    area = 1
    height = 1

    model = nfem.Model()

    model.add_node(id='A', x=0, y=0, z=0, support='xyz')
    model.add_node(id='B', x=1, y=height, z=0, support='z', fy=-1)
    model.add_node(id='C', x=2, y=0, z=0, support='xyz')

    model.add_truss(id='1',
                    node_a='A',
                    node_b='B',
                    youngs_modulus=youngs_modulus,
                    area=area)
    model.add_truss(id='2',
                    node_a='B',
                    node_b='C',
                    youngs_modulus=youngs_modulus,
                    area=area)

    return model
Beispiel #6
0
def test_add_element():
    class Element:
        def __init__(self, id, nodes, k):
            self.id = id
            self.nodes = nodes
            self.k = k

        @property
        def dofs(self):
            dofs = []
            for node in self.nodes:
                dofs.append(node._dof_x)
                dofs.append(node._dof_y)
                dofs.append(node._dof_z)
            return dofs

        def calculate_stiffness_matrix(self):
            return numpy.eye(6) * self.k

        def calculate_internal_forces(self):
            u = numpy.array([dof.delta for dof in self.dofs])
            return self.calculate_stiffness_matrix() @ u

    model = nfem.Model()

    model.add_node(id='A', x=0, y=0, z=0, support='xyz')
    model.add_node(id='B', x=1, y=1, z=0, support='z', fy=-1)
    model.add_node(id='C', x=2, y=0, z=0, support='xyz')

    model.add_element(Element, id='1', nodes=['A', 'B'], k=5)
    model.add_element(Element, id='2', nodes=['B', 'C'], k=5)

    model.load_factor = 1
    model.perform_load_control_step()

    assert_almost_equal(model.nodes['B'].u, 0)
    assert_almost_equal(model.nodes['B'].v, -0.1)