Skip to content

custom_building

custom_building

Attributes

structure_info module-attribute

structure_info = {'num_partitions': 1, 'x_min': 0.0, 'y_min': 0.0, 'z_min': 0.0, 'x_max': 45.72, 'y_max': 45.72, 'z_max': 40.8432, 'columns_base': [{'tag': 101, 'x': 0.0, 'y': 0.0, 'z': 0.0}, {'tag': 102, 'x': 9.144, 'y': 0.0, 'z': 0.0}, {'tag': 103, 'x': 18.288, 'y': 0.0, 'z': 0.0}, {'tag': 104, 'x': 27.432, 'y': 0.0, 'z': 0.0}, {'tag': 105, 'x': 36.576, 'y': 0.0, 'z': 0.0}, {'tag': 106, 'x': 45.72, 'y': 0.0, 'z': 0.0}, {'tag': 107, 'x': 0.0, 'y': 9.144, 'z': 0.0}, {'tag': 108, 'x': 9.144, 'y': 9.144, 'z': 0.0}, {'tag': 109, 'x': 18.288, 'y': 9.144, 'z': 0.0}, {'tag': 110, 'x': 27.432, 'y': 9.144, 'z': 0.0}, {'tag': 111, 'x': 36.576, 'y': 9.144, 'z': 0.0}, {'tag': 112, 'x': 45.72, 'y': 9.144, 'z': 0.0}, {'tag': 113, 'x': 0.0, 'y': 18.288, 'z': 0.0}, {'tag': 114, 'x': 9.144, 'y': 18.288, 'z': 0.0}, {'tag': 115, 'x': 18.288, 'y': 18.288, 'z': 0.0}, {'tag': 116, 'x': 27.432, 'y': 18.288, 'z': 0.0}, {'tag': 117, 'x': 36.576, 'y': 18.288, 'z': 0.0}, {'tag': 118, 'x': 45.72, 'y': 18.288, 'z': 0.0}, {'tag': 119, 'x': 0.0, 'y': 27.432, 'z': 0.0}, {'tag': 120, 'x': 9.144, 'y': 27.432, 'z': 0.0}, {'tag': 121, 'x': 18.288, 'y': 27.432, 'z': 0.0}, {'tag': 122, 'x': 27.432, 'y': 27.432, 'z': 0.0}, {'tag': 123, 'x': 36.576, 'y': 27.432, 'z': 0.0}, {'tag': 124, 'x': 45.72, 'y': 27.432, 'z': 0.0}, {'tag': 125, 'x': 0.0, 'y': 36.576, 'z': 0.0}, {'tag': 126, 'x': 9.144, 'y': 36.576, 'z': 0.0}, {'tag': 127, 'x': 18.288, 'y': 36.576, 'z': 0.0}, {'tag': 128, 'x': 27.432, 'y': 36.576, 'z': 0.0}, {'tag': 129, 'x': 36.576, 'y': 36.576, 'z': 0.0}, {'tag': 130, 'x': 45.72, 'y': 36.576, 'z': 0.0}, {'tag': 131, 'x': 0.0, 'y': 45.72, 'z': 0.0}, {'tag': 132, 'x': 9.144, 'y': 45.72, 'z': 0.0}, {'tag': 133, 'x': 18.288, 'y': 45.72, 'z': 0.0}, {'tag': 134, 'x': 27.432, 'y': 45.72, 'z': 0.0}, {'tag': 135, 'x': 36.576, 'y': 45.72, 'z': 0.0}, {'tag': 136, 'x': 45.72, 'y': 45.72, 'z': 0.0}], 'column_embedment_depth': 0.3, 'model_file': 'C:\\Users\\aminp\\OneDrive\\Desktop\\DRMGUI\\src\\femora\\components\\simcenter\\eeuq\\steel_frame.tcl', 'column_section_props': {'E': 200000000000.0, 'A': 1.0, 'Iy': 8.333e-06, 'Iz': 8.333e-06, 'G': 79300000000.0, 'J': 1.666e-05}}

soil_info module-attribute

soil_info = {'x_min': -25.0, 'x_max': 65.0, 'y_min': -25.0, 'y_max': 65.0, 'nx': 45, 'ny': 45, 'gravity_x': 0.0, 'gravity_y': 0.0, 'gravity_z': -9.81, 'num_partitions': 8, 'boundary_conditions': 'periodic', 'DRM_options': {'absorbing_layer_type': 'PML', 'num_partitions': 8, 'number_of_layers': 5, 'Rayleigh_damping': 0.95, 'match_damping': False}, 'soil_profile': [{'z_bot': -10, 'z_top': -7, 'nz': 2, 'material': 'Elastic', 'mat_props': [30000000.0, 0.3, 18], 'damping': 'Frequency-Rayleigh', 'damping_props': [0.05, 3, 15]}, {'z_bot': -7, 'z_top': -4, 'nz': 4, 'material': 'Elastic', 'mat_props': [50000000.0, 0.3, 19], 'damping': 'Frequency-Rayleigh', 'damping_props': [0.05, 3, 15]}, {'z_bot': -4, 'z_top': -1, 'nz': 6, 'material': 'Elastic', 'mat_props': [70000000.0, 0.3, 20], 'damping': 'Frequency-Rayleigh', 'damping_props': [0.05, 3, 15]}, {'z_bot': -1, 'z_top': 0, 'nz': 3, 'material': 'Elastic', 'mat_props': [90000000.0, 0.3, 21], 'damping': 'Frequency-Rayleigh', 'damping_props': [0.05, 3, 15]}]}

