revrt.models.routing.RoutingFrictionLayer#
- class RoutingFrictionLayer(*, multiplier_layer: MultiplierLayerInput = None, multiplier_scalar: float = 1, include_in_report: bool = False, apply_row_mult: bool = False, apply_polarity_mult: bool = False)[source]#
Bases:
BaseModelConfig for one friction layer in a routing option
Friction layers are aggregated separately and then multiplied onto the summed cost surface using
C = (sum cost) * (1 + sum friction). Their values influence the selected route but are not included in the final route cost.The rest of this docstring is inserted by Pydantic and can be ignored.
Create a new model by parsing and validating input data from keyword arguments.
Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.
self is explicitly positional-only to allow self as a field name.
Methods
Attributes
Spatial multiplier layer(s) applied to the aggregated costs
Scalar multiplier applied before friction is aggregated
Report route distance and values for this layer when
TrueApply the transmission
row_widthmultiplier whenTrueApply the voltage and polarity multiplier when
True- multiplier_layer: MultiplierLayerInput#
Spatial multiplier layer(s) applied to the aggregated costs
A string or iterable is accepted and normalized to a list. All supplied layers are multiplied together.
- apply_row_mult: bool#
Apply the transmission
row_widthmultiplier whenTrueThe routing table input should resolve a voltage value for each routing option, either from the shared voltage column or from voltage_<option> column. The
row_widthdictionary may specify one multiplier for every option at a voltage, such as{"138": 1.15}, or values by routing option, such as{"500": {"overhead": 1.15, "underground": 2}}. An option value may instead map spatial layer names to scalar values. For example,{"500": {"underground": {"rural": 2, "urban": 20}}}produces one friction term per spatial layer. Existingmultiplier_layerinputs apply to every generated term. Every resolved voltage must be listed. For an option mapping, every routing option using this multiplier must be listed.
- apply_polarity_mult: bool#
Apply the voltage and polarity multiplier when
TrueThe routing table input should resolve both a voltage and a polarity value for each routing option, either from shared columns or from voltage_<option> / polarity_<option> columns, and the transmission config must provide each combination in
voltage_polarity_mult. A scalar polarity value applies to every routing option. To define values per routing option, use a mapping of routing-option names to scalar values. A routing-option value may instead map spatial layer names to scalar values. In that case, each layer is expanded into one friction term per spatial layer. For example,{"500": {"dc": {"underground": {"rural": 50, "urban": 60}}}}produces terms weighted by50 * ruraland60 * urban. Existingmultiplier_layerinputs apply to each generated term.Important
The configured multiplier is assumed to be in million dollars per mile and is converted to dollars per pixel before being applied.