Esempio n. 1
0
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')
Esempio n. 2
0
                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)
Esempio n. 3
0
               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')
Esempio n. 4
0
# 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)
Esempio n. 5
0
    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)
Esempio n. 6
0
# 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',
Esempio n. 7
0
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)
Esempio n. 8
0
    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,
Esempio n. 9
0
# 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()
Esempio n. 10
0
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',
Esempio n. 11
0
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'])
Esempio n. 12
0
# 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'])
Esempio n. 13
0
# 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)
Esempio n. 14
0
# 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'])
Esempio n. 15
0
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',
Esempio n. 16
0
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
Esempio n. 17
0
               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)
Esempio n. 19
0
# 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
Esempio n. 20
0
               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)
Esempio n. 21
0
# 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'])
Esempio n. 22
0
               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)
Esempio n. 23
0
# 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'],
Esempio n. 24
0
# 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
Esempio n. 26
0
               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