foundation_info module-attribute

foundation_info = {'gravity_x': 0.0, 'gravity_y': 0.0, 'gravity_z': -9.81, 'embedded': True, 'dx': 2.0, 'dy': 2.0, 'dz': 2.0, 'gravity_x': 0.0, 'gravity_y': 0.0, 'gravity_z': -9.81, 'num_partitions': 4, 'foundation_profile': [{'x_min': -5, 'x_max': 50, 'y_min': -5, 'y_max': 50, 'z_top': 0, 'z_bot': -1.2, 'material': 'Elastic', 'mat_props': [30000000.0, 0.3, 18]}]}

pile_info module-attribute

pile_info = {'pile_profile': [{'x_top': -2.5, 'y_top': -2.5, 'z_top': 0, 'x_bot': -2.5, 'y_bot': -2.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': 22.5, 'y_top': -2.5, 'z_top': 0, 'x_bot': 22.5, 'y_bot': -2.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': 47.5, 'y_top': -2.5, 'z_top': 0, 'x_bot': 47.5, 'y_bot': -2.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': -2.5, 'y_top': 22.5, 'z_top': 0, 'x_bot': -2.5, 'y_bot': 22.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': 22.5, 'y_top': 22.5, 'z_top': 0, 'x_bot': 22.5, 'y_bot': 22.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': 47.5, 'y_top': 22.5, 'z_top': 0, 'x_bot': 47.5, 'y_bot': 22.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': -2.5, 'y_top': 47.5, 'z_top': 0, 'x_bot': -2.5, 'y_bot': 47.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': 22.5, 'y_top': 47.5, 'z_top': 0, 'x_bot': 22.5, 'y_bot': 47.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}, {'x_top': 47.5, 'y_top': 47.5, 'z_top': 0, 'x_bot': 47.5, 'y_bot': 47.5, 'z_bot': -7, 'nz': 50, 'r': 0.2, 'section': 'No-Section', 'material': 'Elastic', 'mat_props': [30000000.0, 2, 3, 3, 3000000.0, 6], 'transformation': ['Linear', 0.0, 1.0, 0.0]}], 'pile_interface': {'num_points_on_perimeter': 8, 'num_points_along_length': 3, 'penalty_parameter': 1000000000000.0}}

Functions:

custom_building

custom_building(structure_info, soil_info, foundation_info, pile_info)

Construct a 3D parallel finite element soil-structure interaction model of a building.

This function sets up a multi-layered soil profile, foundation slab, and pile group supporting a custom building structural model. It is designed for seamless integration with the NHERI SimCenter EE-UQ application.

Note
  1. All soil materials in the current implementation are assumed to be linear elastic.
  2. The soil profile is assumed to be horizontally layered.
  3. Custom building bays must align with the global X and Y axes, with height oriented along the Z axis.

Parameters:

Name Type Description Default
structure_info dict

Structuring layout parameters including bays, columns, beams, structural properties, and loads.

required
soil_info dict

Soil layering, material properties (modulus, poisson, density), and frequency-dependent Rayleigh damping factors.

required
foundation_info dict

Dimensions and material properties of the foundation block and basement walls.

required
pile_info dict

Pile layout, pile properties (cross section area, moment of inertia, etc.), and contact interface settings.

required
Example
from femora.components.simcenter.eeuq.custom_building import custom_building

# Define building, soil, foundation, and pile parameters as dicts
structure_info = {
    "num_stories": 3,
    "bays_x": [6.0, 6.0],
    "bays_y": [6.0],
    "story_heights": [4.0, 3.5, 3.5],
    "column_element": "ElasticBeamColumn",
    "beam_element": "ElasticBeamColumn",
}
soil_info = {
    "soil_layers": [
        {"thickness": 5.0, "E": 30e6, "nu": 0.3, "rho": 2000.0},
        {"thickness": 15.0, "E": 60e6, "nu": 0.3, "rho": 2000.0},
    ]
}
foundation_info = {
    "foundation_width": 12.0,
    "foundation_length": 6.0,
    "foundation_height": 2.0,
}
pile_info = {
    "pile_layout": [[-4.0, -2.0], [4.0, 2.0]],
    "pile_interface": {
        "num_points_on_perimeter": 8,
        "num_points_along_length": 4,
        "penalty_parameter": 1e12,
    }
}

# Generate the complete SSI model
custom_building(structure_info, soil_info, foundation_info, pile_info)