2.6. MOD: Asset Modeling

This section outlines how users can configure the modeling of various asset classes within the application. Users can choose specific applications for modeling different asset types, such as Buildings or Transportation Networks, via the Asset Selection Ribbon on the left-hand side of the interface, as depicted in Fig. 2.6.1. This ribbon is initially hidden and becomes visible when multiple asset types are selected in the GI: General Information panel. Only assets marked in the GI: General Information panel will be displayed in the Asset Selection Ribbon. Switching between assets updates the Input Panel to show the relevant applications for modeling the selected asset type.

../../../../../_images/R2DMODInputPanel.png

Fig. 2.6.1 Buildings modeling input panel.

2.6.1. Buildings

For building modeling, the following applications are available:

  • MDOF-LU Building Model

  • OpenSeesPy Building Model

2.6.1.1. MDOF-LU Building Model

The MDOF-LU application generates a hysteretic, multi-degree of freedom (MDOF) model based on high-level building information provided by the user. This approach is adapted from [Lu2020]. It processes building inventory data (e.g., construction year, structural type, plan area, number of stories) provided by the user in the ASD tab to determine the design code level and generates an OpenSees model for each building. Required information includes:

../../../../../_images/R2DMDOFLUBuildingModel.png
  • Hazus Data File: Path to a file with rules mapping design code levels and structural types to structural parameters. An example file can be downloaded here, with column names explained below:

    Column names of HazusData.txt (click)
    Table 2.6.1.1.1 Column names of HazusData.txt (showing the first 10 rows for high-code)

    id

    str type

    min #story

    max #story

    height

    Sy

    eta

    C

    gamma

    eta_soft

    alpha

    beta

    a_k

    omega

    damage1

    damage2

    damage3

    damage4

    T1

    T2

    hos

    damp

    1

    W1

    1

    50

    18.4547

    0.4

    0.0870354

    1000

    0.8

    -0.001

    3

    1

    0.1

    0.2

    0.004

    0.012

    0.04

    0.1

    0.35

    0.33333

    4.27

    0.1

    2

    W2

    1

    50

    56.243

    0.4

    0.0794118

    1000

    0.6

    -0.001

    2.5

    1

    0.1

    0.2

    0.004

    0.012

    0.04

    0.1

    0.2

    0.33333

    3.66

    0.1

    3

    S1L

    1

    3

    38.7247

    0.25

    0.0865974

    1000

    1

    -0.001

    3

    1

    0

    0.2

    0.006

    0.012

    0.03

    0.08

    0.25

    0.33333

    3.66

    0.05

    4

    S1M

    4

    7

    51.7562

    0.156

    0.133734

    1000

    1

    -0.001

    3

    1

    0

    0.2

    0.004

    0.008

    0.02

    0.0533

    0.216

    0.33333

    3.66

    0.05

    5

    S1H

    8

    50

    62.9659

    0.098

    0.181032

    1000

    1

    -0.001

    3

    1

    0

    0.2

    0.003

    0.006

    0.015

    0.04

    0.17

    0.33333

    3.66

    0.05

    6

    S2L

    1

    3

    56.243

    0.4

    0.0670927

    1000

    0.5

    -0.001

    2

    1

    0

    0.2

    0.005

    0.01

    0.03

    0.08

    0.2

    0.33333

    3.66

    0.05

    7

    S2M

    4

    7

    75.8694

    0.333

    0.103936

    1000

    0.5

    -0.001

    2

    1

    0

    0.2

    0.0033

    0.0067

    0.02

    0.0533

    0.172

    0.33333

    3.66

    0.05

    8

    S2H

    8

    50

    85.0452

    0.254

    0.142936

    1000

    0.5

    -0.001

    2

    1

    0

    0.2

    0.0025

    0.005

    0.015

    0.04

    0.136154

    0.33333

    3.66

    0.05

    9

    S3

    1

    50

    14.0607

    0.4

    0.0670927

    1000

    1

    -0.001

    2

    1

    0

    0.2

    0.004

    0.008

    0.024

    0.07

    0.4

    0.33333

    4.57

    0.05

    10

    S4L

    1

    3

    74.5959

    0.32

    0.0727412

    1000

    0.5

    -0.001

    2.25

    1

    0

    0.2

    0.004

    0.008

    0.024

    0.07

    0.175

    0.33333

    3.66

    0.05

    See Fig. 2.6.1.1.1 for the parameter definitions. Note that not all the parameters are being used.

  • Std deviation Stiffness: Standard deviation for lateral stiffness. The uncertainty will be applied by sampling a multiplication factor with the specified standard deviation and mean of 1. The factor is sampled only once per structure and will be applied to all stories.

  • Std deviation Damping: Standard deviation for damping ratio. The uncertainty will be applied by sampling a multiplication factor with the specified standard deviation and mean of 1.

  • Default Story Height (optional): Sets mass node coordinates.

