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: BaseModel

Config 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

multiplier_layer

Spatial multiplier layer(s) applied to the aggregated costs

multiplier_scalar

Scalar multiplier applied before friction is aggregated

include_in_report

Report route distance and values for this layer when True

apply_row_mult

Apply the transmission row_width multiplier when True

apply_polarity_mult

Apply 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.

multiplier_scalar: float#

Scalar multiplier applied before friction is aggregated

include_in_report: bool#

Report route distance and values for this layer when True

apply_row_mult: bool#

Apply the transmission row_width multiplier when True

The 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_width dictionary 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. Existing multiplier_layer inputs 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 True

The 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 by 50 * rural and 60 * urban. Existing multiplier_layer inputs 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.