simdesign.rcmrf

A modular computational framework for the generation and nonlinear modelling of reinforced concrete (RC) moment-resisting frames (MRFs). It orchestrates the BCIM → BDIM → BNSM pipeline, generating portfolio-level building class and design information data (exported CSV files), alongside OpenSees-compatible nonlinear numerical models (in Python or Tcl). generate() serves as the entry point for running the pipeline.

Pipeline:

BCIM (Realisation Layer)
        ↓
BDIM (Design Layer)
        ↓
BNSM (Modelling Layer)
        ↓
OpenSees (Analysis Layer)
simdesign.rcmrf.generate(inputs, outdir=None)[source]

Generates BCIM, BDIM and BNSM data by following complete workflow in Built Data Environment (BED) SimDesign framework for RC-MRF systems.

Parameters:
  • inputs (Dict[Literal['bcim', 'bnsm'], Dict]) – Contains input parameters required for data generation. These will replace the defaults obtained for the specified design_class.

  • outdir (str | Path, optional) – Path to the user-defined output directory. If None, set to Path.cwd() / ‘Outputs’. by default None.

Returns:

  • bcim (BCIM) – Building Class Information Model.

  • bdim (List[BuildingDesign | None]) – List of Building Design Information Models (None if design failed).

  • bnsm (List[BuildingModel | None]) – List of Building Nonlinear Structural Models (None if design failed).

Raises:

KeyErrorinputs[‘bcim’][‘design_class’] is not specified.

Return type:

Tuple[BCIM, List[BuildingBase | None], List[BuildingBase | None]]

Examples

Example dictionary to pass as inputs:

inputs = {
    "bcim": {
        "design_class": "eu_cdh",
        "beta": 0.1,
        "sample_size": 150,
        "num_storeys": 5,
        # Distribution parameters
        "typical_storey_height": {
            "cv": 0.07,
            "mu": 2.90,
            "lower_bound": 2.3,
            "upper_bound": 3.8,
        },
        "staircase_bay_width": {
            "lower_bound": 2.8,
            "upper_bound": 3.2,
        },
        "standard_bay_width": {
            "corr_coeff_xy": -0.92,
            "lower_bound_x": 3.5,
            "upper_bound_x": 7.5,
            "theta_x": 4.5,
            "sigma_x": 0.35,
            "lower_bound_y": 3.5,
            "upper_bound_y": 7.5,
            "theta_y": 4.5,
            "sigma_y": 0.35,
        },
        "steel": {
            "tag": ["S400", "S500"],
            "probability": [0.10, 0.90],
        },
        "concrete": {
            "tag": ["C20/25", "C25/30", "C30/37", "C35/45"],
            "probability": [0.30, 0.45, 0.20, 0.05],
        },
        "ground_storey_height": {
            "maximum": 4.20,
            "factor": [1.0, 1.1, 1.2, 1.3, 1.4],
            "probability": [0.55, 0.10, 0.20, 0.10, 0.05],
        },
        "construction_quality": {"probability": [0.6, 0.3, 0.1]},
        "slab_typology": {
            "ss1_prob_given_ss1_or_hs": 0.50,
            "ss2_prob_given_ss2_or_hs": 0.65,
            "upper_lim_for_min_ss_span_length": 6.0,
            "upper_lim_for_max_ss2_span_ratio": 2.0,
            "staircase_slab_depth": 0.15,
            "floor_slab_thickness": 0.15,
        },
        "wb_prob_given_hs": 0.50,
        "square_column_prob": 0.50,
        "layout": "all",
        "seed": 1993,
    },
    "bnsm": {
        "model": "CP03",
        "load_factors": {"G": 1.0, "Q": 0.3},
        "mass_factors": {"G": 1.0, "Q": 0.3},
        "scheme": "EQL",
        "max_drift": 0.05,
        "dincr": 0.001,
        "opensees": "py",
    },
}