The analysis outputs include a SAM.json file for structural parameters and an example.tcl file (with uniaxialMaterial Hysteretic material model) for the downstream OpenSees model. Both files are located in the working directory.

Example of SAM.json (click)
{
    "Properties":
    {
        "dampingRatio": 0.09956333887469665,
        "uniaxialMaterials":
        [
            {
                "name": 1,
                "type": "shear",
                "K0": 61532397.052015901,
                "Sy": 2110124.6849974156,
                "eta": 0.087035399999999999,
                "C": 1000.0,
                "gamma": 0.80000000000000004,
                "alpha": 3.0,
                "beta": 1.0,
                "omega": 0.20000000000000001,
                "eta_soft": -0.001,
                "a_k": 0.10000000000000001
            },
            {
                "name": 2,
                "type": "shear",
                "K0": 61532397.052015901,
                "Sy": 1406749.7899982773,
                "eta": 0.087035399999999999,
                "C": 1000.0,
                "gamma": 0.80000000000000004,
                "alpha": 3.0,
                "beta": 1.0,
                "omega": 0.20000000000000001,
                "eta_soft": -0.001,
                "a_k": 0.10000000000000001
            }
        ]
    },
    "Geometry":
    {
        "nodes":
        [
            {
                "name": 1,
                "crd":
                [
                    0.0,
                    0.0,
                    0.0
                ],
                "ndf": 6,
                "constraints":
                [
                    1,
                    1,
                    1,
                    1,
                    1,
                    1
                ]
            },
            {
                "name": 2,
                "mass": 284190.39936000004,
                "crd":
                [
                    0.0,
                    0.0,
                    3.6000000000000001
                ],
                "ndf": 6,
                "constraints":
                [
                    0,
                    0,
                    1,
                    1,
                    1,
                    1
                ]
            },
            {
                "name": 3,
                "mass": 284190.39936000004,
                "crd":
                [
                    0.0,
                    0.0,
                    7.2000000000000002
                ],
                "ndf": 6,
                "constraints":
                [
                    0,
                    0,
                    1,
                    1,
                    1,
                    1
                ]
            }
        ],
        "elements":
        [
            {
                "name": 1,
                "type": "shear_beam2d",
                "uniaxial_material": 1,
                "nodes":
                [
                    1,
                    2
                ]
            },
            {
                "name": 2,
                "type": "shear_beam2d",
                "uniaxial_material": 2,
                "nodes":
                [
                    2,
                    3
                ]
            }
        ]
    },
    "NodeMapping":
    [
        {
            "cline": "response",
            "floor": "0",
            "node": 1
        },
        {
            "cline": "response",
            "floor": "1",
            "node": 2
        },
        {
            "cline": "response",
            "floor": "2",
            "node": 3
        }
    ],
    "units":
    {
        "force": "kN",
        "length": "m",
        "temperature": "C",
        "time": "sec"
    }
}
Example of opensees.tcl (click)
model BasicBuilder -ndm 3 -ndf 6
node 1 0 0 0 
fix 1 1 1 1 1 1 1 
node 2 0 0 3.6 -mass 284190 284190  0.0  0.0  0.0 2.8419e-05 
fix 2 0 0 1 1 1 1 
node 3 0 0 7.2 -mass 284190 284190  0.0  0.0  0.0 2.8419e-05 
fix 3 0 0 1 1 1 1 
uniaxialMaterial Hysteretic 1 2.11012e+06 0.0342929 6.33037e+06 0.822315 6.33037e+06 1 -2.11012e+06 -0.0342929 -6.33037e+06 -0.822315 -6.33037e+06 -1 0.8 0.8 0 0 0.1
uniaxialMaterial Hysteretic 2 1.40675e+06 0.0228619 4.22025e+06 0.54821 4.22025e+06 1 -1.40675e+06 -0.0228619 -4.22025e+06 -0.54821 -4.22025e+06 -1 0.8 0.8 0 0 0.1
element zeroLength 1 1 2 -mat 1 1 -dir 1 2
element zeroLength 2 2 3 -mat 2 2 -dir 1 2
loadConst -time 0.0
#timeSeries Path 101 -dt 0.005 -factor [expr 1 * 1 * 1 ] -values { -1.46509e-05 8.24738e-06 -2.26001e-05 1.46955e-05 -2.63045e-05 ..... -3.42224e-05  }
#timeSeries Path 102 -dt 0.005 -factor [expr 1 * 1 * 1 ] -values { 7.15223e-06 -2.4271e-05 1.94678e-05 -3.62861e-05 2.96503e-05 ...... -0.000675427  }
pattern UniformExcitation 101 1 -fact 1 -accel 101
set numStep 60000
set dt 0.005
pattern UniformExcitation 102 2 -fact 1 -accel 102
set numStep 60000
set dt 0.005
set numberOfStories 2
recorder EnvelopeNode -file 1-AIM.json0.max_abs_acceleration.response.0.out -timeSeries 101 102  -node 1 -dof 1 2  accel
recorder EnvelopeNode -file 1-AIM.json0.max_abs_acceleration.response.1.out -timeSeries 101 102  -node 2 -dof 1 2  accel
recorder EnvelopeNode -file 1-AIM.json0.max_rel_disp.response.1.out -node 2 -dof 1 2  disp
recorder EnvelopeDrift -file 1-AIM.json0.max_drift.response.0.1.1.out -iNode 1 -jNode 2 -dof 1 -perpDirn 3
recorder EnvelopeDrift -file 1-AIM.json0.max_drift.response.0.1.2.out -iNode 1 -jNode 2 -dof 2 -perpDirn 3
recorder EnvelopeNode -file 1-AIM.json0.max_abs_acceleration.response.2.out -timeSeries 101 102  -node 3 -dof 1 2  accel
recorder EnvelopeNode -file 1-AIM.json0.max_rel_disp.response.2.out -node 3 -dof 1 2  disp
recorder EnvelopeDrift -file 1-AIM.json0.max_drift.response.1.2.1.out -iNode 2 -jNode 3 -dof 1 -perpDirn 3
recorder EnvelopeDrift -file 1-AIM.json0.max_drift.response.1.2.2.out -iNode 2 -jNode 3 -dof 2 -perpDirn 3
recorder EnvelopeDrift -file 1-AIM.json0.max_roof_drift.response.0.2.1.out -iNode 1 -jNode 3 -dof 1 -perpDirn 3
recorder EnvelopeDrift -file 1-AIM.json0.max_roof_drift.response.0.2.2.out -iNode 1 -jNode 3 -dof 2 -perpDirn 3

