Skip to main content
Load shapes

Generating an E3MeaElecEndUseShape ID for a new technology impact profile

Written By cedars team

Last updated About 1 month ago

eTRM draft measure package permutation data

CEDARS uses the eTRM draft measure package permutation data to know what impact profiles to calculate.

Baseline selection

Before any impact is calculated, each LatestPermutation is resolved to one or more baseline load shapes, keyed off the eTRM MeasAppType field (impact_profiles/tasks.py::_get_baseline_configs):

How CEDARS uses MeasAppType to decide which UEC value to take.

AR measures are not excluded — they are the one case that produces two baseline configs from a single permutation. _get_baseline_configs returns both (PreTechID, uec_kwh_1b) and (StdTechID, uec_kwh_2b), and iter_permutation_baseline_candidates yields a separate (permutation, measure_load_shape, base_load_shape, uec_kwh_base) candidate for each. Each candidate is then run through _calculate_impacts and build_end_use_name independently, so an AR permutation ends up creating two fully independent ImpactProfiles (two different end_use_names, since build_end_use_name includes the baseline tech_id — the pre-existing-equipment profile and the standard-replacement profile), each with its own 8760 Hour series, QuarterlyCost rows, and AvoidedCostCombo. There is no dual-baseline-specific Hour/QuarterlyCost record — CEDARS models "dual baseline" purely as two ordinary single-baseline impact profiles that happen to share a measure load shape. If the upload is missing the base load shape a particular tech ID needs (e.g. an AR permutation whose PreTechID has no matching uploaded load shape), that baseline config is skipped individually (_get_base_load_shape_for_permutation returns None, logged at info) without affecting the other baseline.