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
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
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
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
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
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)