# Perform the analysis
numberer RCM
constraints Transformation
system Umfpack
integrator Newmark 0.5 0.25
test NormUnbalance 1.0e-2 10 
algorithm Newton
analysis Transient -numSubLevels 2 -numSubSteps 10
set xDamp 0.0995633;
set lambdaN [eigen 3];
set lambdaI [lindex $lambdaN [expr 1 -1]];
set lambdaJ [lindex $lambdaN [expr 3 -1]];
set lambda1 [lindex $lambdaN 0]
set omega1 [expr pow($lambda1,0.5)];
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)];
set betaKinit [expr 0 *2.0*$xDamp/($omegaI+$omegaJ)];
set betaKcomm [expr 0 *2.0*$xDamp/($omegaI+$omegaJ)];
set betaKcurr [expr 1 *2.0*$xDamp/($omegaI+$omegaJ)];
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm;
set lambdaN [eigen 1];
set lambda1 [lindex $lambdaN 0]
set T1 [expr 2*3.14159/$lambda1]
set dTana [expr $T1/20.]
if {$dt < $dTana} {set dTana $dt}
analyze [expr int($numStep*$dt/$dTana)] $dTana 
remove recorders 

where the keys of SAM.json are defined as follows:

../../../../../_images/R2DMDOFLU_Hysteresis.png

