Asset Model

Asset Model#

ERAD defines defines two classes, AssetState and Asset, which model the state and characteristics of an asset in relation to various hazard models. AssetState calculates survival probabilities based on hazard vectors like earthquake, fire, wind, and flood, while Asset manages the asset’s attributes and updates its survival probability using fragility curves.

Note

  • AssetState calculates hazard vectors for earthquake, fire, wind, and flood based on the asset’s location and hazard model.

    • It updates the survival probabilities using predefined formulas and hazard parameters.

  • Asset retrieves or creates an AssetState for a given timestamp and updates its survival probability.

    • It calculates probabilities using fragility curves and updates the asset state list.

  • A float representing the overall survival probability of the asset.

An example of the asset model can be built using the example method

from erad.models.asset import Asset

asset = Asset.example()
asset.pprint()
Downloading N37W123.hgt.zip
Asset(
    name='Asset 1',
    distribution_asset=UUID('123e4567-e89b-12d3-a456-426614174000'),
    connections=[],
    devices=[],
    asset_type=<AssetTypes.distribution_poles: 6>,
    height=<Quantity(100, 'meter')>,
    latitude=37.7749,
    longitude=-122.4194,
    asset_state=[
        AssetState(
            name='',
            timestamp=datetime.datetime(2025, 10, 28, 17, 35, 7, 711163),
            wind_speed=SpeedProbability(
                name='',
                survival_probability=1.0,
                speed=<Quantity(50, 'meter / second')>
            ),
            flood_velocity=SpeedProbability(
                name='',
                survival_probability=1.0,
                speed=<Quantity(50, 'meter / second')>
            ),
            flood_depth=DistanceProbability(name='', survival_probability=1.0, distance=<Quantity(0, 'meter')>),
            fire_boundary_dist=DistanceProbability(
                name='',
                survival_probability=1.0,
                distance=<Quantity(0, 'meter')>
            ),
            peak_ground_velocity=SpeedProbability(
                name='',
                survival_probability=1.0,
                speed=<Quantity(50, 'meter / second')>
            ),
            peak_ground_acceleration=AccelerationProbability(
                name='',
                survival_probability=1.0,
                acceleration=<Quantity(0, 'meter / second ** 2')>
            ),
            survival_probability=1.0
        )
    ],
    elevation=<Quantity(28.0, 'meter')>
)

Asset survival probability is updated using the update_survival_probability methods. This method as input, the fragility curves and hazard model.

from erad.systems import AssetSystem

asset_system = AssetSystem(auto_add_composed_components=True)
asset_system.add_component(asset)
asset_system.info()
System                          
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
┃ Property              Value ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩
│ System name          │       │
│ Data format version  │       │
│ Components attached  │     8 │
│ Time Series attached │     0 │
│ Description          │       │
└──────────────────────┴───────┘
Component Information              
┏━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
┃ Type                     Count ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩
│ AccelerationProbability │     1 │
│ Asset                   │     1 │
│ AssetState              │     1 │
│ DistanceProbability     │     2 │
│ SpeedProbability        │     3 │
└─────────────────────────┴───────┘