# make an instance of the stucture object - - - - - - - - - - - - - - - - - - - s = Structure(path, name) # add nodes and elements from mesh - - - - - - - - - - - - - - - - - - - - - - - s.add_nodes_elements_from_mesh(mesh, 'ShellElement', elset='shell') # add displacements - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - d = FixedDisplacement('boundary', mesh.vertices_on_boundary()) s.add(d) # add loads - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - load = PointLoad(name='pload', nodes=[100], x=0, y=0, z=1, xx=0, yy=0, zz=0) s.add(load) # add sections - - - - - - - - - - - - section = ShellSection('shell_sec', t=.1) s.add(section) # add material - - - - - - material = ElasticIsotropic('concrete', E=30e9, v=.2, p=2400) s.add(material) # add element properties - - - - - - - - - el_prop = ElementProperties('concrete_shell', material='concrete', section='shell_sec', elset='shell') s.add(el_prop) # add analysis frequencies - - - - - - - - freq_list = range(20, 200, 2)
# s.add(d) bv = { vk for fk in mesh.faces_where({'is_boundary': True}) for vk in mesh.face_vertices(fk) } d = FixedDisplacement('boundary', list(bv)) s.add(d) # add loads - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - load = PointLoad(name='pload', nodes=[100], x=0, y=0, z=1, xx=0, yy=0, zz=0) s.add(load) # add sections - - - - - - - - - - - - section = ShellSection('thin_sec', t=.1) s.add(section) section = ShellSection('thick_sec', t=.2) s.add(section) # add sets - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fins = list(mesh.faces_where({'is_fin': True})) no_fins = list(mesh.faces_where({'is_fin': False})) s.add_set('fins', 'element', fins) s.add_set('no_fins', 'element', no_fins) # add material - - - - - - material = ElasticIsotropic('concrete', E=30e9, v=.2, p=2400) s.add(material) # add element properties - - - - - - - - -