Fig. 2.6.1.1.1 Hysteresis model in MDOF-LU Building Model.

Note

When the MDOF-LU building modeling application is employed, the OpenSees simulation application should be used for analysis in the ANA: Asset Analysis input panel.

Lu2020

Lu, X., McKenna, F., Cheng, Q., Xu, Z., Zeng, X., & Mahin, S. A. (2020). An open-source framework for regional earthquake loss estimation using city-scale nonlinear time history analysis. Earthquake Spectra, 36(2), 806-831.

2.6.1.2. High-Fidelity Models and MDOF-LU

This option allows to import either high- or low-fidelity OpenSees models for each assets:

  • High-fidelity model: For a subset of building in a region, the users can import the opensees models. The model pathes and the corresponding asset ids should be specified through the database file, which is formated as a JSON array. Each element in the array represents a building model. Below is an example of the database file:

    An example of highfidelity database file (click)

    Given the database file below, R2D will evaluate the user-provided high-fidelity OpenSees models to obtain the responses for assets 1, 2, 3, 10, and 12, while low-fidelity models will be used for all other assets.

    [
        
        {
            "id": 1,
            "mainScript": "./model1/Ex5.Frame2D.build.ElasticSection.tcl",
            "type": "OpenSeesInput",
            "NodeMapping":
            [
                {
                    "node": 11,
                    "cline": "response",
                    "floor": "0"
                },
                {
                    "node": 21,
                    "cline": "response",
                    "floor": "1"
                },
                {
                    "node": 31,
                    "cline": "response",
                    "floor": "2"
                },
                {
                    "node": 41,
                    "cline": "response",
                    "floor": "3"
                }
            ],
            "numStory": 3,
            "ndm": 2,
            "ndf": 3,
            "dampingRatio": 0.02
        },
        {
            "id": [2,3],
            "mainScript": "./model2/MRF_2Story_Concentrated.tcl",
            "type": "OpenSeesInput",
            "NodeMapping":
            [
                {
                    "node": 11,
                    "cline": "response",
                    "floor": "0"
                },
                {
                    "node": 12,
                    "cline": "response",
                    "floor": "1"
                },
                {
                    "node": 13,
                    "cline": "response",
                    "floor": "2"
                }
            ],
            "numStory": 2,
            "ndm": 2,
            "ndf": 3,
            "dampingRatio": 0.02
        },
       {
            "id": 10,
            "mainScript": "./model3/Alt_ROM_Simulation_BoucWen_Drift.tcl",
            "type": "OpenSeesInput",
            "NodeMapping":
            [
                {
                    "node": 10,
                    "cline": "response",
                    "floor": "0"
                },
                {
                    "node": 1,
                    "cline": "response",
                    "floor": "1"
                },
                {
                    "node": 2,
                    "cline": "response",
                    "floor": "2"
                },
                {
                    "node": 3,
                    "cline": "response",
                    "floor": "3"
                },
                {
                    "node": 4,
                    "cline": "response",
                    "floor": "4"
                },
                {
                    "node": 5,
                    "cline": "response",
                    "floor": "5"
                },
                {
                    "node": 6,
                    "cline": "response",
                    "floor": "6"
                },
                {
                    "node": 7,
                    "cline": "response",
                    "floor": "7"
                },
                {
                    "node": 8,
                    "cline": "response",
                    "floor": "8"
                },
                {
                    "node": 9,
                    "cline": "response",
                    "floor": "9"
                }
            ],
            "numStory": 9,
            "ndm": 2,
            "ndf": 3,
            "dampingRatio": 0.02
        },
        {
            "id": 12,
            "mainScript": "./model4/ShearBuilding3.tcl",
            "type": "OpenSeesInput",
            "NodeMapping":
            [
                {
                    "node": 1,
                    "cline": "response",
                    "floor": "0"
                },
                {
                    "node": 2,
                    "cline": "response",
                    "floor": "1"
                },
                {
                    "node": 3,
                    "cline": "response",
                    "floor": "2"
                },
                {
                    "node": 4,
                    "cline": "response",
                    "floor": "3"
                }
            ],
            "numStory": 3,
            "ndm": 2,
            "ndf": 3,
            "dampingRatio": 0.02
        }
    ]
    

    The file system corresponding to the json looks like below. Note that only the main files are explicitly specified to represent the entire directory.

    The file structure corresponding to the example database file (click)
    ../../../../../_images/R2DMultiFidelityBuildings.png

    Fig. 2.6.1.2.1 The file structure corresponding to the database file.

    The required keys are listed below. Please ensure that your database (.json) file includes all necessary information.

    Table 2.6.1.2.1 High-fidelity model database (.json)

    Key

    Type

    Description

    id

    array or integer

    The asset ids that will be mapped to this model

    mainScript

    string

    Path to the main analysis script. Locate any additional scripts in the same directory.

    type

    string

    Always use “OpenSeesInput”. This is for sanity check.

    NodeMapping

    array of json object

    Specify the nodes that will represent each story. See the below table.

    numStory

    integer

    Number of stories

    ndm

    integer

    Dimenion size

    ndf

    integer

    Degree of freedom per node

    dampingRatio

    float

    Damping ratio for dynamic analysis

    The key NodeMapping should contain an array with a size \(N_f+1\), where \(N_f\) is the number of floors. Each element of array must include the following three keys.

