# 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) num_modes = 25 # analyze - - - - s.analyze_harmonic_super(num_modes, freq_list, fields=['u'], backend='ansys') # # save results - - - - - - s.to_obj() v = HarmonicViewer(s) v.show()
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 - - - - - - - - - el_prop1 = ElementProperties('concrete_shell_thin', material='concrete', section='thin_sec', elset='fins', is_rad=False) s.add(el_prop1) el_prop2 = ElementProperties('concrete_shell_thick', material='concrete', section='thick_sec', elset='no_fins', is_rad=True) s.add(el_prop2) # add analysis frequencies - - - - - - - - freq_list = range(20, 350, 2) num_modes = 25