6.1. Initialisation

modeller.__init__(number_storeys, storey_heights, floor_masses, storey_drifts, storey_forces, degradation, pinching4_params=None, minmax_multiplier=1.0)[source]

Initializes the modeller object and validates the input parameters.

Parameters:
  • number_storeys (int) – The number of storeys in the building model.

  • storey_heights (list) – List of storey heights in meters (e.g., [2.5, 3.0]).

  • floor_masses (list) – List of floor masses in tonnes (e.g., [1000, 1200]).

  • storey_drifts (np.array) – Array of inter-storey displacements (size = number of storeys, CapPoints).

  • storey_forces (np.array) – Array of storey forces (size = number of storeys, CapPoints).

  • degradation (bool) – Boolean to enable or disable hysteresis degradation.

  • pinching4_params (dict, optional) – Overrides for the Pinching4 material parameters (rDispP, rForceP, uForceP, rDispN, rForceN, uForceN, gK1-4, gKLim, gD1-4, gDLim, gF1-4, gFLim, gE, dmgType). Any key omitted falls back to the toolkit’s default value. Default None reproduces today’s hardcoded values exactly for both degradation=True and degradation=False.

  • minmax_multiplier (float, optional) – Factor applied to each storey’s ultimate displacement (storey_drifts[:, -1]) to set the MinMax collapse-detection bound. Must be a positive number. Default 1.0 (today’s hardcoded behaviour).

Raises:
  • TypeError – If any input has an incorrect type.

  • ValueError – If any input has an invalid value or inconsistent dimensions.

Example

import numpy as np
from openquake.vmtk.modeller import modeller

m = modeller(
    number_storeys=2,
    storey_heights=[3.0, 3.0],
    floor_masses=[120.0, 100.0],
    storey_drifts=np.array([[0., 0.005, 0.02, 0.06],
                            [0., 0.005, 0.02, 0.06]]),
    storey_forces=np.array([[0., 250., 320., 200.],
                            [0., 220., 280., 180.]]),
    degradation=True,
    # Optional: override individual Pinching4 parameters; any
    # key not provided falls back to the toolkit's default.
    pinching4_params={'gK2': 0.15, 'gFLim': 0.8},
)