4.3. Efficiency — Incremental Dynamic Analysis
- imselection.compute_efficiency_ida(ida_dict, ds_index=0)[source]
Classic efficiency βD|IM from an Incremental Dynamic Analysis result.
Uses the record-to-record dispersion of the fragility curve at the specified damage state.
- Parameters:
ida_dict (dict) – Output of
postprocessor.process_ida_results.ds_index (int, optional) – Damage-state index (0 = first / least severe). Default
0.
- Returns:
dict with keys
*
'beta_D_given_IM'— sigma_record2record at damage state ds_index*
'method'—'IDA'
Theoretical Background
For IDA, efficiency is quantified by the dispersion of IM capacities across records at a given damage state (Shome & Cornell, 1999).
Definition
Given the IM capacity \(C_i^{(r)}\) of record \(r\) for damage state \(i\), the efficiency is the logarithmic standard deviation of those capacities:
where \(\overline{\ln C_i} = \frac{1}{N}\sum_{r=1}^{N} \ln C_i^{(r)}\).
A smaller dispersion indicates that records scaled to the same IM level produce similar structural capacities — i.e. the IM is a more efficient predictor of structural performance.
Example
from openquake.vmtk.imselection import imselection
ims = imselection()
# ida_dict is the output of postprocessor.process_ida_results()
result = ims.compute_efficiency_ida(ida_dict)
print(f"Efficiency (beta_D|IM) = {result['efficiency']:.4f}")