Table 2.6.1.2.2 High-fidelity model database (.json)

Key

Type

node

integer

cline

string (always use “response”)

floor

string

  • Low-fidelity model: By default, we use MDOF-Lu model to evaluate the dynamic response of assets that are not specified in the high-fidelity database file. MDOF-Lu model takes the basic asset information (e.g. number of stories, structural types, etc.) provided in the ASD tab and automatically generates a simplified multi-degree of freedom nonlinear OpenSees model. See MDOF-LU Building Model

Note

Make sure the asset inventory specified in the ASD tab has consistent story numbers, structural types, and other attributes with the user-provided OpenSees (high-fidelity) model, in order to ensure correct evaluation of damage and loss.

2.6.1.3. OpenSeesPy Building Model

The OpenSeesPy application allows for the creation of structural models using a user-defined Python script. The input panel (Fig. 2.6.1.3.1) provides fields for:

  1. OpenSeesPy Script: Script containing the code to create the building model.

  2. Node Response Mapping: By default, the workflow assumes X=1, Y=2, Z=3 mapping between the x,y,z directions and degrees of freedom, with x and y being the horizontal directions. This input allows you to define an alternative mapping by providing three numbers separated by commas in a string, such as ‘1, 3, 2’ if you wish to have y as the vertical direction.

  3. Analysis Spatial Dimensions: Number of dimensions in the OpenSeesPy analysis.

  4. Degrees-of-Freedom at Node: Number of degrees-of-freedom at each node.

../../../../../_images/R2DOpenSeesPyBuildingModel.png

Fig. 2.6.1.3.1 OpenSeesPy Building model input panel.

2.6.2. Transportation Infrastructure

Currently, only Intensity Measure as Engineering Demand Parameter (IMasEDP) analysis is supported for transportation infrastructure. The asset models should be None for IMasEDP analyses.