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
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
- All soil materials in the current implementation are assumed to be linear elastic.
- The soil profile is assumed to be horizontally layered.
- 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)