mdl.add_displacement(PinnedDisplacement(name='disp_pinned', nodes='nset_pins')) # Loads # Note: GravityLoad doesnt activate for OpenSees mdl.add_loads([ PointLoad(name='load_pl_v', nodes='nset_load_v', z=-15500), PointLoad(name='load_pl_h', nodes='nset_load_h', x=5000), GravityLoad(name='load_gravity', elements=['elset_diag', 'elset_main']) ]) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=['disp_pinned']), GeneralStep(name='step_loads', loads=['load_pl_v', 'load_pl_h', 'load_gravity'], factor=1.5, increments=200) ]) mdl.steps_order = ['step_bc', 'step_loads'] # Summary mdl.summary() # Run (Sofistik) mdl.write_input_file(software='sofistik')
elsets='elset_mesh') mdl.add_element_properties(ep) # Displacements mdl.add_displacement( PinnedDisplacement(name='disp_pinned', nodes='nset_corners')) # Loads mdl.add_load(GravityLoad(name='load_gravity', elements='elset_mesh')) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=['disp_pinned']), GeneralStep(name='step_load', loads=['load_gravity']) ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run (Abaqus) mdl.analyse_and_extract(software='abaqus', fields=['u', 's']) rhino.plot_principal_stresses(mdl, step='step_load', ptype='max', scale=10) rhino.plot_principal_stresses(mdl, step='step_load', ptype='min', scale=10)
section='sec_shell', elset='elset_shells')) # Displacements mdl.add(FixedDisplacement(name='disp_pins', nodes=[0, 2, 8, 6])) # Loads mdl.add(PointLoad(name='load_v', nodes=[4], z=-1000)) # Steps mdl.add( GeneralStep(name='step_bc_loads', displacements=['disp_pins'], loads=['load_v'], nlgeom=False)) mdl.steps_order = ['step_bc_loads'] # Summary # mdl.summary() # Run (Abaqus) # mdl.analyse_and_extract(software='abaqus', fields=['u', 'rf'], license='research') # Run (Ansys) mdl.analyse_and_extract(software='ansys', fields=['sf'], license='research')
# Displacements mdl.add(FixedDisplacement(name='disp_fixed', nodes='nset_fixed')) # Loads mdl.add([ GravityLoad(name='load_gravity', elements=['elset_wall', 'elset_plinth']), PointLoad(name='load_points', nodes='nset_loads', z=-20 * 10**3), ]) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_fixed']), GeneralStep(name='step_loads', loads=['load_gravity', 'load_points']), ]) mdl.steps_order = ['step_bc', 'step_loads'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='abaqus', fields=['u', 's', 'sf', 'rbfor']) rhino.plot_data(mdl, step='step_loads', field='um', cbar_size=0.5) rhino.plot_data(mdl, step='step_loads', field='sf1', cbar_size=0.5) rhino.plot_data(mdl, step='step_loads', field='sf2', cbar_size=0.5)
Properties(name='ep_solid_0', material='mat_2', section='sec_solid', elset='elset_blocks_layer_0'), Properties(name='ep_beams', material='mat_3', section='sec_rectangle', elset='elset_beams'), Properties(name='ep_membrane', material='mat_2', section='sec_membrane', elset='elset_membranes', rebar=rebar), ]) # Displacements mdl.add([ PinnedDisplacement(name='disp_pinned', nodes='nset_bot'), RollerDisplacementY(name='disp_roller', nodes='nset_top'), GeneralDisplacement(name='disp_move', nodes='nset_top', y=0.010) ]) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_pinned', 'disp_roller']), GeneralStep(name='step_move', displacements=['disp_move']), ]) mdl.steps_order = ['step_bc', 'step_move'] # Structure mdl.summary() # Run mdl.analyse_and_extract(software='abaqus', fields=['u', 's'], components=['ux', 'uy', 'uz', 'smises']) rhino.plot_data(mdl, step='step_move', field='smises', radius=0.002)
# Displacements mdl.add_displacements([ PinnedDisplacement(name='disp_bot', nodes='supports_bot'), RollerDisplacementZ(name='disp_top', nodes='supports_top') ]) # Loads mdl.add_load(GravityLoad(name='load_gravity', elements=layers)) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=['disp_bot', 'disp_top']), GeneralStep(name='step_loads', loads=['load_gravity']) ]) mdl.steps_order = ['step_bc', 'step_loads'] # Summary mdl.summary() # Run (Abaqus) mdl.analyse_and_extract(software='abaqus', fields=['u', 'sf']) rhino.plot_data(mdl, step='step_loads', field='um',
mdl.add([ PinnedDisplacement(name='disp_left', nodes='nset_left'), GeneralDisplacement(name='disp_right', nodes='nset_right', y=0, z=0, xx=0), GeneralDisplacement(name='disp_rotate', nodes='nset_left', yy=30 * pi / 180), ]) # Loads mdl.add(PointLoad(name='load_weights', nodes='nset_weights', z=-100)) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_left', 'disp_right']), GeneralStep(name='step_load', loads='load_weights', displacements='disp_rotate'), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='opensees', fields=['u', 'ur', 'sf', 'sm']) rhino.plot_data(mdl, step='step_load', field='um', radius=0.01, cbar_size=0.3)
RollerDisplacementXY(name='disp_roller', nodes='nset_corners'), PinnedDisplacement(name='disp_pinned', nodes='nset_corner1'), GeneralDisplacement(name='disp_xdof', nodes='nset_corner2', x=0)]) # Loads mesh = mesh_from_guid(Mesh(), rs.ObjectsByLayer('load_mesh')[0]) mdl.add_loads([ GravityLoad(name='load_gravity', elements='elset_concrete'), PrestressLoad(name='load_prestress', elements='elset_ties', sxx=50*10**6), TributaryLoad(mdl, name='load_tributary', mesh=mesh, z=-2000)]) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=['disp_roller', 'disp_pinned', 'disp_xdof']), GeneralStep(name='step_prestress', loads=['load_prestress']), GeneralStep(name='step_loads', loads=['load_gravity', 'load_tributary'], factor=1.1)]) mdl.steps_order = ['step_bc', 'step_prestress', 'step_loads'] # Summary mdl.summary() # Run (Abaqus) mdl.analyse_and_extract(software='abaqus', fields=['u', 's']) rhino.plot_data(mdl, step='step_prestress', field='uz', radius=0.02, colorbar_size=0.5) rhino.plot_data(mdl, step='step_loads', field='uz', radius=0.02, colorbar_size=0.5) rhino.plot_data(mdl, step='step_loads', field='smises', radius=0.02, colorbar_size=0.5,
# Add loads mdl.add_load(PointLoad(name='load_point', nodes='nset_top', x=10000, z=-10000)) mdl.add_load(GravityLoad(name='load_gravity', elements='elset_beams')) # print('load_point components: ', mdl.loads['load_point'].components) # Add displacements mdl.add_displacement(PinnedDisplacement(name='disp_pinned', nodes='nset_base')) # print('disp_pinned components: ', mdl.displacements['disp_pinned'].components) # Add steps mdl.add_step(GeneralStep(name='step_bc', displacements=['disp_pinned'])) mdl.add_step( GeneralStep(name='step_loads', loads=['load_point', 'load_gravity'])) mdl.steps_order = ['step_bc', 'step_loads'] # Structure summary mdl.summary() # Generate input files mdl.write_input_file(software='abaqus', fields=['s', 'u']) # Launch App mdl.view()
mdl.add_load( GravityLoad(name='load_gravity', elements=['elset_wall', 'elset_plinth'])) components = {} for object in get_objects(layer=2): px, py, pz, _ = object.name.split(' ') components[mdl.check_node_exists(list(object.location))] = { 'z': float(pz) * 100 } mdl.add_load(PointLoads(name='load_points', components=components)) loads = ['load_gravity', 'load_points'] # Steps mdl.add_steps([ GeneralStep(name='step_bc', nlgeom=False, displacements=['disp_fixed']), GeneralStep(name='step_loads', nlgeom=False, loads=loads) ]) mdl.steps_order = ['step_bc', 'step_loads'] # Summary mdl.summary() # Run (Abaqus) exe = '/home/al/abaqus/Commands/abaqus cae ' mdl.analyse_and_extract(software='abaqus', exe=exe, fields=['u', 's', 'rbfor']) blender.plot_data(mdl, step='step_loads',
mesh = mesh_from_guid(Mesh(), rs.ObjectsByLayer('elset_mesh')[0]) surface = rs.ObjectsByLayer('surface')[0] point_loads = {} for key in mesh.vertices(): xyz = mesh.vertex_coordinates(key) node = mdl.check_node_exists(xyz) pt = rs.ProjectPointToSurface([xyz], surface, [0, 0, 1])[0] pz = mesh.vertex_area(key) * distance_point_point(xyz, pt) * Gc point_loads[node] = {'z': -pz} mdl.add_load(PointLoads(name='load_points', components=point_loads)) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=displacements), GeneralStep(name='step_loads', loads=loads, increments=300, factor=1.35), BucklingStep(name='step_buckle', loads=loads, displacements=displacements, modes=1) ]) mdl.steps_order = ['step_bc', 'step_loads', 'step_buckle'] # Summary mdl.summary() # Run (Abaqus) mdl.analyse_and_extract(software='abaqus', fields=['u', 's'])
# Displacements mdl.add_displacement( RollerDisplacementY(name='disp_rollers', nodes='nset_supports')) # Loads mdl.add_loads([ GravityLoad(name='load_gravity', elements='elset_tets'), PointLoad(name='load_point', nodes='nset_load', z=-5) ]) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=['disp_rollers']), GeneralStep(name='step_loads', loads=['load_gravity', 'load_point'], factor=1.35) ]) mdl.steps_order = ['step_bc', 'step_loads'] # Summary mdl.summary() # Run (Abaqus) exe = '/home/al/abaqus/Commands/abaqus cae ' mdl.analyse_and_extract(software='abaqus', exe=exe, fields=['u', 's'])
# Sections mdl.add(RectangularSection(name='bsec', b=0.1, h=.2)) mdl.add(Properties(name='ep_1', material='mat_1', section='bsec', elsets=['beams'])) mdl.add(ShellSection(name='ssec', t=.1)) mdl.add(Properties(name='ep_2', material='mat_2', section='ssec', elsets=['shell'])) # Displacements mdl.add([FixedDisplacement(name='supports', nodes='supports')]) # Loads mdl.add(GravityLoad(name='load_gravity', elements=['beams', 'shell'])) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['supports']), GeneralStep(name='step_load', loads=['load_gravity']), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.analyse_and_extract(software='ansys', fields=['s']) # rhino.plot_data(mdl, step='step_load', field='um', radius=0.1, colorbar_size=0.3)
# Displacements mdl.add_displacements([ PinnedDisplacement(name='disp_pins', nodes='pins'), RollerDisplacementXZ(name='disp_roller', nodes='middle') ]) # Loads mdl.add_load(PointLoad(name='load_middle', nodes='middle', z=-500)) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=['disp_pins', 'disp_roller']), GeneralStep(name='step_load', loads=['load_middle']) ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary` mdl.summary() # Run (Sofistik) mdl.write_input_file(software='sofistik') # Run (Abaqus/OpenSees) mdl.analyse_and_extract(software='abaqus', fields=['u', 'spf'])
for beam in beams: name = '{0}_ends'.format(beam) if 'X' in beam: mdl.add_displacement( GeneralDisplacement(name=name, nodes=name, y=0, z=0, xx=0)) if 'Y' in beam: mdl.add_displacement( GeneralDisplacement(name=name, nodes=name, x=0, z=0, yy=0)) bc.append(name) mdl.add_displacement( GeneralDisplacement(name='disp_lift', nodes='lift_points', z=0.250)) # Steps mdl.add_steps([ GeneralStep(name='step_bc', displacements=bc), GeneralStep(name='step_lift', displacements=['disp_lift']) ]) mdl.steps_order = ['step_bc', 'step_lift'] # Summary mdl.summary() # Run (Abaqus) mdl.analyse_and_extract(software='abaqus', fields=['u', 'sf', 'sm']) rhino.plot_data(mdl, step='step_lift', field='um',
def compute_compas_fea(file_path, load_path, fea_engine='abaqus', recompute=True): """ Use abaqus (via compas_fea) to perform elastic FEA on the given frame under a given load case. If no load path is specified, elemental gravity will be assumbed to be applied. Parameters ---------- file_path : string full path to the frame shape's json file. load_path : type full path to the load case's json file. Returns ------- nD: dict Reactional nodal displacement key is the node id. value is (nodal_id, dx, dy, dz, theta_x, theta_y, theta_z). fR: dict Fixities reaction force, moment. key is the nodal id. value is [Fxyz, Mxyz] in the global axes. eR: dict Element-wise reaction force, moment (two ends). key is the element id. (Fxyz_1, Mxyz_1, Fxyz_2, Mxyz_2) """ root_dir = os.path.dirname(os.path.abspath(__file__)) temp_dir = os.path.join(root_dir, 'compas_fea-temp') if not os.path.exists(temp_dir): os.makedirs(temp_dir) file_json_name = file_path.split(os.sep)[-1] file_name = file_json_name.split('.')[0] print('compas_fea initing: file name {}'.format(file_name)) if not recompute: nD, fR, eR = parse_abaqus_result_json(file_name, temp_dir) return nD, fR, eR with open(file_path, 'r') as f: json_data = json.loads(f.read()) load_json_data = {} if load_path: with open(load_path, 'r') as f: load_json_data = json.loads(f.read()) # init an empty structure mdl = Structure(name=file_name, path=os.path.join(temp_dir, '')) # nodes mdl.add_nodes(nodes=parse_frame_nodes(json_data)) # elements elements = parse_elements(json_data) # align local axes with conmech sc = stiffness_checker(json_file_path=file_path, verbose=False) e_rot_mats = sc.get_element_local2global_rot_matrices() assert len(e_rot_mats) == len(elements) for e, mat in zip(elements, e_rot_mats): # compas_fea local axis convention is differrent to the one used in conmech: # in compas_fea # 'ex' axis represents the cross-section’s major axis # 'ey' is the cross-section’s minor axis # 'ez' is the axis along the element # TODO: this numpy array to list conversion # is essential to make compas_fea work... ez = list(mat[0][0:3]) # conmech longitude axis ex = list(mat[1][0:3]) # conmech cross sec major axis ey = list(mat[2][0:3]) # conmech cross sec minor axis mdl.add_element(nodes=e, type='BeamElement', axes={'ex': ex, 'ey': ey, 'ez': ez}) # print(mdl.elements[mdl.check_element_exists(nodes=e)]) assert_equal(mdl.element_count(), len(elements)) # Sets # just convenient aliases for referring to a group of elements mdl.add_set(name='elset_all', type='element', selection=list(range(mdl.element_count()))) mdl.add_set(name='nset_all', type='node', selection=list(range(mdl.node_count()))) fixities = parse_fixties(json_data) mdl.add_set(name='nset_fix', type='node', selection=[f[0] for f in fixities]) if load_json_data: pt_loads, include_sw = parse_load_case(load_json_data) # mdl.add_set(name='nset_pt_load', type='node', selection=[l[0] for l in pt_loads]) else: pt_loads = [] include_sw = True if pt_loads: mdl.add_set(name='nset_v_load_all', type='node', selection=[pl[0] for pl in pt_loads]) # Materials # Young’s modulus E [in units of Pa] # Poisson’s ratio v and density p [kg per cubic metre]. mat_json = json_data['material_properties'] mat_name = 'mat_' + mat_json['material_name'] E_scale = parse_pressure_scale_conversion(mat_json['youngs_modulus_unit']) p_scale = parse_density_scale_conversion(mat_json['density_unit']) mdl.add(ElasticIsotropic(name=mat_name, E=E_scale * mat_json['youngs_modulus'], v=mat_json['poisson_ratio'], p=p_scale * mat_json['density'])) # G_scale = parse_pressure_scale_conversion(mat_json['shear_modulus_unit']) # print('{}, {}'.format(mdl.materials['mat_' + mat_json['material_name']].G, G_scale * mat_json['shear_modulus'])) # assert_almost_equal(mdl.materials['mat_' + mat_json['material_name']].G['G'], G_scale * mat_json['shear_modulus']) # print('-----------material') # print(mdl.materials[mat_name]) # Sections # SI units should be used, this includes the use of metres m for cross-section dimensions, not millimetres mm. sec_name = 'sec_circ' mdl.add(CircularSection(name=sec_name, r=parse_circular_cross_sec_radius(json_data))) # print('-----------cross section') # print(mdl.sections[sec_name]) # Properties, associate material & cross sec w/ element sets mdl.add(Properties(name='ep_all', material=mat_name, section=sec_name, elset='elset_all')) # Displacements # pin supports for i, fix in enumerate(fixities): f_dof = [] for j in range(6): if fix[j+1] == 1: f_dof.append(0) else: f_dof.append(None) mdl.add(GeneralDisplacement(name='disp_fix_'+str(i), nodes=[fix[0]], x=f_dof[0], y=f_dof[1], z=f_dof[2], xx=f_dof[3], yy=f_dof[4], zz=f_dof[5])) # print('-----------fixities') # for i in range(len(fixities)): # print(mdl.displacements['disp_fix_'+str(i)]) # Loads if pt_loads: mdl.add([PointLoad(name='load_v_'+str(i), nodes=[pl[0]], x=pl[1], y=pl[2], z=pl[3], xx=pl[4], yy=pl[5], zz=pl[6]) for i, pl in enumerate(pt_loads)]) if include_sw: mdl.add(GravityLoad(name='load_gravity', elements='elset_all')) else: mdl.add(GravityLoad(name='load_gravity', elements='elset_all')) # print('-----------loads') # print(mdl.loads['load_gravity']) # for i in range(len(pt_loads)): # print(mdl.loads['load_v_'+str(i)]) # Steps loads_names = [] if pt_loads: loads_names.extend(['load_v_'+str(i) for i in range(len(pt_loads))]) if include_sw: loads_names.append('load_gravity') mdl.add([ GeneralStep(name='step_bc', displacements=['disp_fix_'+str(i) for i in range(len(fixities))]), GeneralStep(name='step_loads', loads=loads_names) ]) # a boundary condition step such as 'step_bc' above, should always be applied as the first step to prevent rigid body motion mdl.steps_order = ['step_bc', 'step_loads'] # Summary mdl.summary() # Run # node # 'u': nodal displacement: ux, uy, uz, um (magnitude) # 'ur': nodal rotation # 'rf': reaction force # 'cf': concentrated force (external load) # 'cm': concentrated moment (external load) # element # 's': beam stress (conmech cannot compute this at # version 0.1.1) # For beam, the following values are evaluated # at the "integration point" 'ip1' (middle point) # and pts along the axis: 'sp3, sp7, sp11, sp15' # sxx: axial # syy: hoop # sxy: torsion # smises: Von Mises # smaxp: max principal # sminp: min principal # 'sf': beam section force # sf1: axial # sf2: shear x # sf3: shear y if fea_engine == 'abaqus': mdl.analyse_and_extract(software='abaqus', fields=['u', 'ur', 'rf', 'rm', 'sf'], ndof=6, output=True) nD, fR, eR = parse_abaqus_result_json(file_name, temp_dir) elif fea_engine == 'opensees': mdl.analyse_and_extract(software='opensees', fields=['u'], exe=OPENSEES_PATH, ndof=6, output=True, save=True) raise NotImplementedError('opensees from compas_fea is not fully supported at this moment...') nD = {} fR = {} eR = {} # nD = mdl.get_nodal_results(step='step_load', field='ux', nodes='nset_all') print(mdl.results) else: raise NotImplementedError('FEA engine not supported!') return nD, fR, eR
material='mat_elastic', section='sec_solid', elsets='elset_blocks')) # Displacements mdl.add_displacement( PinnedDisplacement(name='disp_pinned', nodes='nset_supports')) # Loads mdl.add_load(PointLoad(name='load_point', nodes='nset_load', z=-1)) # Steps mdl.add_step(GeneralStep(name='step_bc', displacements=['disp_pinned'])) mdl.add_step(GeneralStep(name='step_load', loads=['load_point'])) mdl.steps_order = ['step_bc', 'step_load'] # Structure mdl.summary() # Run (Abaqus) mdl.analyse_and_extract(software='abaqus', fields=['u', 's']) rhino.plot_data(mdl, step='step_load', field='smises', cbar=[0, 2]) rhino.plot_voxels(mdl, step='step_load', field='smises',
# Displacements mdl.add([ FixedDisplacement(name='disp_left', nodes='nset_left'), PinnedDisplacement(name='disp_right', nodes='nset_right'), ]) # Loads mdl.add(GravityLoad(name='gravity', elements='all')) mdl.add(PointLoad(name='load_weights', nodes='nset_weights', z=-1000)) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_left', 'disp_right']), GeneralStep(name='step_load', loads=['load_weights', 'gravity']), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='ansys', fields=['u', 's', 'sp', 'e', 'ss', 'rf'], license='introductory') rhino.plot_data(mdl, step='step_load', field='um', scale=1e2)
# Loads mdl.add([ GravityLoad(name='load_gravity', elements='elset_floor'), PrestressLoad(name='load_prestress', elements='elset_ties', sxx=10 * 10**6), TributaryLoad(mdl, name='load_area', mesh=mesh_from_bmesh(get_object_by_name('load_mesh')), z=-2000), ]) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_edges', 'disp_pinned', 'disp_xdof']), GeneralStep(name='step_loads', loads=['load_gravity', 'load_area'], factor={ 'load_gravity': 1.35, 'load_area': 1.50 }), ]) mdl.steps_order = ['step_bc', 'step_loads'] # Summary mdl.summary() # Run
section='sec_truss', elset='elset_truss')) # Displacements mdl.add(PinnedDisplacement(name='disp_pinned', nodes='nset_pins')) # Loads mdl.add(PointLoad(name='load_top', nodes='nset_top', x=2000, y=1000, z=-100000)) # Steps mdl.add([ GeneralStep(name='step_bc', displacements='disp_pinned'), GeneralStep(name='step_load', loads='load_top'), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='abaqus', fields=['u', 'cf', 'rf', 'sf', 's']) # blender.plot_data(mdl, step='step_load', field='um') # blender.plot_data(mdl, step='step_load', field='smises') # blender.plot_reaction_forces(mdl, step='step_load', scale=0.05)
# Sections mdl.add(ShellSection(name='sec_concrete', t=0.250)) # Properties mdl.add(Properties(name='ep_concrete', material='mat_concrete', section='sec_concrete', elset='elset_concrete')) # Displacements mdl.add(PinnedDisplacement(name='disp_pinned', nodes='nset_pins')) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_pinned']), ModalStep(name='step_modal', modes=5), ]) mdl.steps_order = ['step_bc', 'step_modal'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='opensees', fields=['u']) rhino.plot_mode_shapes(mdl, step='step_modal', layer='mode-') print(mdl.results['step_modal']['frequencies'])
section='sec_shell', elset='mesh')) # Displacements mdl.add(PinnedDisplacement(name='disp_pin', nodes='supports')) # Loads mdl.add(GravityLoad(name='gravity', elements='all')) mdl.add(PointLoad(name='load_points', nodes='lpts1', x=0, y=0, z=-1000)) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_pin']), GeneralStep(name='step_load', loads=['gravity', 'load_points']), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='ansys', fields=['u', 's', 'sp', 'e', 'ss', 'rf'], license='introductory') rhino.plot_data(mdl, step='step_load', field='um', scale=1e4)
# Displacements mdl.add([ PinnedDisplacement(name='disp_left', nodes='nset_left'), RollerDisplacementX(name='disp_right', nodes='nset_right'), ]) # Loads mdl.add(PointLoad(name='load_point', nodes='nset_load', y=100, z=-300)) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_left', 'disp_right']), GeneralStep(name='step_load', loads=['load_point'], tolerance=1, iterations=500), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='ansys', fields=['u', 's'],
# Displacements mdl.add([ PinnedDisplacement(name='disp_left', nodes='nset_left'), RollerDisplacementX(name='disp_right', nodes='nset_right'), GeneralDisplacement(name='disp_middle', nodes='nset_middle', z=0.200), ]) # Loads mdl.add(GravityLoad(name='load_gravity', elements='elset_mesh')) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_left', 'disp_right']), GeneralStep(name='step_load', loads=['load_gravity'], displacements=['disp_middle']), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='abaqus', fields=['u', 's']) rhino.plot_data(mdl, step='step_load', field='um')
s.add_section(section) prop = ElementProperties(name='floor', material=matname, section='concrete_sec', elsets=['solids']) s.add_element_properties(prop) # add gravity load ------------------------------------------------------------- s.add_load(GravityLoad(name='load_gravity', elements=['shell'])) # add steps -------------------------------------------------------------------- step = GeneralStep(name='gravity_step', nlgeom=False, displacements=['supports'], loads=['load_gravity'], type='static') s.add_steps([step]) s.steps_order = ['gravity_step'] # analyse ---------------------------------------------------------------------- fields = 'all' s.write_input_file(software='ansys', fields=fields) s.analyse(software='ansys', cpus=4, delete=True) s.extract_data(software='ansys', fields=fields, steps='last') print s.results
material='mat_elastic', section='sec_beam', elset='elset_beams')) # Displacements mdl.add(FixedDisplacement(name='disp_fixed', nodes='nset_support')) # Loads mdl.add(PointLoad(name='load_point', nodes='nset_load', z=600)) # Steps mdl.add([ GeneralStep(name='step_bc', displacements=['disp_fixed']), GeneralStep(name='step_load', loads=['load_point']), ]) mdl.steps_order = ['step_bc', 'step_load'] # Summary mdl.summary() # Run mdl.analyse_and_extract(software='abaqus', fields=['u', 'sf', 'sm']) rhino.plot_data(mdl, step='step_load', field='uz', radius=1) print(mdl.get_nodal_results(step='step_load', field='uz', nodes='nset_load'))
# print(mdl.element_properties['property']) mdl.add(PinnedDisplacement(name='pinned', nodes='supports')) # print(mdl.displacements['pinned']) mdl.add([ PointLoad(name='pointloads', nodes='loads', y=-50000), GravityLoad(name='gravity', elements='trusses', z=0, y=1), ]) # print(mdl.loads['pointloads']) # print(mdl.loads['gravity']) mdl.add([ GeneralStep(name='bc', displacements='pinned'), GeneralStep(name='loads', loads=['pointloads', 'gravity'], factor=1.5), ]) mdl.steps_order = ['bc', 'loads'] # print(mdl.steps['bc']) # print(mdl.steps['loads']) mdl.summary() mdl.analyse_and_extract(software='abaqus', fields=['u', 's', 'cf', 'rf']) print(mdl.get_nodal_results(step='loads', field='rfm', nodes='supports')) # load / show .inp and .odb files # show raw data, discuss methods to extract data