From 4607ec83f097c0ecfc09f4413d8d8b5256451578 Mon Sep 17 00:00:00 2001 From: visr Date: Tue, 9 Apr 2024 13:12:25 +0000 Subject: [PATCH] deploy: 5cf4492d9cf4fdc4bce8046827101d36f25152ed --- build/index.html | 412 +++++++++--------- core/allocation.html | 50 +-- core/equations.html | 4 +- core/usage.html | 42 +- core/validation.html | 4 +- .../figure-html/cell-59-output-1.png | Bin 155751 -> 155749 bytes python/test-models.html | 2 +- search.json | 12 +- 8 files changed, 286 insertions(+), 240 deletions(-) diff --git a/build/index.html b/build/index.html index aed4e003c..d508297be 100644 --- a/build/index.html +++ b/build/index.html @@ -278,11 +278,11 @@

solve!
  • write_results
  • -

    source

    +

    source

    # Ribasim.configModule.

    module config

    Ribasim.config is a submodule of Ribasim to handle the configuration of a Ribasim model. It is implemented using the Configurations package. A full configuration is represented by Config, which is the main API. Ribasim.config is a submodule mainly to avoid name clashes between the configuration sections and the rest of Ribasim.

    -

    source

    +

    source

    @@ -290,18 +290,18 @@

    1.2 Types

    # Ribasim.AllocationType.

    Object for all information about allocation allocationnetworkids: The unique sorted allocation network IDs allocation models: The allocation models for the main network and subnetworks corresponding to allocationnetworkids mainnetworkconnections: (fromid, toid) from the main network to the subnetwork per subnetwork priorities: All used priority values. subnetworkdemands: The demand of an edge from the main network to a subnetwork recorddemand: A record of demands and allocated flows for nodes that have these. record_flow: A record of all flows computed by allocation optimization, eventually saved to output file

    -

    source

    +

    source

    # Ribasim.AllocationModelType.

    Store information for a subnetwork used for allocation.

    allocationnetworkid: The ID of this allocation network capacity: The capacity per edge of the allocation network, as constrained by nodes that have a maxflowrate problem: The JuMP.jl model for solving the allocation problem Δt_allocation: The time interval between consecutive allocation solves

    -

    source

    +

    source

    # Ribasim.AllocationModelMethod.

    Construct the JuMP.jl problem for allocation.

    Inputs

    allocationnetworkid: the ID of this allocation network p: Ribasim problem parameters Δt_allocation: The timestep between successive allocation solves

    Outputs

    An AllocationModel object.

    -

    source

    +

    source

    # Ribasim.BasinType.

    Requirements:

      @@ -311,22 +311,25 @@

      source

      +

      source

      # Ribasim.DiscreteControlType.

      nodeid: node ID of the DiscreteControl node; these are not unique but repeated by the amount of conditions of this DiscreteControl node listennodeid: the ID of the node being condition on variable: the name of the variable in the condition greaterthan: The threshold value in the condition conditionvalue: The current value of each condition controlstate: Dictionary: node ID => (control state, control state start) logic_mapping: Dictionary: (control node ID, truth state) => control state record: Namedtuple with discrete control information for results

      -

      source

      +

      source

      # Ribasim.EdgeMetadataType.

      Type for storing metadata of edges in the graph: id: ID of the edge (only used for labeling flow output) type: type of the edge allocationnetworkidsource: ID of allocation network where this edge is a source (0 if not a source) fromid: the node ID of the source node toid: the node ID of the destination node allocationflow: whether this edge has a flow in an allocation network node_ids: if this edge has allocation flow, these are all the nodes from the physical layer this edge consists of

      -

      source

      +

      source

      # Ribasim.FlatVectorType.

      struct FlatVector{T} <: AbstractVector{T}

      A FlatVector is an AbstractVector that iterates the T of a Vector{Vector{T}}.

      Each inner vector is assumed to be of equal length.

      It is similar to Iterators.flatten, though that doesn’t work with the Tables.Column interface, which needs length and getindex support.

      -

      source

      +

      source

      +

      # Ribasim.FlatVectorMethod.

      +

      Construct a FlatVector from one of the fields of SavedFlow.

      +

      source

      # Ribasim.FlowBoundaryType.

      nodeid: node ID of the FlowBoundary node active: whether this node is active and thus contributes flow flowrate: target flow rate

      -

      source

      +

      source

      # Ribasim.FractionalFlowType.

      Requirements:

        @@ -335,16 +338,16 @@

        source

        +

        source

        # Ribasim.InNeighborsType.

        Iterate over incoming neighbors of a given label in a MetaGraph, only for edges of edge_type

        -

        source

        +

        source

        # Ribasim.LevelBoundaryType.

        node_id: node ID of the LevelBoundary node active: whether this node is active level: the fixed level of this ‘infinitely big basin’

        -

        source

        +

        source

        # Ribasim.LevelDemandType.

        nodeid: node ID of the LevelDemand node minlevel: The minimum target level of the connected basin(s) max_level: The maximum target level of the connected basin(s) priority: If in a shortage state, the priority of the demand of the connected basin(s)

        -

        source

        +

        source

        # Ribasim.LinearResistanceType.

        Requirements:

          @@ -352,7 +355,7 @@

          source

          +

          source

          # Ribasim.ManningResistanceType.

          This is a simple Manning-Gauckler reach connection.

            @@ -382,48 +385,56 @@

            source

            +

            source

            # Ribasim.ModelType.

            Model(config_path::AbstractString)
             Model(config::Config)

            Initialize a Model.

            The Model struct is an initialized model, combined with the Config used to create it and saved results. The Basic Model Interface (BMI) is implemented on the Model. A Model can be created from the path to a TOML configuration file, or a Config object.

            -

            source

            +

            source

            # Ribasim.NodeMetadataType.

            Type for storing metadata of nodes in the graph type: type of the node allocationnetworkid: Allocation network ID (0 if not in subnetwork)

            -

            source

            +

            source

            # Ribasim.OutNeighborsType.

            Iterate over outgoing neighbors of a given label in a MetaGraph, only for edges of edge_type

            -

            source

            +

            source

            # Ribasim.OutletType.

            nodeid: node ID of the Outlet node active: whether this node is active and thus contributes flow flowrate: target flow rate minflowrate: The minimal flow rate of the outlet maxflowrate: The maximum flow rate of the outlet controlmapping: dictionary from (nodeid, controlstate) to target flow rate ispid_controlled: whether the flow rate of this outlet is governed by PID control

            -

            source

            +

            source

            # Ribasim.PidControlType.

            PID control currently only supports regulating basin levels.

            nodeid: node ID of the PidControl node active: whether this node is active and thus sets flow rates listennodeid: the id of the basin being controlled pidparams: a vector interpolation for parameters changing over time. The parameters are respectively target, proportional, integral, derivative, where the last three are the coefficients for the PID equation. error: the current error; basintarget - currentlevel

            -

            source

            +

            source

            # Ribasim.PumpType.

            nodeid: node ID of the Pump node active: whether this node is active and thus contributes flow flowrate: target flow rate minflowrate: The minimal flow rate of the pump maxflowrate: The maximum flow rate of the pump controlmapping: dictionary from (nodeid, controlstate) to target flow rate ispid_controlled: whether the flow rate of this pump is governed by PID control

            -

            source

            +

            source

            +

            # Ribasim.SavedFlowType.

            +

            In-memory storage of saved mean flows for writing to results.

            +
              +
            • flow: The mean flows on all edges
            • +
            • inflow: The sum of the mean flows coming into each basin
            • +
            • outflow: The sum of the mean flows going out of each basin
            • +
            +

            source

            # Ribasim.SubgridType.

            Subgrid linearly interpolates basin levels.

            -

            source

            +

            source

            # Ribasim.TabulatedRatingCurveType.

            struct TabulatedRatingCurve{C}

            Rating curve from level to flow rate. The rating curve is a lookup table with linear interpolation in between. Relation can be updated in time, which is done by moving data from the time field into the tables, which is done in the update_tabulated_rating_curve callback.

            Type parameter C indicates the content backing the StructVector, which can be a NamedTuple of Vectors or Arrow Primitives, and is added to avoid type instabilities.

            nodeid: node ID of the TabulatedRatingCurve node active: whether this node is active and thus contributes flows tables: The current Q(h) relationships time: The time table used for updating the tables controlmapping: dictionary from (nodeid, controlstate) to Q(h) and/or active state

            -

            source

            +

            source

            # Ribasim.TerminalType.

            node_id: node ID of the Terminal node

            -

            source

            +

            source

            # Ribasim.UserDemandType.

            active: whether this node is active and thus demands water realizedbmi: Cumulative inflow volume, for read or reset by BMI only demand: water flux demand of UserDemand per priority over time Each UserDemand has a demand for all priorities, which is 0.0 if it is not provided explicitly. demandreduced: the total demand reduced by allocated flows. This is used for goal programming, and requires separate memory from demand since demands can come from the BMI demanditp: Timeseries interpolation objects for demands demandfromtimeseries: If false the demand comes from the BMI or is fixed allocated: water flux currently allocated to UserDemand per priority returnfactor: the factor in [0,1] of how much of the abstracted water is given back to the system min_level: The level of the source basin below which the UserDemand does not abstract

            -

            source

            +

            source

            # Ribasim.config.ConfigMethod.

            Config(config_path::AbstractString; kwargs...)

            Parse a TOML file to a Config. Keys can be overruled using keyword arguments. To overrule keys from a subsection, e.g. dt from the solver section, use underscores: solver_dt.

            -

            source

            +

            source

            @@ -432,214 +443,214 @@

            # BasicModelInterface.finalizeMethod.

            BMI.finalize(model::Model)::Model

            Write all results to the configured files.

            -

            source

            +

            source

            # BasicModelInterface.initializeMethod.

            BMI.initialize(T::Type{Model}, config_path::AbstractString)::Model

            Initialize a Model from the path to the TOML configuration file.

            -

            source

            +

            source

            # CommonSolve.solve!Method.

            solve!(model::Model)::ODESolution

            Solve a Model until the configured endtime.

            -

            source

            +

            source

            # Ribasim.add_basin_term!Method.

            Add a term to the expression of the objective function corresponding to the demand of a basin.

            -

            source

            +

            source

            # Ribasim.add_constraints_absolute_value!Method.

            Minimizing |expr| can be achieved by introducing a new variable exprabs and posing the following constraints: exprabs >= expr expr_abs >= -expr

            -

            source

            +

            source

            # Ribasim.add_constraints_absolute_value_flow_demand!Method.

            Add constraints so that variables Fabsflow_demand act as the absolute value of the expression comparing flow to a flow buffer to the flow demand.

            -

            source

            +

            source

            # Ribasim.add_constraints_absolute_value_level_demand!Method.

            Add constraints so that variables Fabslevel_demand act as the absolute value of the expression comparing flow to a basin to its demand.

            -

            source

            +

            source

            # Ribasim.add_constraints_absolute_value_user_demand!Method.

            Add constraints so that variables Fabsuser_demand act as the absolute value of the expression comparing flow to a UserDemand to its demand.

            -

            source

            +

            source

            # Ribasim.add_constraints_basin_flow!Method.

            Add the Basin flow constraints to the allocation problem. The constraint indices are the Basin node IDs.

            Constraint: flow out of basin <= basin capacity

            -

            source

            +

            source

            # Ribasim.add_constraints_buffer!Method.

            Add the buffer outflow constraints to the allocation problem. The constraint indices are the node IDs of the nodes that have a flow demand.

            Constraint: flow out of buffer <= flow buffer capacity

            -

            source

            +

            source

            # Ribasim.add_constraints_capacity!Method.

            Add the flow capacity constraints to the allocation problem. Only finite capacities get a constraint. The constraint indices are (edgesourceid, edgedstid).

            Constraint: flow over edge <= edge capacity

            -

            source

            +

            source

            # Ribasim.add_constraints_conservation_basin!Method.

            Add the basin flow conservation constraints to the allocation problem. The constraint indices are Basin node IDs.

            Constraint: sum(flows out of basin) == sum(flows into basin) + flow from storage and vertical fluxes

            -

            source

            +

            source

            # Ribasim.add_constraints_conservation_flow_demand!Method.

            Add the conservation constraints for connector nodes with a flow demand to the allocation problem. The constraint indices are node IDs of the nodes with the flow demand (so not the IDs of the FlowDemand nodes).

            Constraint: flow into node + flow out of buffer = flow out of node + flow into buffer

            -

            source

            +

            source

            # Ribasim.add_constraints_conservation_subnetwork!Method.

            Add the subnetwork inlet flow conservation constraints to the allocation problem. The constraint indices are node IDs subnetwork inlet edge dst IDs.

            Constraint: sum(flows into node) == sum(flows out of node)

            -

            source

            +

            source

            # Ribasim.add_constraints_flow_demand_outflow!Method.

            Add the flow demand node outflow constraints to the allocation problem. The constraint indices are the node IDs of the nodes that have a flow demand.

            Constraint: flow out of node with flow demand <= ∞ if not at flow demand priority, 0.0 otherwise

            -

            source

            +

            source

            # Ribasim.add_constraints_fractional_flow!Method.

            Add the fractional flow constraints to the allocation problem. The constraint indices are allocation edges over a fractional flow node.

            Constraint: flow after fractional_flow node <= fraction * inflow

            -

            source

            +

            source

            # Ribasim.add_constraints_source!Method.

            Add the source constraints to the allocation problem. The actual threshold values will be set before each allocation solve. The constraint indices are (edgesourceid, edgedstid).

            Constraint: flow over source edge <= source flow in subnetwork

            -

            source

            +

            source

            # Ribasim.add_constraints_user_source!Method.

            Add capacity constraints to the outflow edge of UserDemand nodes. The constraint indices are the UserDemand node IDs.

            Constraint: flow over UserDemand edge outflow edge <= cumulative return flow from previous priorities

            -

            source

            +

            source

            # Ribasim.add_flow_demand_term!Method.

            Add a term to the expression of the objective function corresponding to the demand of a node with a a flow demand.

            -

            source

            +

            source

            # Ribasim.add_objective_term!Function.

            Add a term to the objective function given by the objective type, depending in the provided flow variable and the associated demand.

            -

            source

            +

            source

            # Ribasim.add_subnetwork_connections!Method.

            Add the edges connecting the main network work to a subnetwork to both the main network and subnetwork allocation network.

            -

            source

            +

            source

            # Ribasim.add_user_demand_term!Method.

            Add a term to the expression of the objective function corresponding to the demand of a UserDemand.

            -

            source

            +

            source

            # Ribasim.add_variables_absolute_value!Method.

            Certain allocation distribution types use absolute values in the objective function. Since most optimization packages do not support the absolute value function directly, New variables are introduced that act as the absolute value of an expression by posing the appropriate constraints.

            -

            source

            +

            source

            # Ribasim.add_variables_basin!Method.

            Add the variables for supply/demand of a basin to the problem. The variable indices are the node_ids of the basins with a level demand in the subnetwork.

            -

            source

            +

            source

            # Ribasim.add_variables_flow!Method.

            Add the flow variables F to the allocation problem. The variable indices are (edgesourceid, edgedstid). Non-negativivity constraints are also immediately added to the flow variables.

            -

            source

            +

            source

            # Ribasim.add_variables_flow_buffer!Method.

            Add the variables for supply/demand of a node with a flow demand to the problem. The variable indices are the node_ids of the nodes with a flow demand in the subnetwork.

            -

            source

            +

            source

            # Ribasim.adjust_capacities_basin!Method.

            Set the values of the basin outflows. 2 cases:

            • Before the first allocation solve, set the capacities to their full capacity if there is surplus storage;
            • Before an allocation solve, subtract the flow used by allocation for the previous priority from the capacities.
            -

            source

            +

            source

            # Ribasim.adjust_capacities_buffer!Method.

            Increase the capacities of the flow buffers of nodes with a flow demand by the inflow to the respective buffers.

            -

            source

            +

            source

            # Ribasim.adjust_capacities_edge!Method.

            Set the values of the edge capacities. 2 cases:

            • Before the first allocation solve, set the edge capacities to their full capacity;
            • Before an allocation solve, subtract the flow used by allocation for the previous priority from the edge capacities.
            -

            source

            +

            source

            # Ribasim.adjust_capacities_returnflow!Method.

            Add the return flow fraction of the inflow to the UserDemand nodes to the capacity of the outflow source.

            -

            source

            +

            source

            # Ribasim.adjust_capacities_source!Method.

            Adjust the source capacities by the flow used from the sources.

            -

            source

            +

            source

            # Ribasim.adjust_demands_flow!Method.

            Reduce the flow demand based on flow trough the node with the demand. Flow from any priority counts.

            -

            source

            +

            source

            # Ribasim.adjust_demands_level!Method.

            Subtract the allocated flow to the basin from its demand, to obtain the reduced demand used for goal programming

            -

            source

            +

            source

            # Ribasim.adjust_demands_user!Method.

            Set the demand of the flow demand nodes. 2 cases:

            • Before the first allocation solve, set the demands to their full value;
            • Before an allocation solve, subtract the flow trough the node with a flow demand from the total flow demand (which will be used at the priority of the flow demand only).
            -

            source

            +

            source

            # Ribasim.all_neighbor_labels_typeMethod.

            Get the in- and outneighbor node IDs of the given node ID (label) over the given edge type in the graph.

            -

            source

            +

            source

            # Ribasim.allocate!Method.

            Update the allocation optimization problem for the given subnetwork with the problem state and flows, solve the allocation problem and assign the results to the UserDemand.

            -

            source

            +

            source

            # Ribasim.allocation_graphMethod.

            Build the graph used for the allocation problem.

            -

            source

            +

            source

            # Ribasim.allocation_graph_used_nodes!Method.

            Find all nodes in the subnetwork which will be used in the allocation network. Some nodes are skipped to optimize allocation optimization.

            -

            source

            +

            source

            # Ribasim.allocation_problemMethod.

            Construct the allocation problem for the current subnetwork as a JuMP.jl model.

            -

            source

            +

            source

            # Ribasim.allocation_tableMethod.

            Create an allocation result table for the saved data

            -

            source

            +

            source

            # Ribasim.assign_allocations!Method.

            Assign the allocations to the UserDemand as determined by the solution of the allocation problem.

            -

            source

            +

            source

            # Ribasim.basin_bottomMethod.

            Return the bottom elevation of the basin with index i, or nothing if it doesn’t exist

            -

            source

            +

            source

            # Ribasim.basin_tableMethod.

            Create the basin result table from the saved data

            -

            source

            +

            source

            # Ribasim.create_callbacksMethod.

            Create the different callbacks that are used to store results and feed the simulation with new data. The different callbacks are combined to a CallbackSet that goes to the integrator. Returns the CallbackSet and the SavedValues for flow.

            -

            source

            +

            source

            # Ribasim.create_graphMethod.

            Return a directed metagraph with data of nodes (NodeMetadata): NodeMetadata

            and data of edges (EdgeMetadata): EdgeMetadata

            -

            source

            +

            source

            # Ribasim.create_storage_tablesMethod.

            Read the Basin / profile table and return all area and level and computed storage values

            -

            source

            +

            source

            # Ribasim.datetime_sinceMethod.

            datetime_since(t::Real, t0::DateTime)::DateTime

            Convert a Real that represents the seconds passed since the simulation start to the nearest DateTime. This is used to convert between the solver’s inner float time, and the calendar.

            -

            source

            +

            source

            # Ribasim.datetimesMethod.

            Get all saved times as a Vector{DateTime}

            -

            source

            +

            source

            # Ribasim.discrete_control_affect!Method.

            Change parameters based on the control logic.

            -

            source

            +

            source

            # Ribasim.discrete_control_affect_downcrossing!Method.

            An downcrossing means that a condition (always greater than) becomes false.

            -

            source

            +

            source

            # Ribasim.discrete_control_affect_upcrossing!Method.

            An upcrossing means that a condition (always greater than) becomes true.

            -

            source

            +

            source

            # Ribasim.discrete_control_conditionMethod.

            Listens for changes in condition truths.

            -

            source

            +

            source

            # Ribasim.discrete_control_tableMethod.

            Create a discrete control result table from the saved data

            -

            source

            +

            source

            # Ribasim.expand_logic_mappingMethod.

            Replace the truth states in the logic mapping which contain wildcards with all possible explicit truth states.

            -

            source

            +

            source

            # Ribasim.find_allocation_graph_edges!Method.

            This loop finds allocation network edges in several ways:

            • Between allocation network nodes whose equivalent in the subnetwork are directly connected
            • Between allocation network nodes whose equivalent in the subnetwork are connected with one or more allocation network nodes in between
            -

            source

            +

            source

            # Ribasim.find_subnetwork_connections!Method.

            Find the edges from the main network to a subnetwork.

            -

            source

            +

            source

            # Ribasim.findlastgroupMethod.

            For an element id and a vector of elements ids, get the range of indices of the last consecutive block of id. Returns the empty range 1:0 if id is not in ids.

            -

            source

            +

            source

            # Ribasim.findsortedMethod.

            Find the index of element x in a sorted collection a. Returns the index of x if it exists, or nothing if it doesn’t. If x occurs more than once, throw an error.

            -

            source

            +

            source

            # Ribasim.flow_tableMethod.

            Create a flow result table from the saved data

            -

            source

            +

            source

            # Ribasim.formulate_flow!Method.

            Directed graph: outflow is positive!

            -

            source

            +

            source

            # Ribasim.formulate_flow!Method.

            Conservation of energy for two basins, a and b:

            h_a + v_a^2 / (2 * g) = h_b + v_b^2 / (2 * g) + S_f * L + C / 2 * g * (v_b^2 - v_a^2)
            @@ -667,16 +678,16 @@

            source

            +

            source

            # Ribasim.formulate_flow!Method.

            Directed graph: outflow is positive!

            -

            source

            +

            source

            # Ribasim.get_area_and_levelMethod.

            Compute the area and level of a basin given its storage. Also returns darea/dlevel as it is needed for the Jacobian.

            -

            source

            +

            source

            # Ribasim.get_basin_capacityMethod.

            Get the capacity of the basin, i.e. the maximum flow that can be abstracted from the basin if it is in a state of surplus storage (0 if no reference levels are provided by a level_demand node). Storages are converted to flows by dividing by the allocation timestep.

            -

            source

            +

            source

            # Ribasim.get_basin_dataMethod.

            Get several variables associated with a basin:

              @@ -686,135 +697,135 @@

              source

              +

              source

              # Ribasim.get_basin_demandMethod.

              Get the demand of the basin, i.e. how large a flow the basin needs to get to its minimum target level (0 if no reference levels are provided by a level_demand node). Storages are converted to flows by dividing by the allocation timestep.

              -

              source

              +

              source

              # Ribasim.get_chunk_sizesMethod.

              Get the chunk sizes for DiffCache; differentiation w.r.t. u and t (the latter only if a Rosenbrock algorithm is used).

              -

              source

              +

              source

              # Ribasim.get_compressorMethod.

              Get the compressor based on the Results section

              -

              source

              +

              source

              # Ribasim.get_flowMethod.

              Get the flow over the given edge (val is needed for get_tmp from ForwardDiff.jl).

              -

              source

              +

              source

              # Ribasim.get_fractional_flow_connected_basinsMethod.

              Get the node type specific indices of the fractional flows and basins, that are consecutively connected to a node of given id.

              -

              source

              +

              source

              # Ribasim.get_jac_prototypeMethod.

              Get a sparse matrix whose sparsity matches (with some false positives) the sparsity of the Jacobian of the ODE problem. All nodes are taken into consideration, also the ones that are inactive.

              In Ribasim the Jacobian is typically sparse because each state only depends on a small number of other states.

              Note: the name ‘prototype’ does not mean this code is a prototype, it comes from the naming convention of this sparsity structure in the differentialequations.jl docs.

              -

              source

              +

              source

              # Ribasim.get_levelMethod.

              Get the current water level of a node ID. The ID can belong to either a Basin or a LevelBoundary. storage: tells ForwardDiff whether this call is for differentiation or not

              -

              source

              +

              source

              # Ribasim.get_scalar_interpolationMethod.

              Linear interpolation of a scalar with constant extrapolation.

              -

              source

              +

              source

              # Ribasim.get_storage_from_levelMethod.

              Get the storage of a basin from its level.

              -

              source

              +

              source

              # Ribasim.get_storages_and_levelsMethod.

              Get the storage and level of all basins as matrices of nbasin × ntime

              -

              source

              +

              source

              # Ribasim.get_storages_from_levelsMethod.

              Compute the storages of the basins based on the water level of the basins.

              -

              source

              +

              source

              # Ribasim.get_tstopsMethod.

              From an iterable of DateTimes, find the times the solver needs to stop

              -

              source

              +

              source

              # Ribasim.get_valueMethod.

              Get a value for a condition. Currently supports getting levels from basins and flows from flow boundaries.

              -

              source

              +

              source

              # Ribasim.get_ΔtMethod.

              Get the time interval between (flow) saves

              -

              source

              +

              source

              # Ribasim.id_indexMethod.

              Get the index of an ID in a set of indices.

              -

              source

              +

              source

              # Ribasim.indicate_allocation_flow!Method.

              Add to the edge metadata that the given edge is used for allocation flow. If the edge does not exist, it is created.

              -

              source

              +

              source

              # Ribasim.inflow_idMethod.

              Get the unique inneighbor over a flow edge.

              -

              source

              +

              source

              # Ribasim.inflow_idsMethod.

              Get the inneighbors over flow edges.

              -

              source

              +

              source

              # Ribasim.inflow_ids_allocationMethod.

              Get the inneighbors of the given ID such that the connecting edge is an allocation flow edge.

              -

              source

              +

              source

              # Ribasim.inneighbor_labels_typeMethod.

              Get the inneighbor node IDs of the given node ID (label) over the given edge type in the graph.

              -

              source

              +

              source

              # Ribasim.inoutflow_idsMethod.

              Get the in- and outneighbors over flow edges.

              -

              source

              +

              source

              # Ribasim.integrate_flows!Method.

              Integrate flows over the last timestep

              -

              source

              +

              source

              # Ribasim.is_allocation_sourceMethod.

              Find out whether the given edge is a source for an allocation network.

              -

              source

              +

              source

              # Ribasim.is_current_moduleMethod.

              is_current_module(log::LogMessageType)::Bool
               Returns true if the log message is from the current module or a submodule.
               
               See https://github.com/JuliaLogging/LoggingExtras.jl/blob/d35e7c8cfc197853ee336ace17182e6ed36dca24/src/CompositionalLoggers/earlyfiltered.jl#L39
               for the information available in log.
              -

              source

              +

              source

              # Ribasim.is_flow_constrainingMethod.

              Whether the given node node is flow constraining by having a maximum flow rate.

              -

              source

              +

              source

              # Ribasim.is_flow_direction_constrainingMethod.

              Whether the given node is flow direction constraining (only in direction of edges).

              -

              source

              +

              source

              # Ribasim.load_dataMethod.

              load_data(db::DB, config::Config, nodetype::Symbol, kind::Symbol)::Union{Table, Query, Nothing}

              Load data from Arrow files if available, otherwise the database. Returns either an Arrow.Table, SQLite.Query or nothing if the data is not present.

              -

              source

              +

              source

              # Ribasim.load_structvectorMethod.

              load_structvector(db::DB, config::Config, ::Type{T})::StructVector{T}

              Load data from Arrow files if available, otherwise the database. Always returns a StructVector of the given struct type T, which is empty if the table is not found. This function validates the schema, and enforces the required sort order.

              -

              source

              +

              source

              # Ribasim.low_storage_factorMethod.

              If id is a Basin with storage below the threshold, return a reduction factor != 1

              -

              source

              +

              source

              # Ribasim.mainMethod.

              main(toml_path::AbstractString)::Cint
               main(ARGS::Vector{String})::Cint
               main()::Cint

              This is the main entry point of the application. Performs argument parsing and sets up logging for both terminal and file. Calls Ribasim.run() and handles exceptions to convert to exit codes.

              -

              source

              +

              source

              # Ribasim.metadata_from_edgeMethod.

              Get the metadata of an edge in the graph from an edge of the underlying DiGraph.

              -

              source

              +

              source

              # Ribasim.nodefieldsMethod.

              Get all node fieldnames of the parameter object.

              -

              source

              +

              source

              # Ribasim.nodetypeMethod.

              From a SchemaVersion(“ribasim.flowboundary.static”, 1) return (:FlowBoundary, :static)

              -

              source

              +

              source

              # Ribasim.outflow_idMethod.

              Get the unique outneighbor over a flow edge.

              -

              source

              +

              source

              # Ribasim.outflow_idsMethod.

              Get the outneighbors over flow edges.

              -

              source

              +

              source

              # Ribasim.outflow_ids_allocationMethod.

              Get the outneighbors of the given ID such that the connecting edge is an allocation flow edge.

              -

              source

              +

              source

              # Ribasim.outneighbor_labels_typeMethod.

              Get the outneighbor node IDs of the given node ID (label) over the given edge type in the graph.

              -

              source

              +

              source

              # Ribasim.parse_static_and_timeMethod.

              Process the data in the static and time tables for a given node type. The ‘defaults’ named tuple dictates how missing data is filled in. ‘time_interpolatables’ is a vector of Symbols of parameter names for which a time interpolation (linear) object must be constructed. The control mapping for DiscreteControl is also constructed in this function. This function currently does not support node states that are defined by more than one row in a table, as is the case for TabulatedRatingCurve.

              -

              source

              +

              source

              # Ribasim.pkgversionMethod.

              Get the package version of a given module

              -

              source

              +

              source

              # Ribasim.process_allocation_graph_edges!Method.

              For the composite allocation network edges:

                @@ -822,132 +833,136 @@

                source

                +

                source

                # Ribasim.profile_storageMethod.

                Calculate a profile storage by integrating the areas over the levels

                -

                source

                +

                source

                # Ribasim.qh_interpolationMethod.

                From a table with columns nodeid, flowrate (Q) and level (h), create a LinearInterpolation from level to flow rate for a given node_id.

                -

                source

                +

                source

                # Ribasim.reduction_factorMethod.

                Function that goes smoothly from 0 to 1 in the interval [0,threshold], and is constant outside this interval.

                -

                source

                +

                source

                # Ribasim.runMethod.

                run(config_file::AbstractString)::Model
                 run(config::Config)::Model

                Run a Model, given a path to a TOML configuration file, or a Config object. Running a model includes initialization, solving to the end with [solve!](@ref) and writing results with write_results.

                -

                source

                +

                source

                # Ribasim.save_allocation_flows!Method.

                Save the allocation flows per basin and physical edge.

                -

                source

                +

                source

                # Ribasim.save_demands_and_allocations!Method.

                Save the demands and allocated flows for UserDemand and Basin. Note: Basin supply (negative demand) is only saved for the first priority.

                -

                source

                +

                source

                # Ribasim.save_flowMethod.

                Compute the average flows over the last saveat interval and write them to SavedValues

                -

                source

                +

                source

                # Ribasim.save_subgrid_levelMethod.

                Interpolate the levels and save them to SavedValues

                -

                source

                +

                source

                # Ribasim.save_vertical_fluxMethod.

                Compute the average vertical fluxes over the last saveat interval and write them to SavedValues

                -

                source

                +

                source

                # Ribasim.scalar_interpolation_derivativeMethod.

                Derivative of scalar interpolation.

                -

                source

                +

                source

                +

                # Ribasim.secondsMethod.

                +
                seconds(period::Millisecond)::Float64
                +

                Convert a period of type Millisecond to a Float64 in seconds. You get Millisecond objects when subtracting two DateTime objects. Dates.value returns the number of milliseconds.

                +

                source

                # Ribasim.seconds_sinceMethod.

                -
                seconds_since(t::DateTime, t0::DateTime)::Float64
                +
                seconds_since(t::DateTime, t0::DateTime)::Float64

                Convert a DateTime to a float that is the number of seconds since the start of the simulation. This is used to convert between the solver’s inner float time, and the calendar.

                -

                source

                +

                source

                # Ribasim.set_capacities_flow_demand_outflow!Method.

                Set the capacity of the outflow edge from a node with a flow demand:

                • To Inf if the current priority is other than the priority of the flow demand
                • To 0.0 if the current priority is equal to the priority of the flow demand
                -

                source

                +

                source

                # Ribasim.set_current_value!Method.

                From a timeseries table time, load the most recent applicable data into table. table must be a NamedTuple of vectors with all variables that must be loaded. The most recent applicable data is non-NaN data for a given ID that is on or before t.

                -

                source

                +

                source

                # Ribasim.set_flow!Method.

                Set the given flow q over the edge between the given nodes.

                -

                source

                +

                source

                # Ribasim.set_fractional_flow_in_allocation!Method.

                Update the fractional flow fractions in an allocation problem.

                -

                source

                +

                source

                # Ribasim.set_initial_capacities_basin!Method.

                Set the initial capacity of each basin in the subnetwork as vertical fluxes + the disk of storage above the maximum level / Δt_allocation

                -

                source

                +

                source

                # Ribasim.set_initial_capacities_buffer!Method.

                Set the flow buffer of nodes with a flow demand to 0.0

                -

                source

                +

                source

                # Ribasim.set_initial_capacities_edge!Method.

                Set the capacities of the allocation flow edges as determined by the smallest maxflowrate of a node on this edge

                -

                source

                +

                source

                # Ribasim.set_initial_capacities_inlet!Method.

                Set the capacities of the main network to subnetwork inlets. Per optimization type: internalsources: 0.0 collectdemands: Inf allocate: the total flow allocated to this inlet from the main network

                -

                source

                +

                source

                # Ribasim.set_initial_capacities_returnflow!Method.

                Set the initial capacities of the UserDemand return flow sources to 0.

                -

                source

                +

                source

                # Ribasim.set_initial_capacities_source!Method.

                Set the capacities of the sources in the subnetwork as the latest instantaneous flow out of the source in the physical layer

                -

                source

                +

                source

                # Ribasim.set_initial_demands_flow!Method.

                Set the initial demands of the nodes with a flow demand to the interpolated value from the given timeseries.

                -

                source

                +

                source

                # Ribasim.set_initial_demands_level!Method.

                Set the initial demand of each basin in the subnetwork as

                • vertical fluxes + the disk of missing storage below the minimum level / Δt_allocation
                -

                source

                +

                source

                # Ribasim.set_initial_demands_user!Method.

                Set the demands of the user demand nodes as given by either a coupled model or a timeseries

                -

                source

                +

                source

                # Ribasim.set_initial_discrete_controlled_parameters!Method.

                Set parameters of nodes that are controlled by DiscreteControl to the values corresponding to the initial state of the model.

                -

                source

                +

                source

                # Ribasim.set_initial_values!Method.

                Set the initial capacities and demands which are recudes by usage in the adjust*capacities**! and adjust*demands**! functions respectively.

                -

                source

                +

                source

                # Ribasim.set_is_pid_controlled!Method.

                Set ispidcontrolled to true for those pumps and outlets that are PID controlled

                -

                source

                +

                source

                # Ribasim.set_objective_priority!Method.

                Set the objective for the given priority. For an objective with absolute values this also involves adjusting constraints.

                -

                source

                +

                source

                # Ribasim.set_static_value!Method.

                Load data from a source table static into a destination table. Data is matched based on the node_id, which is sorted.

                -

                source

                +

                source

                # Ribasim.set_table_row!Method.

                Update table at row index i, with the values of a given row. table must be a NamedTuple of vectors with all variables that must be loaded. The row must contain all the column names that are present in the table. If a value is missing, it is not set.

                -

                source

                +

                source

                # Ribasim.sorted_table!Method.

                Depending on if a table can be sorted, either sort it or assert that it is sorted.

                Tables loaded from the database into memory can be sorted. Tables loaded from Arrow files are memory mapped and can therefore not be sorted.

                -

                source

                +

                source

                # Ribasim.tsavesMethod.

                Get all saved times in seconds since start

                -

                source

                +

                source

                # Ribasim.update_allocation!Method.

                Solve the allocation problem for all demands and assign allocated abstractions.

                -

                source

                +

                source

                # Ribasim.update_basinMethod.

                Load updates from ‘Basin / time’ into the parameters

                -

                source

                +

                source

                # Ribasim.update_jac_prototype!Method.

                Add nonzeros for basins connected to eachother via 1 node and possibly a fractional flow node Basins are also assumed to depend on themselves (main diagonal terms)

                -

                source

                +

                source

                # Ribasim.update_jac_prototype!Method.

                Add nonzeros for the integral term and the basins on either side of the controlled node

                -

                source

                +

                source

                # Ribasim.update_tabulated_rating_curve!Method.

                Load updates from ‘TabulatedRatingCurve / time’ into the parameters

                -

                source

                +

                source

                # Ribasim.update_vertical_flux!Method.

                Smoothly let the evaporation flux go to 0 when at small water depths Currently at less than 0.1 m.

                -

                source

                +

                source

                # Ribasim.valid_discrete_controlMethod.

                Check:

                  @@ -955,67 +970,67 @@

                  source

                  +

                  source

                  # Ribasim.valid_edge_typesMethod.

                  Check that only supported edge types are declared.

                  -

                  source

                  +

                  source

                  # Ribasim.valid_edgesMethod.

                  Test for each node given its node type whether the nodes that

                  are downstream (‘down-edge’) of this node are of an allowed type

                  -

                  source

                  +

                  source

                  # Ribasim.valid_flow_ratesMethod.

                  Test whether static or discrete controlled flow rates are indeed non-negative.

                  -

                  source

                  +

                  source

                  # Ribasim.valid_fractional_flowMethod.

                  Check that nodes that have fractional flow outneighbors do not have any other type of outneighbor, that the fractions leaving a node add up to ≈1 and that the fractions are non-negative.

                  -

                  source

                  +

                  source

                  # Ribasim.valid_n_neighborsMethod.

                  Test for each node given its node type whether it has an allowed number of flow/control inneighbors and outneighbors

                  -

                  source

                  +

                  source

                  # Ribasim.valid_profilesMethod.

                  Check whether the profile data has no repeats in the levels and the areas start positive.

                  -

                  source

                  +

                  source

                  # Ribasim.valid_sourcesMethod.

                  The source nodes must only have one allocation outneighbor and no allocation inneighbors.

                  -

                  source

                  +

                  source

                  # Ribasim.valid_subgridMethod.

                  Validate the entries for a single subgrid element.

                  -

                  source

                  +

                  source

                  # Ribasim.water_balance!Method.

                  The right hand side function of the system of ODEs set up by Ribasim.

                  -

                  source

                  +

                  source

                  # Ribasim.write_arrowMethod.

                  Write a result table to disk as an Arrow file

                  -

                  source

                  +

                  source

                  # Ribasim.write_resultsMethod.

                  -
                  write_results(model::Model)::Model
                  +
                  write_results(model::Model)::Model

                  Write all results to the Arrow files as specified in the model configuration.

                  -

                  source

                  +

                  source

                  # Ribasim.config.algorithmMethod.

                  Create an OrdinaryDiffEqAlgorithm from solver config

                  -

                  source

                  +

                  source

                  # Ribasim.config.convert_dtMethod.

                  Convert the dt from our Config to SciML stepsize control arguments

                  -

                  source

                  +

                  source

                  # Ribasim.config.convert_saveatMethod.

                  Convert the saveat Float64 from our Config to SciML’s saveat

                  -

                  source

                  +

                  source

                  # Ribasim.config.input_pathMethod.

                  Construct a path relative to both the TOML directory and the optional input_dir

                  -

                  source

                  +

                  source

                  # Ribasim.config.results_pathMethod.

                  Construct a path relative to both the TOML directory and the optional results_dir

                  -

                  source

                  +

                  source

                  # Ribasim.config.snake_caseMethod.

                  Convert a string from CamelCase to snake_case.

                  -

                  source

                  +

                  source

                  1.4 Constants

                  # Ribasim.config.algorithmsConstant.

                  -
                  const algorithms::Dict{String, Type}
                  +
                  const algorithms::Dict{String, Type}

                  Map from config string to a supported algorithm type from OrdinaryDiffEq.

                  Supported algorithms:

                    @@ -1029,7 +1044,7 @@

                    source

                    +

                    source

                  @@ -1037,10 +1052,10 @@

                  1.5 Macros

                  # Ribasim.config.@addfieldsMacro.

                  Add fieldnames with Union{String, Nothing} type to struct expression. Requires (option?) use before it.

                  -

                  source

                  +

                  source

                  # Ribasim.config.@addnodetypesMacro.

                  Add all TableOption subtypes as fields to struct expression. Requires (option?) use before it.

                  -

                  source

                  +

                  source

                  @@ -1051,12 +1066,13 @@

                  Ribasim.config
                • Ribasim.config.algorithms
                • Ribasim.Allocation
                • -
                • Ribasim.AllocationModel
                • Ribasim.AllocationModel
                • +
                • Ribasim.AllocationModel
                • Ribasim.Basin
                • Ribasim.DiscreteControl
                • Ribasim.EdgeMetadata
                • Ribasim.FlatVector
                • +
                • Ribasim.FlatVector
                • Ribasim.FlowBoundary
                • Ribasim.FractionalFlow
                • Ribasim.InNeighbors
                • @@ -1070,6 +1086,7 @@

                  Ribasim.Outlet
                • Ribasim.PidControl
                • Ribasim.Pump
                • +
                • Ribasim.SavedFlow
                • Ribasim.Subgrid
                • Ribasim.TabulatedRatingCurve
                • Ribasim.Terminal
                • @@ -1140,9 +1157,9 @@

                  Ribasim.findlastgroup
                • Ribasim.findsorted
                • Ribasim.flow_table
                • +
                • Ribasim.formulate_flow!
                • Ribasim.formulate_flow!
                • Ribasim.formulate_flow!
                • -
                • Ribasim.formulate_flow!
                • Ribasim.get_area_and_level
                • Ribasim.get_basin_capacity
                • Ribasim.get_basin_data
                • @@ -1196,6 +1213,7 @@

                  Ribasim.save_subgrid_level
                • Ribasim.save_vertical_flux
                • Ribasim.scalar_interpolation_derivative
                • +
                • Ribasim.seconds
                • Ribasim.seconds_since
                • Ribasim.set_capacities_flow_demand_outflow!
                • Ribasim.set_current_value!
                • @@ -1220,8 +1238,8 @@

                  Ribasim.tsaves
                • Ribasim.update_allocation!
                • Ribasim.update_basin
                • -
                • Ribasim.update_jac_prototype!
                • Ribasim.update_jac_prototype!
                • +
                • Ribasim.update_jac_prototype!
                • Ribasim.update_tabulated_rating_curve!
                • Ribasim.update_vertical_flux!
                • Ribasim.valid_discrete_control
                • diff --git a/core/allocation.html b/core/allocation.html index 897ff3e9e..6ec0b13f5 100644 --- a/core/allocation.html +++ b/core/allocation.html @@ -567,7 +567,7 @@

                  4.4 Example

                  The following is an example of an optimization problem for the example shown here:

                  -
                  +
                  Code
                  using Ribasim
                  @@ -590,49 +590,49 @@ 

                  println(p.allocation.allocation_models[1].problem)

                  -
                  Min F_abs_user_demand[UserDemand #3] + F_abs_user_demand[UserDemand #6] + F_abs_user_demand[UserDemand #13] + F_abs_level_demand[Basin #2] + F_abs_level_demand[Basin #12] + F_abs_level_demand[Basin #5]
                  +
                  Min F_abs_user_demand[UserDemand #13] + F_abs_user_demand[UserDemand #3] + F_abs_user_demand[UserDemand #6] + F_abs_level_demand[Basin #5] + F_abs_level_demand[Basin #12] + F_abs_level_demand[Basin #2]
                   Subject to
                  + abs_positive_user_demand[UserDemand #13] : -F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0
                    abs_positive_user_demand[UserDemand #3] : -F[(Basin #2, UserDemand #3)] + F_abs_user_demand[UserDemand #3] ≥ 0
                    abs_positive_user_demand[UserDemand #6] : -F[(Basin #5, UserDemand #6)] + F_abs_user_demand[UserDemand #6] ≥ 0
                  - abs_positive_user_demand[UserDemand #13] : -F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0
                  + abs_negative_user_demand[UserDemand #13] : F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0
                    abs_negative_user_demand[UserDemand #3] : F[(Basin #2, UserDemand #3)] + F_abs_user_demand[UserDemand #3] ≥ 0
                    abs_negative_user_demand[UserDemand #6] : F[(Basin #5, UserDemand #6)] + F_abs_user_demand[UserDemand #6] ≥ 0
                  - abs_negative_user_demand[UserDemand #13] : F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0
                  - abs_positive_basin[Basin #2] : -F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0
                  - abs_positive_basin[Basin #12] : -F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0
                    abs_positive_basin[Basin #5] : -F_basin_in[Basin #5] + F_abs_level_demand[Basin #5] ≥ 0
                  - abs_negative_basin[Basin #2] : F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0
                  - abs_negative_basin[Basin #12] : F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0
                  + abs_positive_basin[Basin #12] : -F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0
                  + abs_positive_basin[Basin #2] : -F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0
                    abs_negative_basin[Basin #5] : F_basin_in[Basin #5] + F_abs_level_demand[Basin #5] ≥ 0
                  - F[(TabulatedRatingCurve #7, Basin #12)] ≥ 0
                  - F[(UserDemand #3, Basin #2)] ≥ 0
                  + abs_negative_basin[Basin #12] : F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0
                  + abs_negative_basin[Basin #2] : F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0
                  + F[(UserDemand #13, Terminal #10)] ≥ 0
                    F[(Basin #5, UserDemand #6)] ≥ 0
                  + F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0
                  + F[(Basin #12, UserDemand #13)] ≥ 0
                    F[(FlowBoundary #1, Basin #2)] ≥ 0
                  + F[(UserDemand #3, Basin #2)] ≥ 0
                    F[(Basin #2, Basin #5)] ≥ 0
                  - F[(Basin #5, Basin #2)] ≥ 0
                    F[(Basin #2, UserDemand #3)] ≥ 0
                  - F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0
                    F[(UserDemand #6, Basin #5)] ≥ 0
                  + F[(Basin #5, Basin #2)] ≥ 0
                    F[(TabulatedRatingCurve #7, Terminal #10)] ≥ 0
                  - F[(UserDemand #13, Terminal #10)] ≥ 0
                  - F[(Basin #12, UserDemand #13)] ≥ 0
                  - F_basin_in[Basin #2] ≥ 0
                  - F_basin_in[Basin #12] ≥ 0
                  + F[(TabulatedRatingCurve #7, Basin #12)] ≥ 0
                    F_basin_in[Basin #5] ≥ 0
                  - F_basin_out[Basin #2] ≥ 0
                  - F_basin_out[Basin #12] ≥ 0
                  + F_basin_in[Basin #12] ≥ 0
                  + F_basin_in[Basin #2] ≥ 0
                    F_basin_out[Basin #5] ≥ 0
                  + F_basin_out[Basin #12] ≥ 0
                  + F_basin_out[Basin #2] ≥ 0
                    source[(FlowBoundary #1, Basin #2)] : F[(FlowBoundary #1, Basin #2)] ≤ 1
                  + F[(UserDemand #13, Terminal #10)] ≤ 0
                    F[(UserDemand #3, Basin #2)] ≤ 0
                    F[(UserDemand #6, Basin #5)] ≤ 0
                  - F[(UserDemand #13, Terminal #10)] ≤ 0
                  - fractional_flow[(TabulatedRatingCurve #7, Basin #12)] : F[(TabulatedRatingCurve #7, Basin #12)] - 0.4 F[(Basin #5, TabulatedRatingCurve #7)] ≤ 0
                  - basin_outflow[Basin #2] : F_basin_out[Basin #2] ≤ 0
                  - basin_outflow[Basin #12] : F_basin_out[Basin #12] ≤ 0
                  + fractional_flow[(TabulatedRatingCurve #7, Basin #12)] : -0.4 F[(Basin #5, TabulatedRatingCurve #7)] + F[(TabulatedRatingCurve #7, Basin #12)] ≤ 0
                    basin_outflow[Basin #5] : F_basin_out[Basin #5] ≤ 0
                  - flow_conservation_basin[Basin #2] : -F[(UserDemand #3, Basin #2)] - F[(FlowBoundary #1, Basin #2)] + F[(Basin #2, Basin #5)] - F[(Basin #5, Basin #2)] + F[(Basin #2, UserDemand #3)] + F_basin_in[Basin #2] - F_basin_out[Basin #2] = 0
                  - flow_conservation_basin[Basin #12] : -F[(TabulatedRatingCurve #7, Basin #12)] + F[(Basin #12, UserDemand #13)] + F_basin_in[Basin #12] - F_basin_out[Basin #12] = 0
                  - flow_conservation_basin[Basin #5] : F[(Basin #5, UserDemand #6)] - F[(Basin #2, Basin #5)] + F[(Basin #5, Basin #2)] + F[(Basin #5, TabulatedRatingCurve #7)] - F[(UserDemand #6, Basin #5)] + F_basin_in[Basin #5] - F_basin_out[Basin #5] = 0
                  + basin_outflow[Basin #12] : F_basin_out[Basin #12] ≤ 0
                  + basin_outflow[Basin #2] : F_basin_out[Basin #2] ≤ 0
                  + flow_conservation_basin[Basin #5] : F[(Basin #5, UserDemand #6)] + F[(Basin #5, TabulatedRatingCurve #7)] - F[(Basin #2, Basin #5)] - F[(UserDemand #6, Basin #5)] + F[(Basin #5, Basin #2)] + F_basin_in[Basin #5] - F_basin_out[Basin #5] = 0
                  + flow_conservation_basin[Basin #12] : F[(Basin #12, UserDemand #13)] - F[(TabulatedRatingCurve #7, Basin #12)] + F_basin_in[Basin #12] - F_basin_out[Basin #12] = 0
                  + flow_conservation_basin[Basin #2] : -F[(FlowBoundary #1, Basin #2)] - F[(UserDemand #3, Basin #2)] + F[(Basin #2, Basin #5)] + F[(Basin #2, UserDemand #3)] - F[(Basin #5, Basin #2)] + F_basin_in[Basin #2] - F_basin_out[Basin #2] = 0
                   
                  diff --git a/core/equations.html b/core/equations.html index 2973ff802..be14643b6 100644 --- a/core/equations.html +++ b/core/equations.html @@ -427,7 +427,7 @@

                  Here \(p > 0\) is the threshold value which determines the interval \([0,p]\) of the smooth transition between \(0\) and \(1\), see the plot below.

                  -
                  +
                  Code
                  import numpy as np
                  @@ -475,7 +475,7 @@ 

                  diff --git a/core/usage.html b/core/usage.html index 65684b556..83cc801b0 100644 --- a/core/usage.html +++ b/core/usage.html @@ -2082,11 +2082,14 @@

                  20 Results

                  20.1 Basin - basin.arrow

                  The Basin table contains:

                    -
                  • Results of the storage and level of each basin, which are instantaneous values;
                  • -
                  • Results of the vertical fluxes on each basin, which are mean values over the saveat intervals. In the time column the start of the period is indicated.
                  • -
                  • The final state of the model is not part of this file, and will be placed in a separate output state file in the future.
                  • +
                  • Results of the storage and level of each Basin, which are instantaneous values;
                  • +
                  • Results of the fluxes on each Basin, which are mean values over the saveat intervals. In the time column the start of the period is indicated.
                  • +
                  • The initial condition is written to the file, but the final state is not. It will be placed in a separate output state file in the future.
                  • +
                  • The inflow_rate and outflow_rate are the sum of the flows from other nodes into and out of the Basin respectively. The actual flows determine in which term they are counted, not the edge direction.
                  • +
                  • The storage_rate is flow that adds to the storage in the Basin, increasing the water level. In the equations below this number is split out into two non-negative numbers, storage_increase and storage_decrease.
                  • +
                  • The balance_error is the difference of all Basin inflows (total_inflow) and outflows (total_outflow), that is (inflow_rate + precipitation + drainage - storage_increase) - (outflow_rate + evaporation + infiltration - storage_decrease). It can be used to check if the numerical error when solving the water balance is sufficiently small.
                  • +
                  • The relative_error is the fraction of the balance_error over the mean of the total_inflow and total_outflow.
                  -

                  The initial condition is also written to the file.

                  @@ -2117,25 +2120,50 @@

                  \(m\)

                  - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + +
                  precipitationinflow_rate Float64 \(m^3 s^{-1}\)
                  evaporationoutflow_rate Float64 \(m^3 s^{-1}\)
                  drainagestorage_rateFloat64\(m^3 s^{-1}\)
                  precipitationFloat64\(m^3 s^{-1}\)
                  evaporation Float64 \(m^3 s^{-1}\)
                  drainageFloat64\(m^3 s^{-1}\)
                  infiltration Float64 \(m^3 s^{-1}\)
                  balance_errorFloat64\(m^3 s^{-1}\)
                  relative_errorFloat64-

                  The table is sorted by time, and per time it is sorted by node_id.

                  diff --git a/core/validation.html b/core/validation.html index ec480245a..3896a15da 100644 --- a/core/validation.html +++ b/core/validation.html @@ -262,7 +262,7 @@

                  Validation

                  1 Connectivity

                  In the table below, each column shows which node types are allowed to be downstream (or ‘down-control’) of the node type at the top of the column.

                  -
                  +
                  Code
                  using Ribasim
                  @@ -546,7 +546,7 @@ 

                  1 Connectivity

                  2 Neighbor amounts

                  The table below shows for each node type between which bounds the amount of in- and outneighbors must be, for both flow and control edges.

                  -
                  +
                  Code
                  flow_in_min = Vector{String}()
                  diff --git a/python/examples_files/figure-html/cell-59-output-1.png b/python/examples_files/figure-html/cell-59-output-1.png
                  index ce06f995b0f9a47397e02b58530cbe6bd888e23e..9f7e6fea8a2550799022a9ea01ce0dcdb9632493 100644
                  GIT binary patch
                  literal 155749
                  zcmeFZbySsY*Dbzn1%U@86ckiI8kBAn1f;u5LAtxc08|7N3F+>XZbYOdB&AV=O?OCa
                  zIO`Uk=X>Apd(Us2|9)efaTq!T+53*`T5GO3=UVrEB_|_>gGGXcLZNWPA3jh(q0Zu?
                  zP^W^M)a(_l4DFpB+Zv#xAKP1-TiKhN=-qHMu(dO>vSelAVq#^u
                  zVQg=2ZO6mRZ1K+vn5=A#n46~66yYEjtRJe|p-|WTkiRE_rdAD5Cr~Ky2lthnqZdY<
                  zoC&7J8du#4XWzc~OTxIDkw$`0>GVaKTUd18ed5KE2Lr{=ZCWY8@}i3s`1!+QaA{IdW+3evnEj}zI!ISfuZ!OJmFWl
                  ztRMMI*O#{)3Yzt%zw47np{8C4kf8Oyez@DQEvuy!-DflLbUz0dHL=fb+WT;Cdzrb{
                  zvT#r-MS{@B&yW7rEg@oU`*#|pmN~fBdD1mYE!Vcu6tI-C!66~ZJPva-^z@R!N|lZl
                  z4NXlwX_e}5#I40)YH`<}uc(!BG}tBAQK+itrJIv2EiI9JE(OV~wUWOTZ1l%#JUYlH
                  zHH%GCG_9)py7}(8tbdiIMWyIn@l{Y%42_J;toOq+8!oZfoy*Fj6#w?^o9o2Wb8NQ1
                  z9>Qg5k`ka$A+6ML?mzc`+z$>UX>Q)UpI5yVDX{bFazjG{?d{u*pLunB>fY93Pp9BvwpGoJs94}N`4}Dt2AT6H)N3I@+)wXq^bI~W
                  zX<65uArbVf>d#hBa^0L0=dmmPoKrfM`JP%|l2XXYlP9A&V*>*M`kcl+RDU{Ba>t1!i3UVl_!BetTa=EbVl$Q9yMO(%Wd+mSh9X^3_4tn$E
                  zB4)exFqE<{Ls4wB(rG~3X*4B1{)TvW6SFIuZp=X
                  z9hn>w62f9(h3<%PT`EW0Z}zFu^YCcE>SbyaXEIgH+#2=R9*q?6aD9jIP*Dl1IoLJh
                  zKlnXaF&$~9l%>Lm-bJnlIbpdSnvR({uNlJ$IftyF;AwHwk+P44oy@=UXnY?V*F8J)
                  zIv_xKeY%~Hj4b!<+rQY&zsos|*!WGiM^V?`k-$WLjpCH8cHLBf*dVxeE!!7|bgpFB
                  zvgc=mzhpHI%DcEVi(FP*{9Cg4d;6(S)lAU<608dsbk+04J+u^6wZRvP|ZZkHzd
                  z=1KyR*$_im=g-S+&h*g*jn4@{O?C2~!}dW(SSpl-=FkGvexh)cdjPeL0VW
                  z3le`%o+LwFr+n0Jnw$BSWZ)@{3crXV%X?h!>q{vd{86vrHA~K3kk@{Fxn*Cba=_QG
                  zQsHeFxI9r<#h5mt&E@GRD-M|$9_3#L751|~wH%knsvAGt)xRhxSbM9K6V8OL5Io#3
                  zl&^GLycKTIpB-T{)0J>*yV{_Qh=P(b`3w3+OWA58X+UyvvYu|`z5ywRx$zT2Lz3-L
                  zC*6<3Rr9%(Z=$24^-5hfX5=SZ>GK$DNnvlVz&d_(TGlbr3}@1QJ$f7UX}vv?y=|xb
                  zuvbx*dw6ei9&N5$Y^wZmm_~XW?g9(V^6}%x2FvBCa9s{q7yrdQh{VSXYWeYB(BTmg
                  zCKs==e90ePq}uv+_wHSvenFSDWPE&l`AmTt?MlbSy65M#r)iv}l)D909hXK-iY$gp
                  zzBuqYE*M`Ea4-8lK*`A1KGT<_`f>OwfWy0(7z>`;Cs0ZPOEXQKOG$^nC-IU@dQwHU
                  z@FA=lE0=3D7dXaU=NTz(+=y4gj1A~|EwV_8A9e`Da_wCwL`E
                  zEXc7$I!>Va%i>9+$=LJWL8Ne*>jka7y-LXD&5e{7nnW11g=IJ`kF_>8zomq0mj!gO
                  zj(u9|vFFIBRVJ5_k)cs!{4Tflz!kGnkJpiP?e*Hh-m=-xFR!q0aaHnks(T9zB&VjP
                  zOd4JjYE-)xQ<{8!alv%3AZ4h;B8!aQb!KC>$8@+PM^8@=sacC7<%)$yohqWDz7UWp
                  zPfwjAa@o3XYMRNy!h%%URB6&;(>@8v6-8s?^x*gJi)|)FJq|J3t?li7hX>n&2!>0B
                  zGljqEEgfxaZZ3TP~^U2i`ifA3{D;_G@4&)V;(5%6qvUq
                  zot>SX8>_A?F(14ozP7&JgTpxz4;8hovs1PfvlUf?+0qOk7u4bA=B6?{34j(Pu-m-D
                  z<@NiNH~>apmCHJ1%+=dJ76huQ_%?eLT_*!LqkE7NZdoyVyDwc{7%Kb#?14SRXbhK)
                  z5MXqrVP|X(aEOW#Y~GZzcl<+mXQhES{~1Xdl2V!S_-NEK~offfPyk!
                  zxQ=VaP?1RzfKR4rU#5h#bYB>w=EkVgI4uQ*@O*#HpR0#s(6X`h7R8`r-DGHKXWdwU?3->t~{hY)h9wfk%S
                  zP%x7>=LfO?2z*LH!^6`M_Fx~1E*{Xy>WJZ`zjH@Uv&8%xglSF$t5K$5dnA?NDU@2<
                  zDCRdnO>d=>)#6~G7;K3gB)@X0rS^4h+XvW03|){mp)oNz06FwfH=vl^OR!*o*gAyD
                  z9@CSfQQVE3VrIrzy!+K<>J4<9*Bty+fuJxMO_h!^?M@b#kdWwxaHkW8A71(5Ue_=d
                  z4A*v4f7huG(H6<$kh$PkX<7E;Y_Y|#%83&vhCb^1Wvb-NX?2W_Pj#ZdCwc5`MY5R$
                  z11#mhwMqmJ6`Q41E>&c8dFIya&IwuI3GU|$?5_x;He<0v@|%
                  ze3L%{ILEA+F5}}rPEJd!92u)U*knfAzI*qsQC1M6WE=rUyCN?ypUTQ!cIgDFY8YZ5
                  zCT1A-rR6RJrNKiMAz|SFsNA^0UNVwQy#sbyo?pp+Uc4439LI|PyOn~qr5
                  z<8*igkaFfW8*~at7El5jHNxG`Xc>KZi7yHn)iwoWfedYn+1qw1uXY-9X)2eJlY6@g
                  z_)er@2wYDTjxXJGTI&@G6&h5zyZX$-{$T4Y4vCU6+f%4w`d#t&Q)@OqJw4@9;F5HTwl5OhF5P!)1^iWEQjd9YN>kS}P
                  z-9{|F>aB@u@()l|pLPiFFV?%StaJ(EMNH$6a(v}pUMwAFa^y{ujdOI=gCf)j(TL5c
                  zxZ-`2k8fnE?#<)q*##`mtKm#kRIma2;4p*DVojT%p98BL0+o<9v=r;v+7?62ve7m(B{{Fo_5{Bgq?_~wljU(El
                  zIC*P(hZY?t{m4COY~7aLMn;uf|&JALFsxqxd$lk)+TMt??K`72(b}`tZ6e?Ut4>Vt6j+xjsX@5=Yn|R
                  zkzL?bMQc7dfAJ#Q0f4>T*x{hWy7rhh>}`2c%SoMWt;UV<{K86>!e)
                  zn6PBa(Ta|?hXc9VS=rgymj+x`8;Jd{*JS9{dNxdhDv4!bWu=O_nmf@*YQ%F5APDDb6SENA>gn#mLMtM)-m>_UuFir3ZEk?=a2ziZpw
                  z+vD})dYcT;OjMDuvbS8jY);B$9iLmhHDvn`Q%a|t$rW_<=j3ED@TF4oZBR|`DSckN
                  zFy5H?*1%*|I=uONGDwnV{m^X-Cpa9qDQHB=U=j}V^!v}x5|-x>F>0iH9Uh=BUq{IW
                  zwic3m?M#Im6b@>26b_oZ!uK&fxw{klH(l5K7)w51cN$56H
                  zv*}P##=4D=kkBjc>$rX;mZO@D6fK4GTXM}a0
                  z&#SHZj?s4h;nUI71frI$c0%n<>8PXTs~td-tf{u}@Um;DPlb%?1z&ca+X6~~KwlJU
                  zD>CU3g^Cmbk^~R4HEcChVBilbRGrBMYfE*s!hwEO=LGzt2og*tmM;U&Z48G`71)H0
                  zauOhejnZTx@lB{b*p>9!U-d&?11t@A6*n3^K7TLRap8MHV*qK~zyVYOq@0Nd^EfV~
                  zudJ+G8sOe@&WL}OXA>vjA;EVr2kfYFf)S;sKxk~NW~
                  z$XnM^VTgkBVBv>A+ys&f<^t+wfkX&S&dz4Y(XAaTAAzE$vEYbA4I(#y0MWZyPaFcm
                  z#rLGi@{$wp|EzRbH$+bYmht9E(B$mXxydt?O+3>>6Ej$b7z`E_72OJ#1Z_p1SCxn;
                  zn*F=up}&6p(nAjbzXGK~>ll%re+NBTXeB`v!(GU#TSrdx+O~mEHKgn!uzx~6ijQTi
                  z9p^4yi8qRMX)N#f)$+cLO1ADG6POYelNB(`Ol5jBF*=6ViKq4}`qwXGP@El80NqYH
                  zgOG}wAY>qJOn9s(?q&4TW&|+@JZqAqSIMSXkMJ}iXSR_-p~jM`c2~PSw*cxDU@=4O
                  zQ>}IKU#@&*?VN#~52pkrDh?6bhtNwXnpptGrah?vAiX7uLz`dv@1efFpwO){^uda6dfH)z{v?ExTc**qpD?d2Ed8fm-XZ$lFu}BbgetT;g-<=SkySS4a2m>g{M>VYRZLs~
                  zOr0W-PLQoR%~OgB3UoAsSI;zsFtuOBLc0;2LdCDqbDjPSoIHlpkYTZ6O8xQ
                  zYmzkJzfH4v2*=e6H4@YrT7C|pGbbPlYuoeorZC%+=D)7`Ccx^LO|^#Z{`6;#uE%Fm
                  zFL?0$99};xh{haxf@x`=X*pLv$PS;7aO#>yCRmP;HtpP2S=mik2I{ypSoK#=2rNP2
                  zvJ=3?#_kDK)tQZE;u3gV7q#z_2tHZE&hNT&n1q2r
                  zl?zstJWz8k^kz7trb_B#4~Z<0LLE({oR$nWF7sTKEUq+i2lW85YoO(x
                  z0@^Z`c;6_m4Pth#Dgxbe%TJksG4KN5O{kNgjy2oUpFj&6cFHC&f4$Z#9JFtt3O5FO
                  z192gt?oIOP9|E`G#5t!V57rGrP|%-aYV+8@pZento;rt1K$6)?7)WegLvsryV7@q1
                  z4B-}LxBE?u+`;idcSP2uHLK*J$Mt6|prj>IR7ls!6emaF!cXFrPRmTo4{w7qC|+L;
                  z*Y#BYxwek(WbWibq5KK?+-$&bW4V~5bV%kpb5q>Nmp)p+qhi=j+pe9xqp2;7k$yG%
                  zfRJ8=t1~1I
                  zr<;Ic$z-z!zmv*;RQK$XANj-w6pAixZK>%pxV*4XdaV1v%sN=dL3v_r)}`1qU3cR0
                  z$8&LU>4>_7rkC_`$vvjh3WITbP?471_knQ64Xg-(2boHL6~tMVUbvw3gg2-fr;fc-
                  zl;A0M0zSXDti?E@aiS0-(F-%Ln`-d6zMhbjbUvC43}*;iiDFDE$CyrC8_{}`lp_^5
                  zf?e}+_)BGzxM=AZ&)+}JAzo{Vw!G?J6?*ryjVGBM>U39iKD6nRup23)zD
                  zsMN%A#%e>YTRj}i+#tTSmv*}?)Nu?w5s^mZtbYuEx!!m7)1txT9vkxS<}Jr-M(u^p
                  zqdvJ3_660#DMdV&IW7t_*ZfYjs{rO@S$^)`!-p?TDi|l(F!vL-YY=kC(i5t(6{J9U5EA&oTOYCJ1hP1-}Ktj>ci(ySyLn^R!VRgh6On*lqC&;2QR`
                  zDdAzRqfqzKJu$n%$v`8*CBKzF`tfM(R}08=g#_kQplEaBwY8p@O;vHDMoq+gRyWpU
                  z)GX-*twt3?%d;`p*S1mLHppQ)qBbMx1Y|14=v1!SN91Zf6E=}j4j5nt{5fS#7#nvd
                  zA3V%U;a&?Ln|ia=S;f1-{OB#WGqU)epU^x7P?IAou=4;Cik40EV{L7%Xy7%Ip^~gD
                  z(u3W3=22kutt~CIcga!lKb0N`LK9~LtZy^Oai7ez_+T9W365TyL{-aiEY9Dl5rU=m+ptLgX>NgVXO&)?;5si-`+jkrjs|n$qH_fJVNpzqZ5Jt!S4*Vy?_W%6(bCDfd#sjlC0FI7=
                  zKM^B>l{5a#HR)Y%n5#E}Yxb6SF+1ou9xz@JzPdT{t==W>HLTRE*Wq5=HC(@g%{;GJ
                  za4yoj+)>`I<*m=ZK%|k>{E#^Z(jjn#L&pr$Iqy{Qg0QLY#p7T9$_j0R3fHZLjP!Jx
                  z>s;3Nz>|^_5_(42Vp%$$6eOSkR=<|zGB|5}05Y2ZYIC5Qkq!+a3$maum#JBrYinx@
                  zVpjkI_8mfh!R1awjG%JQ1Du=VF6isx-Cz$95EG|?3!VXv|4^-0Ez+c*qNJpOMh2*s
                  zesBup7VH-Kvch#dHkHMVI>x{rh+?W-VCiWm#@6xpi-;)I2b*}VVm`O$Tawr&m|&UU
                  zFe3}@0R0fCp1ZTupc2y&4hz-?m_8{GSBSGW?zxwQU$wA?=6#{f_8Tci83+zJJkWt^H>5s%awYj(C4pUr(fT2Jv_h!Cj*lq
                  zcEts{(+4~=8?u{@lT&rveLWzO(<*n^vQiqrO+imDk%(C*8)yhU3yT7nc4p-l9WIdT
                  zp;nwB{Mjf&XLX_H^9G1cKNqwQGqyfD%&R1U^`A242?(QYnFiK#hXLHS=7In?GfP^I
                  z5M@+`Uv*1B2Qi_+Qz`g@?gG0-zcZF!)Z9F~&;opMbW!ay6(}@X0vsGA%~Ozf5?_CV
                  zT)5)4z2qR{G~1o>1#=3;R}cK;$G&^%pm`(UbZb=rIA1)a_yhz`qQR@V16ABZ%w&(g
                  z{>~dPhg-n+U?}N){rWWv5rdkX-t@+X{p8bgWOw%W_a*omXF$~^Y_hVl21Hp_WPINQ
                  zSk*KCo?mwbnhAv#yBo72h855^^&gF;UtL{ogwm@!H<<#MLhQoexVvF8iP#a27>Kj+
                  z=8g`gp1T)N@%tf0f}W1#NY5q-Xzy_!0}y1+3e2o(vKaYpUY>NRdL;}H2x4DWZM*vEwN-LC3St(8Cy0&f0pZEokPqM1TsGP$i
                  z>qUfPety1!1v*%g=^OlSDwvC2f7)n}Xv%py+JLMOCd$yRvj?Nb7z|_(>yocHT?&K%
                  z?l!?fGieQ>MH-6)`1lE*J|V7fT5CwMd}j
                  zQ;4Pm(q-yYSAbST8vhQn-6CKW^n!;AiM@QOl(U=%u*=A46K%NPFYp-~h=y5L$gnVt4^pSw#`900lDdR!{@j
                  z?U^9yj60&a=LQSY5THPoE>Bk%fj;Ppu$lEUgd6#sL}kmr!~8Y~*G`3$n*rxv5oop&
                  z6qGY(&SZdeMYan3>SQr;kKU;Y#D056A;zZPc#$9R+n~9Mbh^F0QE;hnP7S1q1=9yv
                  za4Bt5Z(r=p4dmrXM{$_^YJP{boj?Xg*YB4}y10i6j_c!zn~qi#uRB-*ltC?$U^nlA
                  z?aKxNVg_4|Kp|pXKpk%$AJ>I#SB2`v22KDhgd_|L(ApC|xDRGf6yhbN#kxv>to;ZM
                  zI3dIdG-u|Za1B5T^#P4ksAak*Z|++c!~V~7%wxoaKK{~5eEIjcsQ;ty*D`KBdwd0Y
                  zYEeKy69DY8K$T!&VFkAvzHc||ffmz9MJ;$N^WfSlfu%us{dx}4V298h(6S2vI+G!I
                  z@Vh=|?-UAUxPd{Te&g;`V+mLzgHe#7jRcY
                  z8n@4$KX({32v>echC;dHdkCUXHP1cCQQm7m6h&S60UxM&C5iv2zU?j_-KOzwf@S6ojM$CYKf`USCq6ju}k>Hg00LCUj&ucvZhBP`(
                  z{M$vU-g@EVlL0($sv-!QOmkrAA}uhGo~?DKQ7EFsWjM7{*YYWpoPhgWW9t+nln-RI
                  zff9^e%Wf!frZ%@wD7n~~y%VUF>l=G0l&%PVT>yvq_xKktPK(poZwW&)kMJD~fpGuV
                  z!Q4Y-ag3D4Jogqk(UZ_>G=p}8E7WqtZBI!~rh$GK;D{m=3O#-Osb$@*a6wwyjAobe
                  z@^T*gnYW0EK}N!7%
                  zn(TrtOelp#NWaWAgIyl8)t5M+RsN
                  z4O5XtfO;btjBEhd#p;BFC{)>hZNNlU*`>MwxculKaQinJh;?UxAKH{4=%wqi8ERQR
                  zMTE4?fG_vI#HZ-3aF|zErnr0e<98Rxy!ZC03NR;ATp)M>buT3>IyxK1MIHu&-eZ(G
                  zwd;wx=aM*{r$v`I9u9l+DO|a~ChpcVQg}z-&Tp6$V7o5$3p{G*&P7A*XAnn*o?7ki
                  z;a|O~o;d|2NM+6dZvWL?>l`sy!E~C9z5cA1p1Q~$M$1R+9<;vyf(??PXXp2jSstTp
                  zIpAiNL?~TwGLjY}b|)YQ?*9|Lzv*6|w?sHC7df#Lhj+W7osR7XuTl#XYQp8eMGojA
                  zw7WYfo?GEybAdw>OnKMyCJIIN238z3e!mtEwW3UbKZ0l^1okLRz&R0N+J<^d%g?VJ
                  z+{(uR0h!MC?}u$C^V+u&?*^+F27jW3*1`CW^*V474<5A~09RfEv
                  zeF9a}JU)jav;ZSL_3nkq$;p@?PN)qK(P(=R63Vrn9_S4KmtL4v5?6pQ{rU4Jmc=2=
                  z8}vbwCmmKV1EeWJh?i>iEJZ{`P2ot$QUe^`{xhhCs4XW!5l9`>KM9H2F1+gdSnYb^
                  zEe9BNLP~pI0qD2Zwz4
                  zptcYY3w@GTox24|uwBk{0_e7ms6EWS$2$D~va-4$`f5k|wFjc2bC3qT;L#(JPeeq7
                  z_Qs8SP-)@zFbD-jno2f%2oB_*{pTVl%-okGPFty{(<`G;+dm4)&a8UEK^xJ09gS`$
                  zQB|4-m}s;Fyyxg^;*!Y!`yQ6!|F?ArhDs(Ukh`-$GMM$9N?cQ~v`ouzN!O0uvYiWU
                  zKR)fjK0SArDZF}pp0}9MCdzJiJxXvOMLwKJW2y7K*W8kb6K@)GhUcs45tgPYj;4J+
                  zQQd|8&)k@w%FJ_t*vr=C=51FQrF;0&;2=}ntI=z#(e7yO6FX-;I3GS$KGjy#5&BJa
                  z?p29wS@d?76CN!;b@f+nQ{Ud+TK$7X+cEmuszgEA1NCVOiSBa)Uh$bvm9dKtorb-N
                  zjXM+VhNjc$#WD=q!+eIkxYzv0##XktE!LO(msOTitFep8rFk>Ga`(~P7Cov5adRp;
                  zS(Qu`l8Z^haXmFBJ`G5D7^e%JdY&D4LW$?Z)+23O5ncz+wfkV_!^Eo2(_1jE>rMRK
                  z)i!G(!eB3$K%1)K`(jLofcEsY&CGs!+p#f4x8kWU<%D0Z`PLh_3Aujewqj+c?lW+c
                  zP-*41D%5o43||~{8AMk}>+X0B+3NY%jBe*taLiSf-H%}fd;Nj4qU7a0x+L;fyJ4A?_Nj6`ZLMd~ZHuK?H!6nwqIe|b*
                  z_>@W}KZLb=>5^Z(lKb3@L*x3n6=P(?6opcv!>vyk5rX-!`Bb^R*l{X_YhEbk)``*=`Prg#s1#X(GrokTvK>b^c2IoL7M${mvGd3;4gyYC|wr~JXudwheW1uCFf=l_)Q4z5rC3WaI>oSc*Yr4?5v4t
                  z3Md#_ruKaURz;=6UXi-wv8+7GyQVDig6*BsZ%UtMoVqgHGrOKx-pomV81*N8sXdQK
                  z8KXEynY5|o*>Tc?9L<^v5#8kj4HwZ^pIJDNfpVGyHb233iR;*2*)z<1ncC+B{T9v5
                  zxHR%U)y}HK?A{`*&htttN5SX(rlfc{)3a~aXXtYGrHzH4&bioz?U~XS;|vdBu%GX~
                  zzrZN_eh*$>LQhP=o-#e#_#KvFw?mTZ?XDX+A2t%M;fgi*ou<3`8fJ{)<)YiZqs0^b
                  zXIv{rd$8~>GP8Njx8%6444>PaSraR!HV8U%0T>1K#B|%eS#WIOYeN3y;!_gqS(Jy}
                  z9w$kcp7%ZmYn;YrsxGv`qi)f4Cp5lcEM;zwIC)hr9i$$HdqRgw%VPwfNj3q
                  zM~5>)>o^pOcN+O@tJxBb{klQ@!ye-I)U+nsC(J&dAc{ZQVzcky^>xjh^>CP1t;nr&
                  z$RyL!?s1bE=-bRK;UR%B@jC+oL|H#<4&{rxQd1qpbY2@)-_e+*E?d6je(EU5bf}xj
                  zlEt-e&-O$K^rf&f74v{(Sdlw%|31kbheV-Mb5TQf*P7TTU%hJ;?<}IZDrWXrQ`t`LBDm3$se}1^<^E(iQiA%igEMmUVBBZb{UJt==kd1SiBl8LTVvT+q;w><9GwP$=XDz
                  z5DT%t5_PouQqUg33uiQNEVOFX=6_DB6JpbF{{2pwO`chwz-b$QS);iAw+6x?Z^ItR
                  z(?PVF4B=F1TMUgdw5Y`QB`8ZCWG(t%VZtBtIlkWR<7L9l1akM#`0zZLpY&xe6iO6;EZ_rvOb)>o4SS5#9{mekK$Le
                  zomvQ>k#l6_*wr-Cgmx*5z^W(hu8)hlWhvD|u&l|C64pIK@p1mVp(eTsrLdFPP&n4r_Hs2H`JnZ)G=AteheOmi+bHboh$FO1$&mE
                  zfSWbKMmD!Ij&Aq%4Vs4^-#5{B>Gbr*#@an(^$U7iU#A?nqIG=PMK9yeBM{n$n`2?>
                  zW!2*rxjn!KTMub+S%X4hyOvGGvDP$o>nN1`A(TdrlRb`Dn@Xc6H!gMMleOaB{Jf5;
                  z!fpMlr%>MAugqPa?qb%j4w@@VEsDul_J4ji$tZCq`uJ{dWSA7EMs{1geztHwIN9`m
                  zAKT)t$?J=OMO;@Q_9-{>se#)NUy?*cLshb9kku;-h{4tD@-0SZ!YXJ
                  zP@E=k2l)9Pwv#&XWU)&ksIzM3RZ4kT?ij-3L%Qv{H@AFCLnES09N_VmiJPuLE{SP)M(jMW!c@o@0BiZnjSUny~RE#C@^tR;x<-w_Jr^Xmg;@9kGMA7hhA
                  zG}PNW-7MLkO)N@}c@Qj;;oY6^2boY*4A>H0e`!OqeC;jSeN_bQ+3KbXYjzQ&_7ZSM4aG`XW#>m_8JHAZo$lAC=wab*
                  zkYfZ;viO4=CpY)dtObLaABKXWN3wk=sMSKSXd=B@{GEf4VIeR+32Vk-3d{8KX#rS~
                  zbYrlhMskjW4q?*jfvoz(Xuz>uzqHLCIOLfQIsHV`r`?H>6DSz65R)K|l?;
                  zcV$s-pT>J0+2FXv4P)$r#hsI_m)r&dn?$DmE;bI*MF7kIsSHM@pAz4Gz_lr~BlD+>H{f
                  zQTB8IZ%kigij_b_>hI!O&EN|(&1tXC6G9L4F^|V?QLOu#c(M6l_Z-X)#7BciQ1b_K
                  zn|z!;{5Q;1It}LGQm@51ZA=kB
                  z#y|95hiow{oGr)gq)mP5(i{@g!s{@>ru+MZl}Ihzz{q9?mom16sj1yBDzkpmOBiCedaX31^BcBe#2i2Z#>EGiJZ^D&p2QX2p!Ff
                  z%;4wtC^Zz^O=M4)=t0aiq~8s_x3)VMtM}L1kcQ>(_B(J$epSIUV(cc}Ul#WOD05*`
                  zX|U_>z>^jr7ALMLKd5Df|Kg%3m_0MM-D$*zZdZMB#iV14f|}FpNAra_D6BrS6J|8G
                  z%D$D^Od`EoXt>D$S}=!ufUOeN<_NTN5IJg2NHzg~^_&Tg8M{=DX>kD$uD6}sku5o4
                  zbzC_55+jx$w%V2~kL)Fd$-Ytg%8I8+j4R;tiZjFCFHL#TB5-DydZi9joAEXgh(I<}q~@2NoGI4^wP-_KJ3yXY+sti+5)%D3Vl}
                  z=NoQDH&kCn;R!)*N-Un;>dDZ5HB@$BCf;~h%2Q<8Vw9f8R)8loa=PkQ)
                  zwRtU&IbnlTnV3wlxWt2z{v`OHba(FL-}(th=7dO-(-6+Rk~n#_iG4e-yrV?BrE=r@
                  zS`$*6v9|C^?p*io2IpMv>IRvh(BXAQ38?FiC09iwr>oiJKQh;5Hm4G+eZU=ibL&|Y
                  zGIjt~DxG7*%uFq_s^zytALzL%)g*u}Do;Sp1hXog4$d;vtTLuMbyFRG_|mVrcdkio
                  zqy>9}{(~n`S%4?$3`?#?(Lc#t689e&89G);gJovQj
                  zx;db_>E48fiDL$-^Umi0e#SbE%IWS5c@Ql>`fVY9lZ_T@?3E0^gY}Y=&z`~StbW;v
                  zynx262~43ep+`L{U9!8Ov2F%W(Gk9dtqCE92nZF)_sSm&bkRI@$SGGD?8H5c-e(tM
                  z7dA6(CKP6nI``*fH8+mf+I&(|tWw})Ss_21(Gb@~^pv2hq9d;=_h*l?k1P-eD5bam
                  zM%$cvDtCY8F++_6@h5E@@Nm=1BzwWLPihesj(zVNan6M^c?PT(>+^X|k5IsDGC)i?
                  zCDrZQbS%MlyHKBoSJZ=^ISZm<&79UOanxAur4<~KIW}}or?qHP&jW2LymOWAvH;qK
                  zW9%}j!*OLmI&!byjO7iRqT71oK<4&ue4>=k<(b)W>&M+E!t8%2o>!21w9&8GS@PKa
                  zMtxF7DMZeSKgZ4KMHIvI-i?JnX}bR@Qf`Ikh-iE|nPXPm|E1&dl+oUvnL4llA&fAi
                  z6moCvBGna{lAUgpgjIOY5(4Il&9q1Ovh?cwk4yoS{}-*llAr+I5H}?ldl)ye@ro(a
                  z^IgLq{%*pV4}+_VRL7D*peL|_9$2Z>4*-7TYsCP=v_M_io|}tPLB~>N`^F8bIG-%Q
                  z2ff3SM8_q}$9raBM4hg>%BCu+7<%SX22ws!)mzA0y&EjeJV_CfXgvm`F9S%Q-qXj)
                  zCS#hHLyPvjMKUI4kGU6BSlIj9VzKpeR{-CIp%h8}L-eSb->B@qqV!j&dw-;3y(Q+<
                  zcJCtFk$140iEJJsA5lkTMalRczoJ{oWSJq~T?uY=bt0bXN{FHGo0
                  z_%wtW;&V7qB8(IwmVno#>f{2u^x`b{Y9#lstK8SLre1a*`5LIuH;=E7tk$2uF2lQE
                  z?)GDR+wO|5#2_l)3L(jKT?=#r4Nr3
                  zCfTziov5UDm-x%fPGD!$kc>fG_k_Xo(0@^w3u*lpZsG-m#(#7{k^ZU#?9Jt)Nb{Ch
                  z0=u>=pWZj(e+R__(ZGTl3ddCcK=F&#V=e9MeN*+~x9h}Xk4=X|t0aRMy`+E_9x1LK
                  zxBZ8}bw>W3>nIr>=fx?oB=`q@a5u2MyjyI=RdS!g>k2IdQ{oc{rk?*CObG?YQ9<^3
                  z$!Oq3$K~Es6;j2$f>Ui99gR*$h!Fs78}E$Egd}pEy|Ig2xmRW1D98}0a{shCKJoL@
                  zd*|jCKa}=mYp@y(pLtB2zUo
                  zmR3I^e-nig!GDE#Qu?=e68Lx=Pjr`$#Pmc0)A`za2`3U%njkgFav^>yW)JFuPf9QH
                  zZXcviT^7v0O+bfp{9+%OC(%g09KHDG&nW%g6m<2!Iue?M*rBN7n_=0LT~s}^+MWNA
                  zf=7Rou?}IJpM;D45bKSQzlpVJ)6Y<%lxKZMIqyxpv;HNHB>#!`PsK@yulR&EUpgxK
                  zhB-Clyw^$L0uTu6h%MxQLO<{tmVE_6cXhscg
                  zL^8M$mjCWXWFMzRRkPw^tb)|@D~iLu`lM`Ye(!95aUX4VyY_NbvT1^}G*VAJ);=4j
                  z#62vaAZNmbo^sQ&{F$nUGsqF2M{1!Vfn|3=>OU)
                  zfX?HN+}dM1wiAw+D&eC)HrA_wuQw@vSzCuDF&`OjC>@$xG(yWxUb@A?W>G`qqZ_$3
                  zzvr?4#fk{H&RD7Y0wJa0(|lWrA{lb;j#oGwBx#PxfUF{-7(GUqCyRc5!a9CuU)8%^
                  zfz=}O61vo_dTI`{AL*}%QiMc~wY1KE6{`CkC43aJvWF{09M^}RXx{<6lqaz_PKjC~
                  zXQ1ust+DGgMXXl#1i71kpVmw}tN6BKEREpsxbBI~?qj`2U772=#HqQY@9N;Nn#3eX!g8IY(@!5H3!18*#R148Q!vZsp#t
                  zo};e8H}BDqhZzl)q7gh!VZV#zdM|gizsp{qv+vp<>rtji_Wk2FoCEs(A0p{*M{MQh
                  zF;`o5aFbO&l?5FWV4L}sV=m%-LQ#=J*IZh5fBAfq5PbJUp014aI1KI{cphLCozu7u
                  z`RdFCPduGimXUk-KPndQQK3U|HN*uDEG!o01i}LFJ-BC_e^!Pp59KDU=;kU@Wr%zA
                  zreFPId6qKlqr-bsnhdvCR2)X_ZLZ}p&->Tb9F@ku64-A!jDP=DuqX0i=zWiqNryhO
                  zMhMo@aZ<$V2JL5_tMRx;%_=Jq+=yY3p~ub6=YlDM6$1Ho(v0QHvTcT0dZvQzdWA%R
                  zk;ZU8$F`vN$^DZdQQ`B^9sg3DV94mGI{iVHuiH99%SiT$>Fj<6
                  z#@Nl8p92S$;FSR%ylsnK&F53DIolk?fdTdUz|0!TXj&bAOO$eCC?=FcN
                  z1EvnK#+AJL`qm7L>JqEI6hu*0kRR)t0|h
                  zC8gp|7oIa({*Z&`dHCt*s!zW-Yc>J4R{kGb>x@?t8XR(rpMvs$<}xkuPjEjJ(7uQXRR`T{NFY
                  z%XepF?jbDmDfXEz3C>YLHHG*L4|Hsw#@$(AD2ZyvHYUp1m!o(%U3!t@sA4Ta#j@Z1
                  zE{<7Qqz+zN_IqSpUm=3!@2^n#v{dsdp3#qgh6nEXm>y1CHyuq)qttw=;-|v6qr@AQ
                  zT|h^qbqv5xthc5Ix#)YaLI?-_obTFZRm%
                  zdHwOqAyod{gYdtFN{zt%qfj|>obJ(uIAWZ}&D}S7V(c`6iwuMa*ibo$zVuGS08rB8bX
                  zSN7x2eyaQ*vD5V@cD~UaXBnCbN|s_?TqamR(u;~5(%*=^JRZXVDh-Bgvjf30BSt**
                  ze+ric6t0dtmMX_Fz-0w(UBo(qW^cq$69PzhxkZ$hC)!yoE)t*p#4EyXm0Tms$M~l$
                  zv$EQ*!DR|%&;1x>y*1hV%~NUbDiS=wvn@f|GOm3+L-ywH9qLfbAxq&#un07qI6Ot&
                  z(%X1p1jb;e13*Lca*yuY)FSUB%WW=;EE91)(;^Rxt`B+0y*wkfQKsrY?V{KQU6@oZNM^N$o=^9W1(($;Va_
                  zz!b~IIqUrDeOjOza)_^^iaH8NpN~UKr$E5PvZ(vL0)xa9=`m8b2GqvY-gbyhrXCi^
                  zD6ObTd35+Fi{gY11?}dCK73UC=kJS-IL=Pbgig*y3>98)Vw?Pi-`dhzKohb3_hqOe
                  z#A%}79AeBn5PZr?PL9jxIf+tA_wIUx6V0b{VkuDhA`)hVlpo#2yk
                  z#ntydwIcmb3B+bECKspyRxMpb6S{p&Mf1Oap4&i1PVTbG%jURBLYIyT
                  zt<-Y=r6}4JuSLlg>tCp+s(3C-2p@aU1;fwCfG-ZYfEMyGRWKE5&JhKFU|`Z|Z0}`I
                  z&;Vkr^DdPMBOmaB4BWz}GQo#9%=Bwo^^KI3T*OF%{4yFOcmYwp)c>2E6e!O?myOjaqWM=k9oNSW+x<+k7u+-QWWE#!{9wDkUas^Cq)E=<8VDxF1)Jc9ll5*ZKoR-|6NsA
                  z@yX;_qSSTs|K7*ww-}a^mIkW-Ixw(bQI^{F
                  zMTee8-8%#0i{7n>*A5ao%j|h>>ei;%fY~oRiYaJ(UcN}yuDXk{C-ovn$#wnb1lsxE
                  z^*OGTTGYZbF1r)Y@sN*OLmqZUKC}R)1(8pgg5S&{577!9tm27x!{k0P?HQ6U0{)8t
                  zGM>r$dvC`~0WEH-To{_+G5FNL)nd_%sdN8q$24qC1-Ta~O71NpdY!0gDC1)@_=jzz
                  zSjny@L}xSj2fJ{@(fvKg3roQizPLT}O&F$OgKNFMB|U&oIxt&X=Up%GT5so^3I>83
                  zjZ9|7QUC=}tdRb%TH>cEPy{Z=E9R}e49}8a;*%)y%YTt%KZS1Wr##<3V!6;a5b4Hh
                  z8BD=^b89?I)x)T0809R?4HKmS6`q0~5=w&kUyIDLxx3i9Q%5Ncp`0t>=(5qypgj*`
                  z`3Q_!#@;RxO2l?4`*6_V-4bgv79~~fVejXg+7r(c-P01^WtKF
                  z8h0vfushQb!|cC8|6x!y^5{^w3uga0zAB7fAI4r8m&4jQY$ItRu<3d0(32t}yU#y*
                  zTV)PYGH;OP5Ef{D;I{iCRAIE=C!DuRem8!8yvHH;?b*W#*C=fA_Z(k;yX{W5C{&))
                  zV&~GyapWIvRC>;-P9or_C4OA_}X5vlrIN@Dtb_`NPosqX_hX)S^mijbSU6XU&Oy4^E
                  z;5!d16%rbn0*?Yn@UW^(BF(jF3uJhC^dmBH4c4`{-9V}%sq_rrec4=h1y0U#b^Tnj
                  zBvdU5{0tFWv0CQP>SbBJP-__&;MTQ)%E{xgknH(;>$3RHw(y;zAEgagarh}EAAy^7
                  zQpi0>zX#7b^yqqFsKk+vw@`-XsW0_IQH@2$b30^9u`5heI@L|plTyq%EN}R?wr6?@
                  za&M~nESy8}sqdXz?wXyXF1D%HLwW|&rc<18nWi~3+P#JTp{sQ8!H9&v;2F06#n_vN
                  zW8HRLz*kDC6q%JFQ^w3f5@`^UAw$U!Qb>|1Q>Y9j6p_p&LkLmGtP~f>&qLxZ3xbH$3CUobL2R
                  z^Batl&i|NuX!v^rsdKRLQM~}i$II!l+%)%+w@^)y&Xi&-j
                  zyh~Z33Ht9(3@wDUzXDG2j16l?C$M=kz1d5}E66}zHF%%$J3+MW#D6YWweiyzDv%}|
                  ziHc<#$M^KY)e^VhqpC))L^C})c9xU9Z;7!cjG(O!7Gje31mwh?1|vw%c7%{uoz738IJU(akL#l5%97yMmvYtu%8*5S<37^tkw
                  z$4fNo!x<0z*yli93_4jFkO?EysK9hiMw~NX1tuLvi%0c@Nj8|}?GiJu|Kv>b1|oMQ
                  z;*BW1hq}e^jKtKZ-EATymz;megQwK7RlHZq(T8PgroGTjP9@n{43ZFod=}@LtZ@w@c$I8n%ZN
                  zUg}_KTjD%6reakjIWzgO#V0Kh&Ac}7!<`z{rTKU7R!2jxWv0u^L|EDuWpnsi;wcpm
                  z3Ve)exf=DFtm4?1`RBmqv>WL-Kut867nUfw+CMGfyt{4PdGu<$3mQgqo_qX*FMax4
                  zfBXfXZhzk;C+~nf%*|nvu11!XoqgP+7(xV?gOo`b!Eg@xKXNHEW9=!p2DMO(JR|t0WAfr#I<*?xUTbo4foNCrAz2fh3m{1eTx2-^;np7Ws$A
                  zUiq%96O^uG;qYko!Y6N+tCZW!s?E^+QyYCbWEIx;)i7n%ss
                  ziy_Pn2s_XH?I0#~g1^8gN9+vaix={n-w4zG`c}gme*T+Es5on++u1p;s5XaWkYlrD
                  zI0T|_(hPY9wr?Q~j1X1f@ZiRboH|e0G)QM8M?GOnG
                  z3roZ#j#?-}3OzHk6^2*5izff{lFGX}0pTUv##vimU~4nHEL};IxCuG~{`IZ|GqpGL
                  zibzOFfYAY0zZUrkfAC4m-G!JYqnyVU-ZhXB~{|GOhS
                  z8elryUYwPB@%*Rb@_CD57P2{5G+|{z3enoyVEL{g89%P~(F(}46=q;Udy=R=-Kh-1
                  zY7G9?8f^9dH(~i6FM*bV&fUknR7AF4T!Umq@6gS;PSsV2w8Juq7hTqxe|f0!tFC$z
                  zS~(4!^r(!Oi$wiiuC~G8{>CR1RiRsnilaE-tF8X1J1srUA3!~s`A)Fr@%xvI`j7sp
                  zUAv_~!I4aAr<1y6nb69R?Uvh^zUkS9ldPNh^l$wsIf{?}L&3_n|L??~{%<3pJpItR
                  z!-Hid%jqd!6nGSNn7H>WX=~qEy#Vc1!=GEA@0n%^<+=w@lQSo13U7O3P+3Qoc&vu^gn^F1hPj
                  z4Th2z{Eu#u%w5TK|65uLQ2+g%`jaothxm!?$W*?skRZ>Ge)`&%hYddP6Se*4qS^0E
                  zM(!0~{{Zc?7qeUHA6(LXy6M2*2Sj^rQTE_ty*t{OA?fJ(Z#lL1kaA-%!k^3~=7Lm|
                  zJEVBKeuW=8BYWg|+BUsdJ^QSyh?-L1%HQ|ApF^r@@!&|v3$E?+OPaAY--T>l@*I^5
                  zQ6rU~Ct&w;L79JG_u`a;Bl#yoQ;YxN6SF?1`jjU?=2yQcch7k^yZ;V
                  zhALC(ZmsdXU{Pc`CpWc*B|yR98g^%sYW?-?J+x)sZtrdy|%{5xqO!g}$`
                  zq&Q_o)R}VEYMo5tCI(PdzAcs3;#l+R*jQVzdDP?}I5DpEy21aR0M8qRLqtw`kH9zL
                  z$7c=MZRZ*ibjl0VW@?|~70xCS2ZYPCF8OS;C`ey#F0>E`M{%Ek^1sWV1*13hYf74)
                  zr1Lb8d7{|dzyC{=rtM#dsQccqPR3*W
                  zzJSn9^aGshPG;|UySPCrRqYM4|v_}PIjXaUu~
                  zb!3h3ajB{}L$OTpd~}7~V5+W$)t~mDYPU)EGOO&K=;KMeryi^)HFT%76i#;j>Ge1-
                  zJq*9(aaNsA`rm7@8cS%m`r9j{mu(D5^(|sFc(94jIDFqU^$}$amKS^*Njpt$cYbvo
                  z+j2!MhtX2%h36P&M!Z;8+R1@`_4a_%g;s*S@Im%!7tah)`ka11!Dnn4S0{N@=oX4{
                  zo%Q<5eaCaHuRcz^9^Y7CFjto{KjNiul76Ik_B1Q80YOIW{&4$8)2%?-O*tEeUe&Te
                  zn^(}4r<{|+_4~9Etp?A@FaTJ2wp{)KPKR<35>tuZ^V^d2BI_e*#_jj-TgWl~ZMB!L
                  z>;Tbq`QsEj9ku2Vd9+{6-O$G1)A;>v)%cB%>5RS_3W0z&FYQJc{aC0k&z@E9=9#bTQFJ;mKi2RN2B*Id`Ua`
                  z_AfM}$nW@fMg9kjfH#0%wZ5-@khuE!R{PZllP(<)|>2aZF1%wyXhyiBjFF4VM52O*De`rTKgPZqubDNhpY}jxT|^>`is*7{{T=V
                  z3(?|cyI&VOKR4w`Sf#L;EWgZQ2~@iip!L{*wb3yu-c*Z*R9-MFVH%c@p8sO+kz4=1
                  zbp8JdlX8W}{|l3|VFn?;)Elil_w>uUjIZ%dDR8f;4WO_xa|$&38>AlwE-o!fWltZ<
                  zO>3)ZDs^1Z4lkfZgC{CJbE60Rd+u@sQ1E%_PQ4$0?sIRFSP(IH{)>^i`FjJ@{w`=4W%RY9
                  zzFbYS_H7B}CirL~jvfa*_mtW`Ui96*r}5{lZwFU@Ju59Y!LjN|h+dW5JK#R6|8vRN
                  zt2<(8J(D`$_lCVNWA36})itV(bSu#PMG
                  zH0#>^yILnA!p35btIC}-V!~xizPVIhJkRzDhRNl7||Zd5IT4@s~b8;!}2T
                  ze*ZCJvu$&>;|Cglck=e@c*Je*TGm0fO6qUG4_jLy`twKfm0zDkM20knIkueIb0{T8
                  z;}q*=W9~ou^(wJnNtgaccyIe>F5_nEU-vc3mi+hjPcbB4mrm_vKNt1EF42GpMRot)
                  z`BqyS$H$oJvbH{b#WD6s1{)6u4B-9huH3C?5j(egfbvp7(
                  z#1E4+V*iU$Ubz11f)DxOsALJsO#3yYm+b$3Ugf6O&1A>ugk9UzkBzOKco*lYQL-@f
                  zJkm-YI(9nmunMI0{;k}8qUB65jWZeyl7Ht*mu84u@kFoH<%YFx-FPac*f9oD`O?2j
                  z|M1^gR_?*ok$s_Z*ngItK>YOO_kEF!1>lZ_?k)Wn(N!e3{6FWGiQr07*PRtxQ*oEH
                  zsOI75p6e@tGh=q
                  zD*A8llMi=3D~cPLh)LZoD|qVQ{jFLU3IpNj*6TE#6Ple}`t0A@Z1%>*oH0diF8$wc
                  z6-_6|NzG2ZO3sUp?tBUc|81IACv@v1s7xItCm*gpq=3KMn}Mm*`lan9&mx-~f>S&6
                  zvE@$9x#w6AY`Y}u7vp3jJ*rn1ME_qN70Dw6S^=9`O*Ao8*qrBlI=!#_pzn5P71s|#
                  zZyJ>|HbWUu_3z>3eHfdVe`j~`x*cnhhr(Xa5?jVa@b6kAu?f6ku#DOt>-uT+8~%10
                  zy;UnkDN*{KccOIhrat}5YOj=FThvYxDeJBLw$**`4uz3cZKqF+f%9&%KU`d{}RUhNygXbrA!&bxC?bS~Zv
                  z-V}|FM~wac_YWPzxYe&L=an3Mj-rd5Q=?-t(nYL={D04z$MN)ZI|?c)Y6gP}$ylq}
                  zY=qPD(|q%_GF}A^xD__TTs9
                  z?VrZlTrL?qeEx*3@C+*1mwz)T^zrDo8y@C>9-39fxyJ0o3L+r7{OkCV*q*A!xz3;L
                  zJ#gVVw%&ge##9VZ=a*dv4oz)a-ICk>ZZQ%SgLSKVqe{x1)r}qW-$gw;Q_&?E8|vAy
                  z`mX*Nvy|WPZM}Z1F*Wkm>aB78_iBaSFxW&LuTx!p5{Wnn1zlsnO{hnp2XMC*o
                  za*33@mcTQJ_@8am=c!_;I8406-tKtr`
                  z_GKngGTJrs?t3e$1>8(=d{?Jr9^!ifZg=5WUb`bCS_++tV5U+CPYtKR1`c0e-yzJN
                  zYl7nscp?S5*6M_~I7B$yW`1OVTb%!6$DeTm4D9z@Sn@n%xuwz3Z+FV;-&;r%p8ItV
                  z-3$o$1Zln`F6Cf8Q1_wC2X)`T(=%eGuh$V$R5)e{0R;3i5}_HD3a%<)4M8xVRR}4^
                  zWJnCPT*c!c_~0ZDf03Dm5YvyzLzK~v|N9Dx&6`g^`IU~9)oAMVz)nK8!einZcPca`
                  zg{kz|T)Ni~GC84%@cYO&v`2y~@kcSBv}0V^_p=m|kSPJ1E=;x$0O_9k4Jx_-@V`(;
                  z$mr4+7%mqBsw?_cc^njHGw{428zA6NW>Qo*x4hYE@ylA09akZ}v_Y9?$@CZBFm{ITpX?
                  zJjs)66-Qe?WV4Sq?!MeUyCNI=TWw5UXSEXh0TYRaRrE<2CvO
                  z`G3})4v6;QrQ`K`wninVe^VJEuZ)(t?{XLMp?o*fhw7kDpFXW>IlmQVq@n5ch>40a
                  z$b^YrX8!lNUGber7
                  zo<~-;&9Mz>0H4XK%u8^<;7pSE&n3_AoJu!MBfi-k=S^ah&tf5wzCCB2D|vVaP*>op
                  zea{ylj@fsG|A7q;#OE~|&15=!*fDXy{UT+J<8cLpF+KT?0iOIZbb6LC
                  z*j#US#8&6=ku56cm!Cr&B*5@TYqt4^Dx$X*M?k7nt4m)wX=G+8NBthhCUNzYa|~Ax
                  zV^dfhfB=hd>8zQGHbla)L-oJeLs4t@i>;uw?E7=~H7(=qi}vb`9DAlqwtvbwQF9SX
                  zy-Nwdh;2OLu?Phxx`Gbiw=s9xUs#>^Uk^Rcv#Z{=bUWvpvH+{S@-vPFxa98BfKRnR
                  zYmYJ4BfN2{`=Rj3wJK});le%~|7Ujpxn7HrnX%t2vMgR*M`fE7-b*TQNoRBruWdIL
                  z4k0f@SPpOxMPDlYSQ9R|dA9@_pakBys$`~rb{}YJe{_0+iCeJI*89Rg;22&`(YQ#-
                  zH9ZPR3K?GTPM%moo(?WLURQF^o?KNj)xpGyLm^<}G-&uaxMA9XkagkahYT*XvISJJZK
                  zp;E0OLXyEtyGM&lSAX7geN^3ke=tQ*Xz1qm&->|&5k?%!?T++6gii@{
                  zx^5F{CPr>UNom?i0g!-c&bxS8{ekEKAj|p?8hQ#IFl*W$FFTvfC6m!K1%h
                  zw6dHR*-9#x&0durA^QP@^jq<}6Oe@CL?3~P;{N%u+z}Y<-F_Tw?xXUpL~}x
                  z`JALbbC3ICYoTg(nS8Hd-Z|U2`zw7KYW8HL59$_U3kAt+h^aL1AaRVx5{4b0W&zJG
                  z9>Pzmrp9d4ob)6RrYMj(d4kp>^bFjlrp+};FO{8JtOoiFq_#(WPnz7bmh^HXar}F$
                  zz7`EsB44MVpfI5hVq|x@A*(g{n2w|)4!bRB>Cdi*Pr;4=wnT{l;voNNb%ZYFrgU15o15dJUG2Y2LGfqpj
                  zxU^P>r(QE{X}r&`@0Nel!{ZKu3BYA3QqmDEb!dozk^Pw%UrN(SeI1!b>h1v#0RNqU
                  znV7xpn>;($4sc0J*GU@nKW*n@Ro|y`%?ee+YC^2YgQgY7(0l45j~-FV<4?Kaj3PT~
                  zxI7?lS86}~{;&^q#iB(0yA%F`;#df3tBK7M?y0Kx!ozI9uxS^-wWR%C?fJz
                  zlGW@_Hl=r#h2$NvnlNg<(^SM!`DQ?_qt5g}mi0z4vSW?>LskFd6Oq79D7x-Vzjz`~;487(A(w&V|4Zk+d2=ixcO4wlRc{qJK)n0%wM>4G7#S8HDewP!h9JObwvs#!dS2rY7XC2ImvldTq=7d6(u=+81!SY+
                  z3mSB!UKZjaMHxXZlwthCjpKk?jc=Pbfi$Hyw)kg|NWNb(!oHmyd^r-xGL55C#*_
                  zUPB8fHJDXy)e1*LL!>b;Ak>St1p@g;L!p7!&mtkeVzN9k2TleGz*NMFWOi%AxzXqK
                  zF(Zr~B~^jUT$llYW||72j7`Dr1z2vV3pa3jwuzZ>c
                  z#lwyc2lm3=(dhYQNS_ks0z_Z#A(Rd+8x#p?bEu-0(&Xo&;YZlaAzRdkaTBt7LgjbZ
                  zWMw`Ao)c<@D-Dkh5-Pcf6p7v4XNVYr`LAZeX=ZrfL|j(5U{V2pj$E9+)`!xMmr(@}
                  zdbdWNbN!o;-lBy|P;Q7*>#(gkWUxM5gh`ABo}XKfFC$?<1$(q;+XTZeI|SoL+5;(4Py0RaG?}
                  z9l{xp@M#8z&#X;vR>tf`_Vj$U*>kXsIVH9+H%(f!PNPpBs&{fs6Wfvd5Z-7Qvb1zU
                  ze2BIf*c-^c(pq)Cgt5KEJ)ckxHOEk6lEHpn-l|!cxdh_1Foy<0_LvDmXM6BgW5@4Z
                  zU%~$eK|#5wqXkT++lCsUrupqb{3nv>A}yffcLcne+lDJRlts}hjg>Wm=<*&o9r)-p@hWO|~5qgoZ$UuZ-Is6^F>!d24oPe&UCbm1kRiVY
                  zoBsW4*RBmBq@}CJ*rC&D2?_b^0+_>`VNvj0j4_6uWg$~&U~B8iJ~%pvLsHc62N%o-
                  zps1`6&_S3gY$^I`e6|widFIQDbB8m_&ed(_;^a)Ip6SJ!Ia6c(_Cmj^N@T}malrE{
                  zz?^q#9NtpKdaX$vtNZ2IW1G~&_`6As+!Jz8p`03hw
                  zR;j2!0~<+}?CQDk(DUCvjaMXg&n)9mwiH?@y>+>_p=&%PCdTG*|4+4`+FoIYWwqL)
                  zxuRmEhe84)<3&x0koTiruY&)YvPNb>^%*s=Ss8W6(Z+=L0>Ud(n6b%pY%ajPJ$&xM~Ghsr!&
                  zf_iat>ole0hHUPABA$q3WhisDu6}o<82+AG<)!ps+Y`gP1U1
                  z_2u%F2E9{K!&)zsIFuQ^v;^4~X|9WeJ=
                  zA?fa(*dLmRKDeG8;KI+@g#l}3QlEwkkQ9e_QY>~1ojM%9RDHhWid>iAHg0A}Z6w>F8C`3z{KnZA-9^8Fm5B8|6L$kkTk{FW6NnyG~8Gy+mZ&gl-sz)2nFD5UnOs9u7V%lac
                  z)h~F-2*Mds6WZ}znb6Z!32n(V8nHoAPy+p4J{2N&a2TDuPUzvnFzN88NC`*A-3Di&
                  z?Bu)*;lxZRG`?(@hidOUv{sF5ek{&`Dyfa9V<>zA!j42R3e_2X@T1?f+
                  zuRPV&b_-6uYB;Xe{M;gzvxV%vxWtKLjgS21I(PDFu%=dHgz#??xD#2n@^X>Z$PBO5
                  z(lYn2=)xoZ_rSv;r)q>Q0;iW~Zu^*ZXK?{HKL^LFwobEamIhx@yi*0kkHvbyj%oR8*UZIJL@?+zol;_{^9`74Alxm&ZhzG8n4PgTU^Yp?gwJ&^kG4vYewk+a7;YkeFH)km*GGu
                  zh`0uJobYD9xxA28lknu@@+8T}tEITw{<8;gRIhI4t^cOP4)p_6a>)ofs3Mds9mCmHNEBM1kJ
                  zbV7_ga|ficSA}7xH>@oF+S2#FwKl@gUL|{>zAUS}4gOg@9vyJu0j5hoC$gga8?`;g
                  z>=}v_uI!MsyqhRN9tcuj^!NUiXRYvtLlKo*eG$&Wb^W>&bDK(!kedu#&m!z=1Fi-U
                  z$A^l&D}$3&Y^}S>{K68XMNi;D7z;e1Dh|UO?stp(Ht!eyvGi?x+ypJ^1e5enc2&~?
                  z>7SP68QweREtbtWTrNeDL)e#0Oav70YQhz1+Tr`?^&Xtq1ZVnaC;{C<;6-U9;;n

                  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�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�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 diff --git a/python/test-models.html b/python/test-models.html index 733519cce..feefadd22 100644 --- a/python/test-models.html +++ b/python/test-models.html @@ -227,7 +227,7 @@

                  Test models

                  Ribasim developers use the following models in their testbench and in order to test new features.

                  -
                  +
                  Code
                  import ribasim_testmodels
                  diff --git a/search.json b/search.json
                  index e1acee0c1..a96c642ac 100644
                  --- a/search.json
                  +++ b/search.json
                  @@ -244,7 +244,7 @@
                       "href": "build/index.html#types",
                       "title": "1 API Reference",
                       "section": "1.2 Types",
                  -    "text": "1.2 Types\n# Ribasim.Allocation — Type.\nObject for all information about allocation allocationnetworkids: The unique sorted allocation network IDs allocation models: The allocation models for the main network and subnetworks corresponding to allocationnetworkids mainnetworkconnections: (fromid, toid) from the main network to the subnetwork per subnetwork priorities: All used priority values. subnetworkdemands: The demand of an edge from the main network to a subnetwork recorddemand: A record of demands and allocated flows for nodes that have these. record_flow: A record of all flows computed by allocation optimization, eventually saved to output file\nsource\n# Ribasim.AllocationModel — Type.\nStore information for a subnetwork used for allocation.\nallocationnetworkid: The ID of this allocation network capacity: The capacity per edge of the allocation network, as constrained by nodes that have a maxflowrate problem: The JuMP.jl model for solving the allocation problem Δt_allocation: The time interval between consecutive allocation solves\nsource\n# Ribasim.AllocationModel — Method.\nConstruct the JuMP.jl problem for allocation.\nInputs\nallocationnetworkid: the ID of this allocation network p: Ribasim problem parameters Δt_allocation: The timestep between successive allocation solves\nOutputs\nAn AllocationModel object.\nsource\n# Ribasim.Basin — Type.\nRequirements:\n\nMust be positive: precipitation, evaporation, infiltration, drainage\nIndex points to a Basin\nvolume, area, level must all be positive and monotonic increasing.\n\nType parameter C indicates the content backing the StructVector, which can be a NamedTuple of vectors or Arrow Tables, and is added to avoid type instabilities. The nodeid are Indices to support fast lookup of e.g. currentlevel using ID.\nif autodiff T = DiffCache{Vector{Float64}} else T = Vector{Float64} end\nsource\n# Ribasim.DiscreteControl — Type.\nnodeid: node ID of the DiscreteControl node; these are not unique but repeated by the amount of conditions of this DiscreteControl node listennodeid: the ID of the node being condition on variable: the name of the variable in the condition greaterthan: The threshold value in the condition conditionvalue: The current value of each condition controlstate: Dictionary: node ID => (control state, control state start) logic_mapping: Dictionary: (control node ID, truth state) => control state record: Namedtuple with discrete control information for results\nsource\n# Ribasim.EdgeMetadata — Type.\nType for storing metadata of edges in the graph: id: ID of the edge (only used for labeling flow output) type: type of the edge allocationnetworkidsource: ID of allocation network where this edge is a source (0 if not a source) fromid: the node ID of the source node toid: the node ID of the destination node allocationflow: whether this edge has a flow in an allocation network node_ids: if this edge has allocation flow, these are all the nodes from the physical layer this edge consists of\nsource\n# Ribasim.FlatVector — Type.\nstruct FlatVector{T} <: AbstractVector{T}\nA FlatVector is an AbstractVector that iterates the T of a Vector{Vector{T}}.\nEach inner vector is assumed to be of equal length.\nIt is similar to Iterators.flatten, though that doesn’t work with the Tables.Column interface, which needs length and getindex support.\nsource\n# Ribasim.FlowBoundary — Type.\nnodeid: node ID of the FlowBoundary node active: whether this node is active and thus contributes flow flowrate: target flow rate\nsource\n# Ribasim.FractionalFlow — Type.\nRequirements:\n\nfrom: must be (TabulatedRatingCurve,) node\nto: must be (Basin,) node\nfraction must be positive.\n\nnodeid: node ID of the TabulatedRatingCurve node fraction: The fraction in [0,1] of flow the node lets through controlmapping: dictionary from (nodeid, controlstate) to fraction\nsource\n# Ribasim.InNeighbors — Type.\nIterate over incoming neighbors of a given label in a MetaGraph, only for edges of edge_type\nsource\n# Ribasim.LevelBoundary — Type.\nnode_id: node ID of the LevelBoundary node active: whether this node is active level: the fixed level of this ‘infinitely big basin’\nsource\n# Ribasim.LevelDemand — Type.\nnodeid: node ID of the LevelDemand node minlevel: The minimum target level of the connected basin(s) max_level: The maximum target level of the connected basin(s) priority: If in a shortage state, the priority of the demand of the connected basin(s)\nsource\n# Ribasim.LinearResistance — Type.\nRequirements:\n\nfrom: must be (Basin,) node\nto: must be (Basin,) node\n\nnodeid: node ID of the LinearResistance node active: whether this node is active and thus contributes flows resistance: the resistance to flow; Q*unlimited = Δh/resistancemax_flow_rate: the maximum flow rate allowed through the node;Q = clamp(Q*unlimited, -max*flow*rate, max*flow*rate) controlmapping: dictionary from (nodeid, controlstate) to resistance and/or active state\nsource\n# Ribasim.ManningResistance — Type.\nThis is a simple Manning-Gauckler reach connection.\n\nLength describes the reach length.\nroughness describes Manning’s n in (SI units).\n\nThe profile is described by a trapezoid:\n     \\            /  ^\n      \\          /   |\n       \\        /    | dz\nbottom  \\______/     |\n^               <--->\n|                 dy\n|        <------>\n|          width\n|\n|\n+ datum (e.g. MSL)\nWith profile_slope = dy / dz. A rectangular profile requires a slope of 0.0.\nRequirements:\n\nfrom: must be (Basin,) node\nto: must be (Basin,) node\nlength > 0\nroughess > 0\nprofile_width >= 0\nprofile_slope >= 0\n(profilewidth == 0) xor (profileslope == 0)\n\nsource\n# Ribasim.Model — Type.\nModel(config_path::AbstractString)\nModel(config::Config)\nInitialize a Model.\nThe Model struct is an initialized model, combined with the Config used to create it and saved results. The Basic Model Interface (BMI) is implemented on the Model. A Model can be created from the path to a TOML configuration file, or a Config object.\nsource\n# Ribasim.NodeMetadata — Type.\nType for storing metadata of nodes in the graph type: type of the node allocationnetworkid: Allocation network ID (0 if not in subnetwork)\nsource\n# Ribasim.OutNeighbors — Type.\nIterate over outgoing neighbors of a given label in a MetaGraph, only for edges of edge_type\nsource\n# Ribasim.Outlet — Type.\nnodeid: node ID of the Outlet node active: whether this node is active and thus contributes flow flowrate: target flow rate minflowrate: The minimal flow rate of the outlet maxflowrate: The maximum flow rate of the outlet controlmapping: dictionary from (nodeid, controlstate) to target flow rate ispid_controlled: whether the flow rate of this outlet is governed by PID control\nsource\n# Ribasim.PidControl — Type.\nPID control currently only supports regulating basin levels.\nnodeid: node ID of the PidControl node active: whether this node is active and thus sets flow rates listennodeid: the id of the basin being controlled pidparams: a vector interpolation for parameters changing over time. The parameters are respectively target, proportional, integral, derivative, where the last three are the coefficients for the PID equation. error: the current error; basintarget - currentlevel\nsource\n# Ribasim.Pump — Type.\nnodeid: node ID of the Pump node active: whether this node is active and thus contributes flow flowrate: target flow rate minflowrate: The minimal flow rate of the pump maxflowrate: The maximum flow rate of the pump controlmapping: dictionary from (nodeid, controlstate) to target flow rate ispid_controlled: whether the flow rate of this pump is governed by PID control\nsource\n# Ribasim.Subgrid — Type.\nSubgrid linearly interpolates basin levels.\nsource\n# Ribasim.TabulatedRatingCurve — Type.\nstruct TabulatedRatingCurve{C}\nRating curve from level to flow rate. The rating curve is a lookup table with linear interpolation in between. Relation can be updated in time, which is done by moving data from the time field into the tables, which is done in the update_tabulated_rating_curve callback.\nType parameter C indicates the content backing the StructVector, which can be a NamedTuple of Vectors or Arrow Primitives, and is added to avoid type instabilities.\nnodeid: node ID of the TabulatedRatingCurve node active: whether this node is active and thus contributes flows tables: The current Q(h) relationships time: The time table used for updating the tables controlmapping: dictionary from (nodeid, controlstate) to Q(h) and/or active state\nsource\n# Ribasim.Terminal — Type.\nnode_id: node ID of the Terminal node\nsource\n# Ribasim.UserDemand — Type.\nactive: whether this node is active and thus demands water realizedbmi: Cumulative inflow volume, for read or reset by BMI only demand: water flux demand of UserDemand per priority over time Each UserDemand has a demand for all priorities, which is 0.0 if it is not provided explicitly. demandreduced: the total demand reduced by allocated flows. This is used for goal programming, and requires separate memory from demand since demands can come from the BMI demanditp: Timeseries interpolation objects for demands demandfromtimeseries: If false the demand comes from the BMI or is fixed allocated: water flux currently allocated to UserDemand per priority returnfactor: the factor in [0,1] of how much of the abstracted water is given back to the system min_level: The level of the source basin below which the UserDemand does not abstract\nsource\n# Ribasim.config.Config — Method.\nConfig(config_path::AbstractString; kwargs...)\nParse a TOML file to a Config. Keys can be overruled using keyword arguments. To overrule keys from a subsection, e.g. dt from the solver section, use underscores: solver_dt.\nsource",
                  +    "text": "1.2 Types\n# Ribasim.Allocation — Type.\nObject for all information about allocation allocationnetworkids: The unique sorted allocation network IDs allocation models: The allocation models for the main network and subnetworks corresponding to allocationnetworkids mainnetworkconnections: (fromid, toid) from the main network to the subnetwork per subnetwork priorities: All used priority values. subnetworkdemands: The demand of an edge from the main network to a subnetwork recorddemand: A record of demands and allocated flows for nodes that have these. record_flow: A record of all flows computed by allocation optimization, eventually saved to output file\nsource\n# Ribasim.AllocationModel — Type.\nStore information for a subnetwork used for allocation.\nallocationnetworkid: The ID of this allocation network capacity: The capacity per edge of the allocation network, as constrained by nodes that have a maxflowrate problem: The JuMP.jl model for solving the allocation problem Δt_allocation: The time interval between consecutive allocation solves\nsource\n# Ribasim.AllocationModel — Method.\nConstruct the JuMP.jl problem for allocation.\nInputs\nallocationnetworkid: the ID of this allocation network p: Ribasim problem parameters Δt_allocation: The timestep between successive allocation solves\nOutputs\nAn AllocationModel object.\nsource\n# Ribasim.Basin — Type.\nRequirements:\n\nMust be positive: precipitation, evaporation, infiltration, drainage\nIndex points to a Basin\nvolume, area, level must all be positive and monotonic increasing.\n\nType parameter C indicates the content backing the StructVector, which can be a NamedTuple of vectors or Arrow Tables, and is added to avoid type instabilities. The nodeid are Indices to support fast lookup of e.g. currentlevel using ID.\nif autodiff T = DiffCache{Vector{Float64}} else T = Vector{Float64} end\nsource\n# Ribasim.DiscreteControl — Type.\nnodeid: node ID of the DiscreteControl node; these are not unique but repeated by the amount of conditions of this DiscreteControl node listennodeid: the ID of the node being condition on variable: the name of the variable in the condition greaterthan: The threshold value in the condition conditionvalue: The current value of each condition controlstate: Dictionary: node ID => (control state, control state start) logic_mapping: Dictionary: (control node ID, truth state) => control state record: Namedtuple with discrete control information for results\nsource\n# Ribasim.EdgeMetadata — Type.\nType for storing metadata of edges in the graph: id: ID of the edge (only used for labeling flow output) type: type of the edge allocationnetworkidsource: ID of allocation network where this edge is a source (0 if not a source) fromid: the node ID of the source node toid: the node ID of the destination node allocationflow: whether this edge has a flow in an allocation network node_ids: if this edge has allocation flow, these are all the nodes from the physical layer this edge consists of\nsource\n# Ribasim.FlatVector — Type.\nstruct FlatVector{T} <: AbstractVector{T}\nA FlatVector is an AbstractVector that iterates the T of a Vector{Vector{T}}.\nEach inner vector is assumed to be of equal length.\nIt is similar to Iterators.flatten, though that doesn’t work with the Tables.Column interface, which needs length and getindex support.\nsource\n# Ribasim.FlatVector — Method.\nConstruct a FlatVector from one of the fields of SavedFlow.\nsource\n# Ribasim.FlowBoundary — Type.\nnodeid: node ID of the FlowBoundary node active: whether this node is active and thus contributes flow flowrate: target flow rate\nsource\n# Ribasim.FractionalFlow — Type.\nRequirements:\n\nfrom: must be (TabulatedRatingCurve,) node\nto: must be (Basin,) node\nfraction must be positive.\n\nnodeid: node ID of the TabulatedRatingCurve node fraction: The fraction in [0,1] of flow the node lets through controlmapping: dictionary from (nodeid, controlstate) to fraction\nsource\n# Ribasim.InNeighbors — Type.\nIterate over incoming neighbors of a given label in a MetaGraph, only for edges of edge_type\nsource\n# Ribasim.LevelBoundary — Type.\nnode_id: node ID of the LevelBoundary node active: whether this node is active level: the fixed level of this ‘infinitely big basin’\nsource\n# Ribasim.LevelDemand — Type.\nnodeid: node ID of the LevelDemand node minlevel: The minimum target level of the connected basin(s) max_level: The maximum target level of the connected basin(s) priority: If in a shortage state, the priority of the demand of the connected basin(s)\nsource\n# Ribasim.LinearResistance — Type.\nRequirements:\n\nfrom: must be (Basin,) node\nto: must be (Basin,) node\n\nnodeid: node ID of the LinearResistance node active: whether this node is active and thus contributes flows resistance: the resistance to flow; Q*unlimited = Δh/resistancemax_flow_rate: the maximum flow rate allowed through the node;Q = clamp(Q*unlimited, -max*flow*rate, max*flow*rate) controlmapping: dictionary from (nodeid, controlstate) to resistance and/or active state\nsource\n# Ribasim.ManningResistance — Type.\nThis is a simple Manning-Gauckler reach connection.\n\nLength describes the reach length.\nroughness describes Manning’s n in (SI units).\n\nThe profile is described by a trapezoid:\n     \\            /  ^\n      \\          /   |\n       \\        /    | dz\nbottom  \\______/     |\n^               <--->\n|                 dy\n|        <------>\n|          width\n|\n|\n+ datum (e.g. MSL)\nWith profile_slope = dy / dz. A rectangular profile requires a slope of 0.0.\nRequirements:\n\nfrom: must be (Basin,) node\nto: must be (Basin,) node\nlength > 0\nroughess > 0\nprofile_width >= 0\nprofile_slope >= 0\n(profilewidth == 0) xor (profileslope == 0)\n\nsource\n# Ribasim.Model — Type.\nModel(config_path::AbstractString)\nModel(config::Config)\nInitialize a Model.\nThe Model struct is an initialized model, combined with the Config used to create it and saved results. The Basic Model Interface (BMI) is implemented on the Model. A Model can be created from the path to a TOML configuration file, or a Config object.\nsource\n# Ribasim.NodeMetadata — Type.\nType for storing metadata of nodes in the graph type: type of the node allocationnetworkid: Allocation network ID (0 if not in subnetwork)\nsource\n# Ribasim.OutNeighbors — Type.\nIterate over outgoing neighbors of a given label in a MetaGraph, only for edges of edge_type\nsource\n# Ribasim.Outlet — Type.\nnodeid: node ID of the Outlet node active: whether this node is active and thus contributes flow flowrate: target flow rate minflowrate: The minimal flow rate of the outlet maxflowrate: The maximum flow rate of the outlet controlmapping: dictionary from (nodeid, controlstate) to target flow rate ispid_controlled: whether the flow rate of this outlet is governed by PID control\nsource\n# Ribasim.PidControl — Type.\nPID control currently only supports regulating basin levels.\nnodeid: node ID of the PidControl node active: whether this node is active and thus sets flow rates listennodeid: the id of the basin being controlled pidparams: a vector interpolation for parameters changing over time. The parameters are respectively target, proportional, integral, derivative, where the last three are the coefficients for the PID equation. error: the current error; basintarget - currentlevel\nsource\n# Ribasim.Pump — Type.\nnodeid: node ID of the Pump node active: whether this node is active and thus contributes flow flowrate: target flow rate minflowrate: The minimal flow rate of the pump maxflowrate: The maximum flow rate of the pump controlmapping: dictionary from (nodeid, controlstate) to target flow rate ispid_controlled: whether the flow rate of this pump is governed by PID control\nsource\n# Ribasim.SavedFlow — Type.\nIn-memory storage of saved mean flows for writing to results.\n\nflow: The mean flows on all edges\ninflow: The sum of the mean flows coming into each basin\noutflow: The sum of the mean flows going out of each basin\n\nsource\n# Ribasim.Subgrid — Type.\nSubgrid linearly interpolates basin levels.\nsource\n# Ribasim.TabulatedRatingCurve — Type.\nstruct TabulatedRatingCurve{C}\nRating curve from level to flow rate. The rating curve is a lookup table with linear interpolation in between. Relation can be updated in time, which is done by moving data from the time field into the tables, which is done in the update_tabulated_rating_curve callback.\nType parameter C indicates the content backing the StructVector, which can be a NamedTuple of Vectors or Arrow Primitives, and is added to avoid type instabilities.\nnodeid: node ID of the TabulatedRatingCurve node active: whether this node is active and thus contributes flows tables: The current Q(h) relationships time: The time table used for updating the tables controlmapping: dictionary from (nodeid, controlstate) to Q(h) and/or active state\nsource\n# Ribasim.Terminal — Type.\nnode_id: node ID of the Terminal node\nsource\n# Ribasim.UserDemand — Type.\nactive: whether this node is active and thus demands water realizedbmi: Cumulative inflow volume, for read or reset by BMI only demand: water flux demand of UserDemand per priority over time Each UserDemand has a demand for all priorities, which is 0.0 if it is not provided explicitly. demandreduced: the total demand reduced by allocated flows. This is used for goal programming, and requires separate memory from demand since demands can come from the BMI demanditp: Timeseries interpolation objects for demands demandfromtimeseries: If false the demand comes from the BMI or is fixed allocated: water flux currently allocated to UserDemand per priority returnfactor: the factor in [0,1] of how much of the abstracted water is given back to the system min_level: The level of the source basin below which the UserDemand does not abstract\nsource\n# Ribasim.config.Config — Method.\nConfig(config_path::AbstractString; kwargs...)\nParse a TOML file to a Config. Keys can be overruled using keyword arguments. To overrule keys from a subsection, e.g. dt from the solver section, use underscores: solver_dt.\nsource",
                       "crumbs": [
                         "Julia core",
                         "API Reference"
                  @@ -255,7 +255,7 @@
                       "href": "build/index.html#functions",
                       "title": "1 API Reference",
                       "section": "1.3 Functions",
                  -    "text": "1.3 Functions\n# BasicModelInterface.finalize — Method.\nBMI.finalize(model::Model)::Model\nWrite all results to the configured files.\nsource\n# BasicModelInterface.initialize — Method.\nBMI.initialize(T::Type{Model}, config_path::AbstractString)::Model\nInitialize a Model from the path to the TOML configuration file.\nsource\n# CommonSolve.solve! — Method.\nsolve!(model::Model)::ODESolution\nSolve a Model until the configured endtime.\nsource\n# Ribasim.add_basin_term! — Method.\nAdd a term to the expression of the objective function corresponding to the demand of a basin.\nsource\n# Ribasim.add_constraints_absolute_value! — Method.\nMinimizing |expr| can be achieved by introducing a new variable exprabs and posing the following constraints: exprabs >= expr expr_abs >= -expr\nsource\n# Ribasim.add_constraints_absolute_value_flow_demand! — Method.\nAdd constraints so that variables Fabsflow_demand act as the absolute value of the expression comparing flow to a flow buffer to the flow demand.\nsource\n# Ribasim.add_constraints_absolute_value_level_demand! — Method.\nAdd constraints so that variables Fabslevel_demand act as the absolute value of the expression comparing flow to a basin to its demand.\nsource\n# Ribasim.add_constraints_absolute_value_user_demand! — Method.\nAdd constraints so that variables Fabsuser_demand act as the absolute value of the expression comparing flow to a UserDemand to its demand.\nsource\n# Ribasim.add_constraints_basin_flow! — Method.\nAdd the Basin flow constraints to the allocation problem. The constraint indices are the Basin node IDs.\nConstraint: flow out of basin <= basin capacity\nsource\n# Ribasim.add_constraints_buffer! — Method.\nAdd the buffer outflow constraints to the allocation problem. The constraint indices are the node IDs of the nodes that have a flow demand.\nConstraint: flow out of buffer <= flow buffer capacity\nsource\n# Ribasim.add_constraints_capacity! — Method.\nAdd the flow capacity constraints to the allocation problem. Only finite capacities get a constraint. The constraint indices are (edgesourceid, edgedstid).\nConstraint: flow over edge <= edge capacity\nsource\n# Ribasim.add_constraints_conservation_basin! — Method.\nAdd the basin flow conservation constraints to the allocation problem. The constraint indices are Basin node IDs.\nConstraint: sum(flows out of basin) == sum(flows into basin) + flow from storage and vertical fluxes\nsource\n# Ribasim.add_constraints_conservation_flow_demand! — Method.\nAdd the conservation constraints for connector nodes with a flow demand to the allocation problem. The constraint indices are node IDs of the nodes with the flow demand (so not the IDs of the FlowDemand nodes).\nConstraint: flow into node + flow out of buffer = flow out of node + flow into buffer\nsource\n# Ribasim.add_constraints_conservation_subnetwork! — Method.\nAdd the subnetwork inlet flow conservation constraints to the allocation problem. The constraint indices are node IDs subnetwork inlet edge dst IDs.\nConstraint: sum(flows into node) == sum(flows out of node)\nsource\n# Ribasim.add_constraints_flow_demand_outflow! — Method.\nAdd the flow demand node outflow constraints to the allocation problem. The constraint indices are the node IDs of the nodes that have a flow demand.\nConstraint: flow out of node with flow demand <= ∞ if not at flow demand priority, 0.0 otherwise\nsource\n# Ribasim.add_constraints_fractional_flow! — Method.\nAdd the fractional flow constraints to the allocation problem. The constraint indices are allocation edges over a fractional flow node.\nConstraint: flow after fractional_flow node <= fraction * inflow\nsource\n# Ribasim.add_constraints_source! — Method.\nAdd the source constraints to the allocation problem. The actual threshold values will be set before each allocation solve. The constraint indices are (edgesourceid, edgedstid).\nConstraint: flow over source edge <= source flow in subnetwork\nsource\n# Ribasim.add_constraints_user_source! — Method.\nAdd capacity constraints to the outflow edge of UserDemand nodes. The constraint indices are the UserDemand node IDs.\nConstraint: flow over UserDemand edge outflow edge <= cumulative return flow from previous priorities\nsource\n# Ribasim.add_flow_demand_term! — Method.\nAdd a term to the expression of the objective function corresponding to the demand of a node with a a flow demand.\nsource\n# Ribasim.add_objective_term! — Function.\nAdd a term to the objective function given by the objective type, depending in the provided flow variable and the associated demand.\nsource\n# Ribasim.add_subnetwork_connections! — Method.\nAdd the edges connecting the main network work to a subnetwork to both the main network and subnetwork allocation network.\nsource\n# Ribasim.add_user_demand_term! — Method.\nAdd a term to the expression of the objective function corresponding to the demand of a UserDemand.\nsource\n# Ribasim.add_variables_absolute_value! — Method.\nCertain allocation distribution types use absolute values in the objective function. Since most optimization packages do not support the absolute value function directly, New variables are introduced that act as the absolute value of an expression by posing the appropriate constraints.\nsource\n# Ribasim.add_variables_basin! — Method.\nAdd the variables for supply/demand of a basin to the problem. The variable indices are the node_ids of the basins with a level demand in the subnetwork.\nsource\n# Ribasim.add_variables_flow! — Method.\nAdd the flow variables F to the allocation problem. The variable indices are (edgesourceid, edgedstid). Non-negativivity constraints are also immediately added to the flow variables.\nsource\n# Ribasim.add_variables_flow_buffer! — Method.\nAdd the variables for supply/demand of a node with a flow demand to the problem. The variable indices are the node_ids of the nodes with a flow demand in the subnetwork.\nsource\n# Ribasim.adjust_capacities_basin! — Method.\nSet the values of the basin outflows. 2 cases:\n\nBefore the first allocation solve, set the capacities to their full capacity if there is surplus storage;\nBefore an allocation solve, subtract the flow used by allocation for the previous priority from the capacities.\n\nsource\n# Ribasim.adjust_capacities_buffer! — Method.\nIncrease the capacities of the flow buffers of nodes with a flow demand by the inflow to the respective buffers.\nsource\n# Ribasim.adjust_capacities_edge! — Method.\nSet the values of the edge capacities. 2 cases:\n\nBefore the first allocation solve, set the edge capacities to their full capacity;\nBefore an allocation solve, subtract the flow used by allocation for the previous priority from the edge capacities.\n\nsource\n# Ribasim.adjust_capacities_returnflow! — Method.\nAdd the return flow fraction of the inflow to the UserDemand nodes to the capacity of the outflow source.\nsource\n# Ribasim.adjust_capacities_source! — Method.\nAdjust the source capacities by the flow used from the sources.\nsource\n# Ribasim.adjust_demands_flow! — Method.\nReduce the flow demand based on flow trough the node with the demand. Flow from any priority counts.\nsource\n# Ribasim.adjust_demands_level! — Method.\nSubtract the allocated flow to the basin from its demand, to obtain the reduced demand used for goal programming\nsource\n# Ribasim.adjust_demands_user! — Method.\nSet the demand of the flow demand nodes. 2 cases:\n\nBefore the first allocation solve, set the demands to their full value;\nBefore an allocation solve, subtract the flow trough the node with a flow demand from the total flow demand (which will be used at the priority of the flow demand only).\n\nsource\n# Ribasim.all_neighbor_labels_type — Method.\nGet the in- and outneighbor node IDs of the given node ID (label) over the given edge type in the graph.\nsource\n# Ribasim.allocate! — Method.\nUpdate the allocation optimization problem for the given subnetwork with the problem state and flows, solve the allocation problem and assign the results to the UserDemand.\nsource\n# Ribasim.allocation_graph — Method.\nBuild the graph used for the allocation problem.\nsource\n# Ribasim.allocation_graph_used_nodes! — Method.\nFind all nodes in the subnetwork which will be used in the allocation network. Some nodes are skipped to optimize allocation optimization.\nsource\n# Ribasim.allocation_problem — Method.\nConstruct the allocation problem for the current subnetwork as a JuMP.jl model.\nsource\n# Ribasim.allocation_table — Method.\nCreate an allocation result table for the saved data\nsource\n# Ribasim.assign_allocations! — Method.\nAssign the allocations to the UserDemand as determined by the solution of the allocation problem.\nsource\n# Ribasim.basin_bottom — Method.\nReturn the bottom elevation of the basin with index i, or nothing if it doesn’t exist\nsource\n# Ribasim.basin_table — Method.\nCreate the basin result table from the saved data\nsource\n# Ribasim.create_callbacks — Method.\nCreate the different callbacks that are used to store results and feed the simulation with new data. The different callbacks are combined to a CallbackSet that goes to the integrator. Returns the CallbackSet and the SavedValues for flow.\nsource\n# Ribasim.create_graph — Method.\nReturn a directed metagraph with data of nodes (NodeMetadata): NodeMetadata\nand data of edges (EdgeMetadata): EdgeMetadata\nsource\n# Ribasim.create_storage_tables — Method.\nRead the Basin / profile table and return all area and level and computed storage values\nsource\n# Ribasim.datetime_since — Method.\ndatetime_since(t::Real, t0::DateTime)::DateTime\nConvert a Real that represents the seconds passed since the simulation start to the nearest DateTime. This is used to convert between the solver’s inner float time, and the calendar.\nsource\n# Ribasim.datetimes — Method.\nGet all saved times as a Vector{DateTime}\nsource\n# Ribasim.discrete_control_affect! — Method.\nChange parameters based on the control logic.\nsource\n# Ribasim.discrete_control_affect_downcrossing! — Method.\nAn downcrossing means that a condition (always greater than) becomes false.\nsource\n# Ribasim.discrete_control_affect_upcrossing! — Method.\nAn upcrossing means that a condition (always greater than) becomes true.\nsource\n# Ribasim.discrete_control_condition — Method.\nListens for changes in condition truths.\nsource\n# Ribasim.discrete_control_table — Method.\nCreate a discrete control result table from the saved data\nsource\n# Ribasim.expand_logic_mapping — Method.\nReplace the truth states in the logic mapping which contain wildcards with all possible explicit truth states.\nsource\n# Ribasim.find_allocation_graph_edges! — Method.\nThis loop finds allocation network edges in several ways:\n\nBetween allocation network nodes whose equivalent in the subnetwork are directly connected\nBetween allocation network nodes whose equivalent in the subnetwork are connected with one or more allocation network nodes in between\n\nsource\n# Ribasim.find_subnetwork_connections! — Method.\nFind the edges from the main network to a subnetwork.\nsource\n# Ribasim.findlastgroup — Method.\nFor an element id and a vector of elements ids, get the range of indices of the last consecutive block of id. Returns the empty range 1:0 if id is not in ids.\nsource\n# Ribasim.findsorted — Method.\nFind the index of element x in a sorted collection a. Returns the index of x if it exists, or nothing if it doesn’t. If x occurs more than once, throw an error.\nsource\n# Ribasim.flow_table — Method.\nCreate a flow result table from the saved data\nsource\n# Ribasim.formulate_flow! — Method.\nDirected graph: outflow is positive!\nsource\n# Ribasim.formulate_flow! — Method.\nConservation of energy for two basins, a and b:\nh_a + v_a^2 / (2 * g) = h_b + v_b^2 / (2 * g) + S_f * L + C / 2 * g * (v_b^2 - v_a^2)\nWhere:\n\nha, hb are the heads at basin a and b.\nva, vb are the velocities at basin a and b.\ng is the gravitational constant.\nS_f is the friction slope.\nC is an expansion or extraction coefficient.\n\nWe assume velocity differences are negligible (va = vb):\nh_a = h_b + S_f * L\nThe friction losses are approximated by the Gauckler-Manning formula:\nQ = A * (1 / n) * R_h^(2/3) * S_f^(1/2)\nWhere:\n\nWhere A is the cross-sectional area.\nV is the cross-sectional average velocity.\nn is the Gauckler-Manning coefficient.\nR_h is the hydraulic radius.\nS_f is the friction slope.\n\nThe hydraulic radius is defined as:\nR_h = A / P\nWhere P is the wetted perimeter.\nThe average of the upstream and downstream water depth is used to compute cross-sectional area and hydraulic radius. This ensures that a basin can receive water after it has gone dry.\nsource\n# Ribasim.formulate_flow! — Method.\nDirected graph: outflow is positive!\nsource\n# Ribasim.get_area_and_level — Method.\nCompute the area and level of a basin given its storage. Also returns darea/dlevel as it is needed for the Jacobian.\nsource\n# Ribasim.get_basin_capacity — Method.\nGet the capacity of the basin, i.e. the maximum flow that can be abstracted from the basin if it is in a state of surplus storage (0 if no reference levels are provided by a level_demand node). Storages are converted to flows by dividing by the allocation timestep.\nsource\n# Ribasim.get_basin_data — Method.\nGet several variables associated with a basin:\n\nIts current storage\nThe allocation update interval\nThe influx (sum of instantaneous vertical fluxes of the basin)\nThe index of the connected level_demand node (0 if such a node does not exist)\nThe index of the basin\n\nsource\n# Ribasim.get_basin_demand — Method.\nGet the demand of the basin, i.e. how large a flow the basin needs to get to its minimum target level (0 if no reference levels are provided by a level_demand node). Storages are converted to flows by dividing by the allocation timestep.\nsource\n# Ribasim.get_chunk_sizes — Method.\nGet the chunk sizes for DiffCache; differentiation w.r.t. u and t (the latter only if a Rosenbrock algorithm is used).\nsource\n# Ribasim.get_compressor — Method.\nGet the compressor based on the Results section\nsource\n# Ribasim.get_flow — Method.\nGet the flow over the given edge (val is needed for get_tmp from ForwardDiff.jl).\nsource\n# Ribasim.get_fractional_flow_connected_basins — Method.\nGet the node type specific indices of the fractional flows and basins, that are consecutively connected to a node of given id.\nsource\n# Ribasim.get_jac_prototype — Method.\nGet a sparse matrix whose sparsity matches (with some false positives) the sparsity of the Jacobian of the ODE problem. All nodes are taken into consideration, also the ones that are inactive.\nIn Ribasim the Jacobian is typically sparse because each state only depends on a small number of other states.\nNote: the name ‘prototype’ does not mean this code is a prototype, it comes from the naming convention of this sparsity structure in the differentialequations.jl docs.\nsource\n# Ribasim.get_level — Method.\nGet the current water level of a node ID. The ID can belong to either a Basin or a LevelBoundary. storage: tells ForwardDiff whether this call is for differentiation or not\nsource\n# Ribasim.get_scalar_interpolation — Method.\nLinear interpolation of a scalar with constant extrapolation.\nsource\n# Ribasim.get_storage_from_level — Method.\nGet the storage of a basin from its level.\nsource\n# Ribasim.get_storages_and_levels — Method.\nGet the storage and level of all basins as matrices of nbasin × ntime\nsource\n# Ribasim.get_storages_from_levels — Method.\nCompute the storages of the basins based on the water level of the basins.\nsource\n# Ribasim.get_tstops — Method.\nFrom an iterable of DateTimes, find the times the solver needs to stop\nsource\n# Ribasim.get_value — Method.\nGet a value for a condition. Currently supports getting levels from basins and flows from flow boundaries.\nsource\n# Ribasim.get_Δt — Method.\nGet the time interval between (flow) saves\nsource\n# Ribasim.id_index — Method.\nGet the index of an ID in a set of indices.\nsource\n# Ribasim.indicate_allocation_flow! — Method.\nAdd to the edge metadata that the given edge is used for allocation flow. If the edge does not exist, it is created.\nsource\n# Ribasim.inflow_id — Method.\nGet the unique inneighbor over a flow edge.\nsource\n# Ribasim.inflow_ids — Method.\nGet the inneighbors over flow edges.\nsource\n# Ribasim.inflow_ids_allocation — Method.\nGet the inneighbors of the given ID such that the connecting edge is an allocation flow edge.\nsource\n# Ribasim.inneighbor_labels_type — Method.\nGet the inneighbor node IDs of the given node ID (label) over the given edge type in the graph.\nsource\n# Ribasim.inoutflow_ids — Method.\nGet the in- and outneighbors over flow edges.\nsource\n# Ribasim.integrate_flows! — Method.\nIntegrate flows over the last timestep\nsource\n# Ribasim.is_allocation_source — Method.\nFind out whether the given edge is a source for an allocation network.\nsource\n# Ribasim.is_current_module — Method.\nis_current_module(log::LogMessageType)::Bool\nReturns true if the log message is from the current module or a submodule.\n\nSee https://github.com/JuliaLogging/LoggingExtras.jl/blob/d35e7c8cfc197853ee336ace17182e6ed36dca24/src/CompositionalLoggers/earlyfiltered.jl#L39\nfor the information available in log.\nsource\n# Ribasim.is_flow_constraining — Method.\nWhether the given node node is flow constraining by having a maximum flow rate.\nsource\n# Ribasim.is_flow_direction_constraining — Method.\nWhether the given node is flow direction constraining (only in direction of edges).\nsource\n# Ribasim.load_data — Method.\nload_data(db::DB, config::Config, nodetype::Symbol, kind::Symbol)::Union{Table, Query, Nothing}\nLoad data from Arrow files if available, otherwise the database. Returns either an Arrow.Table, SQLite.Query or nothing if the data is not present.\nsource\n# Ribasim.load_structvector — Method.\nload_structvector(db::DB, config::Config, ::Type{T})::StructVector{T}\nLoad data from Arrow files if available, otherwise the database. Always returns a StructVector of the given struct type T, which is empty if the table is not found. This function validates the schema, and enforces the required sort order.\nsource\n# Ribasim.low_storage_factor — Method.\nIf id is a Basin with storage below the threshold, return a reduction factor != 1\nsource\n# Ribasim.main — Method.\nmain(toml_path::AbstractString)::Cint\nmain(ARGS::Vector{String})::Cint\nmain()::Cint\nThis is the main entry point of the application. Performs argument parsing and sets up logging for both terminal and file. Calls Ribasim.run() and handles exceptions to convert to exit codes.\nsource\n# Ribasim.metadata_from_edge — Method.\nGet the metadata of an edge in the graph from an edge of the underlying DiGraph.\nsource\n# Ribasim.nodefields — Method.\nGet all node fieldnames of the parameter object.\nsource\n# Ribasim.nodetype — Method.\nFrom a SchemaVersion(“ribasim.flowboundary.static”, 1) return (:FlowBoundary, :static)\nsource\n# Ribasim.outflow_id — Method.\nGet the unique outneighbor over a flow edge.\nsource\n# Ribasim.outflow_ids — Method.\nGet the outneighbors over flow edges.\nsource\n# Ribasim.outflow_ids_allocation — Method.\nGet the outneighbors of the given ID such that the connecting edge is an allocation flow edge.\nsource\n# Ribasim.outneighbor_labels_type — Method.\nGet the outneighbor node IDs of the given node ID (label) over the given edge type in the graph.\nsource\n# Ribasim.parse_static_and_time — Method.\nProcess the data in the static and time tables for a given node type. The ‘defaults’ named tuple dictates how missing data is filled in. ‘time_interpolatables’ is a vector of Symbols of parameter names for which a time interpolation (linear) object must be constructed. The control mapping for DiscreteControl is also constructed in this function. This function currently does not support node states that are defined by more than one row in a table, as is the case for TabulatedRatingCurve.\nsource\n# Ribasim.pkgversion — Method.\nGet the package version of a given module\nsource\n# Ribasim.process_allocation_graph_edges! — Method.\nFor the composite allocation network edges:\n\nFind out whether they are connected to allocation network nodes on both ends\nCompute their capacity\nFind out their allowed flow direction(s)\n\nsource\n# Ribasim.profile_storage — Method.\nCalculate a profile storage by integrating the areas over the levels\nsource\n# Ribasim.qh_interpolation — Method.\nFrom a table with columns nodeid, flowrate (Q) and level (h), create a LinearInterpolation from level to flow rate for a given node_id.\nsource\n# Ribasim.reduction_factor — Method.\nFunction that goes smoothly from 0 to 1 in the interval [0,threshold], and is constant outside this interval.\nsource\n# Ribasim.run — Method.\nrun(config_file::AbstractString)::Model\nrun(config::Config)::Model\nRun a Model, given a path to a TOML configuration file, or a Config object. Running a model includes initialization, solving to the end with [solve!](@ref) and writing results with write_results.\nsource\n# Ribasim.save_allocation_flows! — Method.\nSave the allocation flows per basin and physical edge.\nsource\n# Ribasim.save_demands_and_allocations! — Method.\nSave the demands and allocated flows for UserDemand and Basin. Note: Basin supply (negative demand) is only saved for the first priority.\nsource\n# Ribasim.save_flow — Method.\nCompute the average flows over the last saveat interval and write them to SavedValues\nsource\n# Ribasim.save_subgrid_level — Method.\nInterpolate the levels and save them to SavedValues\nsource\n# Ribasim.save_vertical_flux — Method.\nCompute the average vertical fluxes over the last saveat interval and write them to SavedValues\nsource\n# Ribasim.scalar_interpolation_derivative — Method.\nDerivative of scalar interpolation.\nsource\n# Ribasim.seconds_since — Method.\nseconds_since(t::DateTime, t0::DateTime)::Float64\nConvert a DateTime to a float that is the number of seconds since the start of the simulation. This is used to convert between the solver’s inner float time, and the calendar.\nsource\n# Ribasim.set_capacities_flow_demand_outflow! — Method.\nSet the capacity of the outflow edge from a node with a flow demand:\n\nTo Inf if the current priority is other than the priority of the flow demand\nTo 0.0 if the current priority is equal to the priority of the flow demand\n\nsource\n# Ribasim.set_current_value! — Method.\nFrom a timeseries table time, load the most recent applicable data into table. table must be a NamedTuple of vectors with all variables that must be loaded. The most recent applicable data is non-NaN data for a given ID that is on or before t.\nsource\n# Ribasim.set_flow! — Method.\nSet the given flow q over the edge between the given nodes.\nsource\n# Ribasim.set_fractional_flow_in_allocation! — Method.\nUpdate the fractional flow fractions in an allocation problem.\nsource\n# Ribasim.set_initial_capacities_basin! — Method.\nSet the initial capacity of each basin in the subnetwork as vertical fluxes + the disk of storage above the maximum level / Δt_allocation\nsource\n# Ribasim.set_initial_capacities_buffer! — Method.\nSet the flow buffer of nodes with a flow demand to 0.0\nsource\n# Ribasim.set_initial_capacities_edge! — Method.\nSet the capacities of the allocation flow edges as determined by the smallest maxflowrate of a node on this edge\nsource\n# Ribasim.set_initial_capacities_inlet! — Method.\nSet the capacities of the main network to subnetwork inlets. Per optimization type: internalsources: 0.0 collectdemands: Inf allocate: the total flow allocated to this inlet from the main network\nsource\n# Ribasim.set_initial_capacities_returnflow! — Method.\nSet the initial capacities of the UserDemand return flow sources to 0.\nsource\n# Ribasim.set_initial_capacities_source! — Method.\nSet the capacities of the sources in the subnetwork as the latest instantaneous flow out of the source in the physical layer\nsource\n# Ribasim.set_initial_demands_flow! — Method.\nSet the initial demands of the nodes with a flow demand to the interpolated value from the given timeseries.\nsource\n# Ribasim.set_initial_demands_level! — Method.\nSet the initial demand of each basin in the subnetwork as\n\nvertical fluxes + the disk of missing storage below the minimum level / Δt_allocation\n\nsource\n# Ribasim.set_initial_demands_user! — Method.\nSet the demands of the user demand nodes as given by either a coupled model or a timeseries\nsource\n# Ribasim.set_initial_discrete_controlled_parameters! — Method.\nSet parameters of nodes that are controlled by DiscreteControl to the values corresponding to the initial state of the model.\nsource\n# Ribasim.set_initial_values! — Method.\nSet the initial capacities and demands which are recudes by usage in the adjust*capacities**! and adjust*demands**! functions respectively.\nsource\n# Ribasim.set_is_pid_controlled! — Method.\nSet ispidcontrolled to true for those pumps and outlets that are PID controlled\nsource\n# Ribasim.set_objective_priority! — Method.\nSet the objective for the given priority. For an objective with absolute values this also involves adjusting constraints.\nsource\n# Ribasim.set_static_value! — Method.\nLoad data from a source table static into a destination table. Data is matched based on the node_id, which is sorted.\nsource\n# Ribasim.set_table_row! — Method.\nUpdate table at row index i, with the values of a given row. table must be a NamedTuple of vectors with all variables that must be loaded. The row must contain all the column names that are present in the table. If a value is missing, it is not set.\nsource\n# Ribasim.sorted_table! — Method.\nDepending on if a table can be sorted, either sort it or assert that it is sorted.\nTables loaded from the database into memory can be sorted. Tables loaded from Arrow files are memory mapped and can therefore not be sorted.\nsource\n# Ribasim.tsaves — Method.\nGet all saved times in seconds since start\nsource\n# Ribasim.update_allocation! — Method.\nSolve the allocation problem for all demands and assign allocated abstractions.\nsource\n# Ribasim.update_basin — Method.\nLoad updates from ‘Basin / time’ into the parameters\nsource\n# Ribasim.update_jac_prototype! — Method.\nAdd nonzeros for basins connected to eachother via 1 node and possibly a fractional flow node Basins are also assumed to depend on themselves (main diagonal terms)\nsource\n# Ribasim.update_jac_prototype! — Method.\nAdd nonzeros for the integral term and the basins on either side of the controlled node\nsource\n# Ribasim.update_tabulated_rating_curve! — Method.\nLoad updates from ‘TabulatedRatingCurve / time’ into the parameters\nsource\n# Ribasim.update_vertical_flux! — Method.\nSmoothly let the evaporation flux go to 0 when at small water depths Currently at less than 0.1 m.\nsource\n# Ribasim.valid_discrete_control — Method.\nCheck:\n\nwhether control states are defined for discrete controlled nodes;\nWhether the supplied truth states have the proper length;\nWhether look_ahead is only supplied for condition variables given by a time-series.\n\nsource\n# Ribasim.valid_edge_types — Method.\nCheck that only supported edge types are declared.\nsource\n# Ribasim.valid_edges — Method.\nTest for each node given its node type whether the nodes that\nare downstream (‘down-edge’) of this node are of an allowed type\nsource\n# Ribasim.valid_flow_rates — Method.\nTest whether static or discrete controlled flow rates are indeed non-negative.\nsource\n# Ribasim.valid_fractional_flow — Method.\nCheck that nodes that have fractional flow outneighbors do not have any other type of outneighbor, that the fractions leaving a node add up to ≈1 and that the fractions are non-negative.\nsource\n# Ribasim.valid_n_neighbors — Method.\nTest for each node given its node type whether it has an allowed number of flow/control inneighbors and outneighbors\nsource\n# Ribasim.valid_profiles — Method.\nCheck whether the profile data has no repeats in the levels and the areas start positive.\nsource\n# Ribasim.valid_sources — Method.\nThe source nodes must only have one allocation outneighbor and no allocation inneighbors.\nsource\n# Ribasim.valid_subgrid — Method.\nValidate the entries for a single subgrid element.\nsource\n# Ribasim.water_balance! — Method.\nThe right hand side function of the system of ODEs set up by Ribasim.\nsource\n# Ribasim.write_arrow — Method.\nWrite a result table to disk as an Arrow file\nsource\n# Ribasim.write_results — Method.\nwrite_results(model::Model)::Model\nWrite all results to the Arrow files as specified in the model configuration.\nsource\n# Ribasim.config.algorithm — Method.\nCreate an OrdinaryDiffEqAlgorithm from solver config\nsource\n# Ribasim.config.convert_dt — Method.\nConvert the dt from our Config to SciML stepsize control arguments\nsource\n# Ribasim.config.convert_saveat — Method.\nConvert the saveat Float64 from our Config to SciML’s saveat\nsource\n# Ribasim.config.input_path — Method.\nConstruct a path relative to both the TOML directory and the optional input_dir\nsource\n# Ribasim.config.results_path — Method.\nConstruct a path relative to both the TOML directory and the optional results_dir\nsource\n# Ribasim.config.snake_case — Method.\nConvert a string from CamelCase to snake_case.\nsource",
                  +    "text": "1.3 Functions\n# BasicModelInterface.finalize — Method.\nBMI.finalize(model::Model)::Model\nWrite all results to the configured files.\nsource\n# BasicModelInterface.initialize — Method.\nBMI.initialize(T::Type{Model}, config_path::AbstractString)::Model\nInitialize a Model from the path to the TOML configuration file.\nsource\n# CommonSolve.solve! — Method.\nsolve!(model::Model)::ODESolution\nSolve a Model until the configured endtime.\nsource\n# Ribasim.add_basin_term! — Method.\nAdd a term to the expression of the objective function corresponding to the demand of a basin.\nsource\n# Ribasim.add_constraints_absolute_value! — Method.\nMinimizing |expr| can be achieved by introducing a new variable exprabs and posing the following constraints: exprabs >= expr expr_abs >= -expr\nsource\n# Ribasim.add_constraints_absolute_value_flow_demand! — Method.\nAdd constraints so that variables Fabsflow_demand act as the absolute value of the expression comparing flow to a flow buffer to the flow demand.\nsource\n# Ribasim.add_constraints_absolute_value_level_demand! — Method.\nAdd constraints so that variables Fabslevel_demand act as the absolute value of the expression comparing flow to a basin to its demand.\nsource\n# Ribasim.add_constraints_absolute_value_user_demand! — Method.\nAdd constraints so that variables Fabsuser_demand act as the absolute value of the expression comparing flow to a UserDemand to its demand.\nsource\n# Ribasim.add_constraints_basin_flow! — Method.\nAdd the Basin flow constraints to the allocation problem. The constraint indices are the Basin node IDs.\nConstraint: flow out of basin <= basin capacity\nsource\n# Ribasim.add_constraints_buffer! — Method.\nAdd the buffer outflow constraints to the allocation problem. The constraint indices are the node IDs of the nodes that have a flow demand.\nConstraint: flow out of buffer <= flow buffer capacity\nsource\n# Ribasim.add_constraints_capacity! — Method.\nAdd the flow capacity constraints to the allocation problem. Only finite capacities get a constraint. The constraint indices are (edgesourceid, edgedstid).\nConstraint: flow over edge <= edge capacity\nsource\n# Ribasim.add_constraints_conservation_basin! — Method.\nAdd the basin flow conservation constraints to the allocation problem. The constraint indices are Basin node IDs.\nConstraint: sum(flows out of basin) == sum(flows into basin) + flow from storage and vertical fluxes\nsource\n# Ribasim.add_constraints_conservation_flow_demand! — Method.\nAdd the conservation constraints for connector nodes with a flow demand to the allocation problem. The constraint indices are node IDs of the nodes with the flow demand (so not the IDs of the FlowDemand nodes).\nConstraint: flow into node + flow out of buffer = flow out of node + flow into buffer\nsource\n# Ribasim.add_constraints_conservation_subnetwork! — Method.\nAdd the subnetwork inlet flow conservation constraints to the allocation problem. The constraint indices are node IDs subnetwork inlet edge dst IDs.\nConstraint: sum(flows into node) == sum(flows out of node)\nsource\n# Ribasim.add_constraints_flow_demand_outflow! — Method.\nAdd the flow demand node outflow constraints to the allocation problem. The constraint indices are the node IDs of the nodes that have a flow demand.\nConstraint: flow out of node with flow demand <= ∞ if not at flow demand priority, 0.0 otherwise\nsource\n# Ribasim.add_constraints_fractional_flow! — Method.\nAdd the fractional flow constraints to the allocation problem. The constraint indices are allocation edges over a fractional flow node.\nConstraint: flow after fractional_flow node <= fraction * inflow\nsource\n# Ribasim.add_constraints_source! — Method.\nAdd the source constraints to the allocation problem. The actual threshold values will be set before each allocation solve. The constraint indices are (edgesourceid, edgedstid).\nConstraint: flow over source edge <= source flow in subnetwork\nsource\n# Ribasim.add_constraints_user_source! — Method.\nAdd capacity constraints to the outflow edge of UserDemand nodes. The constraint indices are the UserDemand node IDs.\nConstraint: flow over UserDemand edge outflow edge <= cumulative return flow from previous priorities\nsource\n# Ribasim.add_flow_demand_term! — Method.\nAdd a term to the expression of the objective function corresponding to the demand of a node with a a flow demand.\nsource\n# Ribasim.add_objective_term! — Function.\nAdd a term to the objective function given by the objective type, depending in the provided flow variable and the associated demand.\nsource\n# Ribasim.add_subnetwork_connections! — Method.\nAdd the edges connecting the main network work to a subnetwork to both the main network and subnetwork allocation network.\nsource\n# Ribasim.add_user_demand_term! — Method.\nAdd a term to the expression of the objective function corresponding to the demand of a UserDemand.\nsource\n# Ribasim.add_variables_absolute_value! — Method.\nCertain allocation distribution types use absolute values in the objective function. Since most optimization packages do not support the absolute value function directly, New variables are introduced that act as the absolute value of an expression by posing the appropriate constraints.\nsource\n# Ribasim.add_variables_basin! — Method.\nAdd the variables for supply/demand of a basin to the problem. The variable indices are the node_ids of the basins with a level demand in the subnetwork.\nsource\n# Ribasim.add_variables_flow! — Method.\nAdd the flow variables F to the allocation problem. The variable indices are (edgesourceid, edgedstid). Non-negativivity constraints are also immediately added to the flow variables.\nsource\n# Ribasim.add_variables_flow_buffer! — Method.\nAdd the variables for supply/demand of a node with a flow demand to the problem. The variable indices are the node_ids of the nodes with a flow demand in the subnetwork.\nsource\n# Ribasim.adjust_capacities_basin! — Method.\nSet the values of the basin outflows. 2 cases:\n\nBefore the first allocation solve, set the capacities to their full capacity if there is surplus storage;\nBefore an allocation solve, subtract the flow used by allocation for the previous priority from the capacities.\n\nsource\n# Ribasim.adjust_capacities_buffer! — Method.\nIncrease the capacities of the flow buffers of nodes with a flow demand by the inflow to the respective buffers.\nsource\n# Ribasim.adjust_capacities_edge! — Method.\nSet the values of the edge capacities. 2 cases:\n\nBefore the first allocation solve, set the edge capacities to their full capacity;\nBefore an allocation solve, subtract the flow used by allocation for the previous priority from the edge capacities.\n\nsource\n# Ribasim.adjust_capacities_returnflow! — Method.\nAdd the return flow fraction of the inflow to the UserDemand nodes to the capacity of the outflow source.\nsource\n# Ribasim.adjust_capacities_source! — Method.\nAdjust the source capacities by the flow used from the sources.\nsource\n# Ribasim.adjust_demands_flow! — Method.\nReduce the flow demand based on flow trough the node with the demand. Flow from any priority counts.\nsource\n# Ribasim.adjust_demands_level! — Method.\nSubtract the allocated flow to the basin from its demand, to obtain the reduced demand used for goal programming\nsource\n# Ribasim.adjust_demands_user! — Method.\nSet the demand of the flow demand nodes. 2 cases:\n\nBefore the first allocation solve, set the demands to their full value;\nBefore an allocation solve, subtract the flow trough the node with a flow demand from the total flow demand (which will be used at the priority of the flow demand only).\n\nsource\n# Ribasim.all_neighbor_labels_type — Method.\nGet the in- and outneighbor node IDs of the given node ID (label) over the given edge type in the graph.\nsource\n# Ribasim.allocate! — Method.\nUpdate the allocation optimization problem for the given subnetwork with the problem state and flows, solve the allocation problem and assign the results to the UserDemand.\nsource\n# Ribasim.allocation_graph — Method.\nBuild the graph used for the allocation problem.\nsource\n# Ribasim.allocation_graph_used_nodes! — Method.\nFind all nodes in the subnetwork which will be used in the allocation network. Some nodes are skipped to optimize allocation optimization.\nsource\n# Ribasim.allocation_problem — Method.\nConstruct the allocation problem for the current subnetwork as a JuMP.jl model.\nsource\n# Ribasim.allocation_table — Method.\nCreate an allocation result table for the saved data\nsource\n# Ribasim.assign_allocations! — Method.\nAssign the allocations to the UserDemand as determined by the solution of the allocation problem.\nsource\n# Ribasim.basin_bottom — Method.\nReturn the bottom elevation of the basin with index i, or nothing if it doesn’t exist\nsource\n# Ribasim.basin_table — Method.\nCreate the basin result table from the saved data\nsource\n# Ribasim.create_callbacks — Method.\nCreate the different callbacks that are used to store results and feed the simulation with new data. The different callbacks are combined to a CallbackSet that goes to the integrator. Returns the CallbackSet and the SavedValues for flow.\nsource\n# Ribasim.create_graph — Method.\nReturn a directed metagraph with data of nodes (NodeMetadata): NodeMetadata\nand data of edges (EdgeMetadata): EdgeMetadata\nsource\n# Ribasim.create_storage_tables — Method.\nRead the Basin / profile table and return all area and level and computed storage values\nsource\n# Ribasim.datetime_since — Method.\ndatetime_since(t::Real, t0::DateTime)::DateTime\nConvert a Real that represents the seconds passed since the simulation start to the nearest DateTime. This is used to convert between the solver’s inner float time, and the calendar.\nsource\n# Ribasim.datetimes — Method.\nGet all saved times as a Vector{DateTime}\nsource\n# Ribasim.discrete_control_affect! — Method.\nChange parameters based on the control logic.\nsource\n# Ribasim.discrete_control_affect_downcrossing! — Method.\nAn downcrossing means that a condition (always greater than) becomes false.\nsource\n# Ribasim.discrete_control_affect_upcrossing! — Method.\nAn upcrossing means that a condition (always greater than) becomes true.\nsource\n# Ribasim.discrete_control_condition — Method.\nListens for changes in condition truths.\nsource\n# Ribasim.discrete_control_table — Method.\nCreate a discrete control result table from the saved data\nsource\n# Ribasim.expand_logic_mapping — Method.\nReplace the truth states in the logic mapping which contain wildcards with all possible explicit truth states.\nsource\n# Ribasim.find_allocation_graph_edges! — Method.\nThis loop finds allocation network edges in several ways:\n\nBetween allocation network nodes whose equivalent in the subnetwork are directly connected\nBetween allocation network nodes whose equivalent in the subnetwork are connected with one or more allocation network nodes in between\n\nsource\n# Ribasim.find_subnetwork_connections! — Method.\nFind the edges from the main network to a subnetwork.\nsource\n# Ribasim.findlastgroup — Method.\nFor an element id and a vector of elements ids, get the range of indices of the last consecutive block of id. Returns the empty range 1:0 if id is not in ids.\nsource\n# Ribasim.findsorted — Method.\nFind the index of element x in a sorted collection a. Returns the index of x if it exists, or nothing if it doesn’t. If x occurs more than once, throw an error.\nsource\n# Ribasim.flow_table — Method.\nCreate a flow result table from the saved data\nsource\n# Ribasim.formulate_flow! — Method.\nDirected graph: outflow is positive!\nsource\n# Ribasim.formulate_flow! — Method.\nConservation of energy for two basins, a and b:\nh_a + v_a^2 / (2 * g) = h_b + v_b^2 / (2 * g) + S_f * L + C / 2 * g * (v_b^2 - v_a^2)\nWhere:\n\nha, hb are the heads at basin a and b.\nva, vb are the velocities at basin a and b.\ng is the gravitational constant.\nS_f is the friction slope.\nC is an expansion or extraction coefficient.\n\nWe assume velocity differences are negligible (va = vb):\nh_a = h_b + S_f * L\nThe friction losses are approximated by the Gauckler-Manning formula:\nQ = A * (1 / n) * R_h^(2/3) * S_f^(1/2)\nWhere:\n\nWhere A is the cross-sectional area.\nV is the cross-sectional average velocity.\nn is the Gauckler-Manning coefficient.\nR_h is the hydraulic radius.\nS_f is the friction slope.\n\nThe hydraulic radius is defined as:\nR_h = A / P\nWhere P is the wetted perimeter.\nThe average of the upstream and downstream water depth is used to compute cross-sectional area and hydraulic radius. This ensures that a basin can receive water after it has gone dry.\nsource\n# Ribasim.formulate_flow! — Method.\nDirected graph: outflow is positive!\nsource\n# Ribasim.get_area_and_level — Method.\nCompute the area and level of a basin given its storage. Also returns darea/dlevel as it is needed for the Jacobian.\nsource\n# Ribasim.get_basin_capacity — Method.\nGet the capacity of the basin, i.e. the maximum flow that can be abstracted from the basin if it is in a state of surplus storage (0 if no reference levels are provided by a level_demand node). Storages are converted to flows by dividing by the allocation timestep.\nsource\n# Ribasim.get_basin_data — Method.\nGet several variables associated with a basin:\n\nIts current storage\nThe allocation update interval\nThe influx (sum of instantaneous vertical fluxes of the basin)\nThe index of the connected level_demand node (0 if such a node does not exist)\nThe index of the basin\n\nsource\n# Ribasim.get_basin_demand — Method.\nGet the demand of the basin, i.e. how large a flow the basin needs to get to its minimum target level (0 if no reference levels are provided by a level_demand node). Storages are converted to flows by dividing by the allocation timestep.\nsource\n# Ribasim.get_chunk_sizes — Method.\nGet the chunk sizes for DiffCache; differentiation w.r.t. u and t (the latter only if a Rosenbrock algorithm is used).\nsource\n# Ribasim.get_compressor — Method.\nGet the compressor based on the Results section\nsource\n# Ribasim.get_flow — Method.\nGet the flow over the given edge (val is needed for get_tmp from ForwardDiff.jl).\nsource\n# Ribasim.get_fractional_flow_connected_basins — Method.\nGet the node type specific indices of the fractional flows and basins, that are consecutively connected to a node of given id.\nsource\n# Ribasim.get_jac_prototype — Method.\nGet a sparse matrix whose sparsity matches (with some false positives) the sparsity of the Jacobian of the ODE problem. All nodes are taken into consideration, also the ones that are inactive.\nIn Ribasim the Jacobian is typically sparse because each state only depends on a small number of other states.\nNote: the name ‘prototype’ does not mean this code is a prototype, it comes from the naming convention of this sparsity structure in the differentialequations.jl docs.\nsource\n# Ribasim.get_level — Method.\nGet the current water level of a node ID. The ID can belong to either a Basin or a LevelBoundary. storage: tells ForwardDiff whether this call is for differentiation or not\nsource\n# Ribasim.get_scalar_interpolation — Method.\nLinear interpolation of a scalar with constant extrapolation.\nsource\n# Ribasim.get_storage_from_level — Method.\nGet the storage of a basin from its level.\nsource\n# Ribasim.get_storages_and_levels — Method.\nGet the storage and level of all basins as matrices of nbasin × ntime\nsource\n# Ribasim.get_storages_from_levels — Method.\nCompute the storages of the basins based on the water level of the basins.\nsource\n# Ribasim.get_tstops — Method.\nFrom an iterable of DateTimes, find the times the solver needs to stop\nsource\n# Ribasim.get_value — Method.\nGet a value for a condition. Currently supports getting levels from basins and flows from flow boundaries.\nsource\n# Ribasim.get_Δt — Method.\nGet the time interval between (flow) saves\nsource\n# Ribasim.id_index — Method.\nGet the index of an ID in a set of indices.\nsource\n# Ribasim.indicate_allocation_flow! — Method.\nAdd to the edge metadata that the given edge is used for allocation flow. If the edge does not exist, it is created.\nsource\n# Ribasim.inflow_id — Method.\nGet the unique inneighbor over a flow edge.\nsource\n# Ribasim.inflow_ids — Method.\nGet the inneighbors over flow edges.\nsource\n# Ribasim.inflow_ids_allocation — Method.\nGet the inneighbors of the given ID such that the connecting edge is an allocation flow edge.\nsource\n# Ribasim.inneighbor_labels_type — Method.\nGet the inneighbor node IDs of the given node ID (label) over the given edge type in the graph.\nsource\n# Ribasim.inoutflow_ids — Method.\nGet the in- and outneighbors over flow edges.\nsource\n# Ribasim.integrate_flows! — Method.\nIntegrate flows over the last timestep\nsource\n# Ribasim.is_allocation_source — Method.\nFind out whether the given edge is a source for an allocation network.\nsource\n# Ribasim.is_current_module — Method.\nis_current_module(log::LogMessageType)::Bool\nReturns true if the log message is from the current module or a submodule.\n\nSee https://github.com/JuliaLogging/LoggingExtras.jl/blob/d35e7c8cfc197853ee336ace17182e6ed36dca24/src/CompositionalLoggers/earlyfiltered.jl#L39\nfor the information available in log.\nsource\n# Ribasim.is_flow_constraining — Method.\nWhether the given node node is flow constraining by having a maximum flow rate.\nsource\n# Ribasim.is_flow_direction_constraining — Method.\nWhether the given node is flow direction constraining (only in direction of edges).\nsource\n# Ribasim.load_data — Method.\nload_data(db::DB, config::Config, nodetype::Symbol, kind::Symbol)::Union{Table, Query, Nothing}\nLoad data from Arrow files if available, otherwise the database. Returns either an Arrow.Table, SQLite.Query or nothing if the data is not present.\nsource\n# Ribasim.load_structvector — Method.\nload_structvector(db::DB, config::Config, ::Type{T})::StructVector{T}\nLoad data from Arrow files if available, otherwise the database. Always returns a StructVector of the given struct type T, which is empty if the table is not found. This function validates the schema, and enforces the required sort order.\nsource\n# Ribasim.low_storage_factor — Method.\nIf id is a Basin with storage below the threshold, return a reduction factor != 1\nsource\n# Ribasim.main — Method.\nmain(toml_path::AbstractString)::Cint\nmain(ARGS::Vector{String})::Cint\nmain()::Cint\nThis is the main entry point of the application. Performs argument parsing and sets up logging for both terminal and file. Calls Ribasim.run() and handles exceptions to convert to exit codes.\nsource\n# Ribasim.metadata_from_edge — Method.\nGet the metadata of an edge in the graph from an edge of the underlying DiGraph.\nsource\n# Ribasim.nodefields — Method.\nGet all node fieldnames of the parameter object.\nsource\n# Ribasim.nodetype — Method.\nFrom a SchemaVersion(“ribasim.flowboundary.static”, 1) return (:FlowBoundary, :static)\nsource\n# Ribasim.outflow_id — Method.\nGet the unique outneighbor over a flow edge.\nsource\n# Ribasim.outflow_ids — Method.\nGet the outneighbors over flow edges.\nsource\n# Ribasim.outflow_ids_allocation — Method.\nGet the outneighbors of the given ID such that the connecting edge is an allocation flow edge.\nsource\n# Ribasim.outneighbor_labels_type — Method.\nGet the outneighbor node IDs of the given node ID (label) over the given edge type in the graph.\nsource\n# Ribasim.parse_static_and_time — Method.\nProcess the data in the static and time tables for a given node type. The ‘defaults’ named tuple dictates how missing data is filled in. ‘time_interpolatables’ is a vector of Symbols of parameter names for which a time interpolation (linear) object must be constructed. The control mapping for DiscreteControl is also constructed in this function. This function currently does not support node states that are defined by more than one row in a table, as is the case for TabulatedRatingCurve.\nsource\n# Ribasim.pkgversion — Method.\nGet the package version of a given module\nsource\n# Ribasim.process_allocation_graph_edges! — Method.\nFor the composite allocation network edges:\n\nFind out whether they are connected to allocation network nodes on both ends\nCompute their capacity\nFind out their allowed flow direction(s)\n\nsource\n# Ribasim.profile_storage — Method.\nCalculate a profile storage by integrating the areas over the levels\nsource\n# Ribasim.qh_interpolation — Method.\nFrom a table with columns nodeid, flowrate (Q) and level (h), create a LinearInterpolation from level to flow rate for a given node_id.\nsource\n# Ribasim.reduction_factor — Method.\nFunction that goes smoothly from 0 to 1 in the interval [0,threshold], and is constant outside this interval.\nsource\n# Ribasim.run — Method.\nrun(config_file::AbstractString)::Model\nrun(config::Config)::Model\nRun a Model, given a path to a TOML configuration file, or a Config object. Running a model includes initialization, solving to the end with [solve!](@ref) and writing results with write_results.\nsource\n# Ribasim.save_allocation_flows! — Method.\nSave the allocation flows per basin and physical edge.\nsource\n# Ribasim.save_demands_and_allocations! — Method.\nSave the demands and allocated flows for UserDemand and Basin. Note: Basin supply (negative demand) is only saved for the first priority.\nsource\n# Ribasim.save_flow — Method.\nCompute the average flows over the last saveat interval and write them to SavedValues\nsource\n# Ribasim.save_subgrid_level — Method.\nInterpolate the levels and save them to SavedValues\nsource\n# Ribasim.save_vertical_flux — Method.\nCompute the average vertical fluxes over the last saveat interval and write them to SavedValues\nsource\n# Ribasim.scalar_interpolation_derivative — Method.\nDerivative of scalar interpolation.\nsource\n# Ribasim.seconds — Method.\nseconds(period::Millisecond)::Float64\nConvert a period of type Millisecond to a Float64 in seconds. You get Millisecond objects when subtracting two DateTime objects. Dates.value returns the number of milliseconds.\nsource\n# Ribasim.seconds_since — Method.\nseconds_since(t::DateTime, t0::DateTime)::Float64\nConvert a DateTime to a float that is the number of seconds since the start of the simulation. This is used to convert between the solver’s inner float time, and the calendar.\nsource\n# Ribasim.set_capacities_flow_demand_outflow! — Method.\nSet the capacity of the outflow edge from a node with a flow demand:\n\nTo Inf if the current priority is other than the priority of the flow demand\nTo 0.0 if the current priority is equal to the priority of the flow demand\n\nsource\n# Ribasim.set_current_value! — Method.\nFrom a timeseries table time, load the most recent applicable data into table. table must be a NamedTuple of vectors with all variables that must be loaded. The most recent applicable data is non-NaN data for a given ID that is on or before t.\nsource\n# Ribasim.set_flow! — Method.\nSet the given flow q over the edge between the given nodes.\nsource\n# Ribasim.set_fractional_flow_in_allocation! — Method.\nUpdate the fractional flow fractions in an allocation problem.\nsource\n# Ribasim.set_initial_capacities_basin! — Method.\nSet the initial capacity of each basin in the subnetwork as vertical fluxes + the disk of storage above the maximum level / Δt_allocation\nsource\n# Ribasim.set_initial_capacities_buffer! — Method.\nSet the flow buffer of nodes with a flow demand to 0.0\nsource\n# Ribasim.set_initial_capacities_edge! — Method.\nSet the capacities of the allocation flow edges as determined by the smallest maxflowrate of a node on this edge\nsource\n# Ribasim.set_initial_capacities_inlet! — Method.\nSet the capacities of the main network to subnetwork inlets. Per optimization type: internalsources: 0.0 collectdemands: Inf allocate: the total flow allocated to this inlet from the main network\nsource\n# Ribasim.set_initial_capacities_returnflow! — Method.\nSet the initial capacities of the UserDemand return flow sources to 0.\nsource\n# Ribasim.set_initial_capacities_source! — Method.\nSet the capacities of the sources in the subnetwork as the latest instantaneous flow out of the source in the physical layer\nsource\n# Ribasim.set_initial_demands_flow! — Method.\nSet the initial demands of the nodes with a flow demand to the interpolated value from the given timeseries.\nsource\n# Ribasim.set_initial_demands_level! — Method.\nSet the initial demand of each basin in the subnetwork as\n\nvertical fluxes + the disk of missing storage below the minimum level / Δt_allocation\n\nsource\n# Ribasim.set_initial_demands_user! — Method.\nSet the demands of the user demand nodes as given by either a coupled model or a timeseries\nsource\n# Ribasim.set_initial_discrete_controlled_parameters! — Method.\nSet parameters of nodes that are controlled by DiscreteControl to the values corresponding to the initial state of the model.\nsource\n# Ribasim.set_initial_values! — Method.\nSet the initial capacities and demands which are recudes by usage in the adjust*capacities**! and adjust*demands**! functions respectively.\nsource\n# Ribasim.set_is_pid_controlled! — Method.\nSet ispidcontrolled to true for those pumps and outlets that are PID controlled\nsource\n# Ribasim.set_objective_priority! — Method.\nSet the objective for the given priority. For an objective with absolute values this also involves adjusting constraints.\nsource\n# Ribasim.set_static_value! — Method.\nLoad data from a source table static into a destination table. Data is matched based on the node_id, which is sorted.\nsource\n# Ribasim.set_table_row! — Method.\nUpdate table at row index i, with the values of a given row. table must be a NamedTuple of vectors with all variables that must be loaded. The row must contain all the column names that are present in the table. If a value is missing, it is not set.\nsource\n# Ribasim.sorted_table! — Method.\nDepending on if a table can be sorted, either sort it or assert that it is sorted.\nTables loaded from the database into memory can be sorted. Tables loaded from Arrow files are memory mapped and can therefore not be sorted.\nsource\n# Ribasim.tsaves — Method.\nGet all saved times in seconds since start\nsource\n# Ribasim.update_allocation! — Method.\nSolve the allocation problem for all demands and assign allocated abstractions.\nsource\n# Ribasim.update_basin — Method.\nLoad updates from ‘Basin / time’ into the parameters\nsource\n# Ribasim.update_jac_prototype! — Method.\nAdd nonzeros for basins connected to eachother via 1 node and possibly a fractional flow node Basins are also assumed to depend on themselves (main diagonal terms)\nsource\n# Ribasim.update_jac_prototype! — Method.\nAdd nonzeros for the integral term and the basins on either side of the controlled node\nsource\n# Ribasim.update_tabulated_rating_curve! — Method.\nLoad updates from ‘TabulatedRatingCurve / time’ into the parameters\nsource\n# Ribasim.update_vertical_flux! — Method.\nSmoothly let the evaporation flux go to 0 when at small water depths Currently at less than 0.1 m.\nsource\n# Ribasim.valid_discrete_control — Method.\nCheck:\n\nwhether control states are defined for discrete controlled nodes;\nWhether the supplied truth states have the proper length;\nWhether look_ahead is only supplied for condition variables given by a time-series.\n\nsource\n# Ribasim.valid_edge_types — Method.\nCheck that only supported edge types are declared.\nsource\n# Ribasim.valid_edges — Method.\nTest for each node given its node type whether the nodes that\nare downstream (‘down-edge’) of this node are of an allowed type\nsource\n# Ribasim.valid_flow_rates — Method.\nTest whether static or discrete controlled flow rates are indeed non-negative.\nsource\n# Ribasim.valid_fractional_flow — Method.\nCheck that nodes that have fractional flow outneighbors do not have any other type of outneighbor, that the fractions leaving a node add up to ≈1 and that the fractions are non-negative.\nsource\n# Ribasim.valid_n_neighbors — Method.\nTest for each node given its node type whether it has an allowed number of flow/control inneighbors and outneighbors\nsource\n# Ribasim.valid_profiles — Method.\nCheck whether the profile data has no repeats in the levels and the areas start positive.\nsource\n# Ribasim.valid_sources — Method.\nThe source nodes must only have one allocation outneighbor and no allocation inneighbors.\nsource\n# Ribasim.valid_subgrid — Method.\nValidate the entries for a single subgrid element.\nsource\n# Ribasim.water_balance! — Method.\nThe right hand side function of the system of ODEs set up by Ribasim.\nsource\n# Ribasim.write_arrow — Method.\nWrite a result table to disk as an Arrow file\nsource\n# Ribasim.write_results — Method.\nwrite_results(model::Model)::Model\nWrite all results to the Arrow files as specified in the model configuration.\nsource\n# Ribasim.config.algorithm — Method.\nCreate an OrdinaryDiffEqAlgorithm from solver config\nsource\n# Ribasim.config.convert_dt — Method.\nConvert the dt from our Config to SciML stepsize control arguments\nsource\n# Ribasim.config.convert_saveat — Method.\nConvert the saveat Float64 from our Config to SciML’s saveat\nsource\n# Ribasim.config.input_path — Method.\nConstruct a path relative to both the TOML directory and the optional input_dir\nsource\n# Ribasim.config.results_path — Method.\nConstruct a path relative to both the TOML directory and the optional results_dir\nsource\n# Ribasim.config.snake_case — Method.\nConvert a string from CamelCase to snake_case.\nsource",
                       "crumbs": [
                         "Julia core",
                         "API Reference"
                  @@ -288,7 +288,7 @@
                       "href": "build/index.html#index",
                       "title": "1 API Reference",
                       "section": "1.6 Index",
                  -    "text": "1.6 Index\n\nRibasim.Ribasim\nRibasim.config\nRibasim.config.algorithms\nRibasim.Allocation\nRibasim.AllocationModel\nRibasim.AllocationModel\nRibasim.Basin\nRibasim.DiscreteControl\nRibasim.EdgeMetadata\nRibasim.FlatVector\nRibasim.FlowBoundary\nRibasim.FractionalFlow\nRibasim.InNeighbors\nRibasim.LevelBoundary\nRibasim.LevelDemand\nRibasim.LinearResistance\nRibasim.ManningResistance\nRibasim.Model\nRibasim.NodeMetadata\nRibasim.OutNeighbors\nRibasim.Outlet\nRibasim.PidControl\nRibasim.Pump\nRibasim.Subgrid\nRibasim.TabulatedRatingCurve\nRibasim.Terminal\nRibasim.UserDemand\nRibasim.config.Config\nBasicModelInterface.finalize\nBasicModelInterface.initialize\nCommonSolve.solve!\nRibasim.add_basin_term!\nRibasim.add_constraints_absolute_value!\nRibasim.add_constraints_absolute_value_flow_demand!\nRibasim.add_constraints_absolute_value_level_demand!\nRibasim.add_constraints_absolute_value_user_demand!\nRibasim.add_constraints_basin_flow!\nRibasim.add_constraints_buffer!\nRibasim.add_constraints_capacity!\nRibasim.add_constraints_conservation_basin!\nRibasim.add_constraints_conservation_flow_demand!\nRibasim.add_constraints_conservation_subnetwork!\nRibasim.add_constraints_flow_demand_outflow!\nRibasim.add_constraints_fractional_flow!\nRibasim.add_constraints_source!\nRibasim.add_constraints_user_source!\nRibasim.add_flow_demand_term!\nRibasim.add_objective_term!\nRibasim.add_subnetwork_connections!\nRibasim.add_user_demand_term!\nRibasim.add_variables_absolute_value!\nRibasim.add_variables_basin!\nRibasim.add_variables_flow!\nRibasim.add_variables_flow_buffer!\nRibasim.adjust_capacities_basin!\nRibasim.adjust_capacities_buffer!\nRibasim.adjust_capacities_edge!\nRibasim.adjust_capacities_returnflow!\nRibasim.adjust_capacities_source!\nRibasim.adjust_demands_flow!\nRibasim.adjust_demands_level!\nRibasim.adjust_demands_user!\nRibasim.all_neighbor_labels_type\nRibasim.allocate!\nRibasim.allocation_graph\nRibasim.allocation_graph_used_nodes!\nRibasim.allocation_problem\nRibasim.allocation_table\nRibasim.assign_allocations!\nRibasim.basin_bottom\nRibasim.basin_table\nRibasim.config.algorithm\nRibasim.config.convert_dt\nRibasim.config.convert_saveat\nRibasim.config.input_path\nRibasim.config.results_path\nRibasim.config.snake_case\nRibasim.create_callbacks\nRibasim.create_graph\nRibasim.create_storage_tables\nRibasim.datetime_since\nRibasim.datetimes\nRibasim.discrete_control_affect!\nRibasim.discrete_control_affect_downcrossing!\nRibasim.discrete_control_affect_upcrossing!\nRibasim.discrete_control_condition\nRibasim.discrete_control_table\nRibasim.expand_logic_mapping\nRibasim.find_allocation_graph_edges!\nRibasim.find_subnetwork_connections!\nRibasim.findlastgroup\nRibasim.findsorted\nRibasim.flow_table\nRibasim.formulate_flow!\nRibasim.formulate_flow!\nRibasim.formulate_flow!\nRibasim.get_area_and_level\nRibasim.get_basin_capacity\nRibasim.get_basin_data\nRibasim.get_basin_demand\nRibasim.get_chunk_sizes\nRibasim.get_compressor\nRibasim.get_flow\nRibasim.get_fractional_flow_connected_basins\nRibasim.get_jac_prototype\nRibasim.get_level\nRibasim.get_scalar_interpolation\nRibasim.get_storage_from_level\nRibasim.get_storages_and_levels\nRibasim.get_storages_from_levels\nRibasim.get_tstops\nRibasim.get_value\nRibasim.get_Δt\nRibasim.id_index\nRibasim.indicate_allocation_flow!\nRibasim.inflow_id\nRibasim.inflow_ids\nRibasim.inflow_ids_allocation\nRibasim.inneighbor_labels_type\nRibasim.inoutflow_ids\nRibasim.integrate_flows!\nRibasim.is_allocation_source\nRibasim.is_current_module\nRibasim.is_flow_constraining\nRibasim.is_flow_direction_constraining\nRibasim.load_data\nRibasim.load_structvector\nRibasim.low_storage_factor\nRibasim.main\nRibasim.metadata_from_edge\nRibasim.nodefields\nRibasim.nodetype\nRibasim.outflow_id\nRibasim.outflow_ids\nRibasim.outflow_ids_allocation\nRibasim.outneighbor_labels_type\nRibasim.parse_static_and_time\nRibasim.pkgversion\nRibasim.process_allocation_graph_edges!\nRibasim.profile_storage\nRibasim.qh_interpolation\nRibasim.reduction_factor\nRibasim.run\nRibasim.save_allocation_flows!\nRibasim.save_demands_and_allocations!\nRibasim.save_flow\nRibasim.save_subgrid_level\nRibasim.save_vertical_flux\nRibasim.scalar_interpolation_derivative\nRibasim.seconds_since\nRibasim.set_capacities_flow_demand_outflow!\nRibasim.set_current_value!\nRibasim.set_flow!\nRibasim.set_fractional_flow_in_allocation!\nRibasim.set_initial_capacities_basin!\nRibasim.set_initial_capacities_buffer!\nRibasim.set_initial_capacities_edge!\nRibasim.set_initial_capacities_inlet!\nRibasim.set_initial_capacities_returnflow!\nRibasim.set_initial_capacities_source!\nRibasim.set_initial_demands_flow!\nRibasim.set_initial_demands_level!\nRibasim.set_initial_demands_user!\nRibasim.set_initial_discrete_controlled_parameters!\nRibasim.set_initial_values!\nRibasim.set_is_pid_controlled!\nRibasim.set_objective_priority!\nRibasim.set_static_value!\nRibasim.set_table_row!\nRibasim.sorted_table!\nRibasim.tsaves\nRibasim.update_allocation!\nRibasim.update_basin\nRibasim.update_jac_prototype!\nRibasim.update_jac_prototype!\nRibasim.update_tabulated_rating_curve!\nRibasim.update_vertical_flux!\nRibasim.valid_discrete_control\nRibasim.valid_edge_types\nRibasim.valid_edges\nRibasim.valid_flow_rates\nRibasim.valid_fractional_flow\nRibasim.valid_n_neighbors\nRibasim.valid_profiles\nRibasim.valid_sources\nRibasim.valid_subgrid\nRibasim.water_balance!\nRibasim.write_arrow\nRibasim.write_results\nRibasim.config.@addfields\nRibasim.config.@addnodetypes",
                  +    "text": "1.6 Index\n\nRibasim.Ribasim\nRibasim.config\nRibasim.config.algorithms\nRibasim.Allocation\nRibasim.AllocationModel\nRibasim.AllocationModel\nRibasim.Basin\nRibasim.DiscreteControl\nRibasim.EdgeMetadata\nRibasim.FlatVector\nRibasim.FlatVector\nRibasim.FlowBoundary\nRibasim.FractionalFlow\nRibasim.InNeighbors\nRibasim.LevelBoundary\nRibasim.LevelDemand\nRibasim.LinearResistance\nRibasim.ManningResistance\nRibasim.Model\nRibasim.NodeMetadata\nRibasim.OutNeighbors\nRibasim.Outlet\nRibasim.PidControl\nRibasim.Pump\nRibasim.SavedFlow\nRibasim.Subgrid\nRibasim.TabulatedRatingCurve\nRibasim.Terminal\nRibasim.UserDemand\nRibasim.config.Config\nBasicModelInterface.finalize\nBasicModelInterface.initialize\nCommonSolve.solve!\nRibasim.add_basin_term!\nRibasim.add_constraints_absolute_value!\nRibasim.add_constraints_absolute_value_flow_demand!\nRibasim.add_constraints_absolute_value_level_demand!\nRibasim.add_constraints_absolute_value_user_demand!\nRibasim.add_constraints_basin_flow!\nRibasim.add_constraints_buffer!\nRibasim.add_constraints_capacity!\nRibasim.add_constraints_conservation_basin!\nRibasim.add_constraints_conservation_flow_demand!\nRibasim.add_constraints_conservation_subnetwork!\nRibasim.add_constraints_flow_demand_outflow!\nRibasim.add_constraints_fractional_flow!\nRibasim.add_constraints_source!\nRibasim.add_constraints_user_source!\nRibasim.add_flow_demand_term!\nRibasim.add_objective_term!\nRibasim.add_subnetwork_connections!\nRibasim.add_user_demand_term!\nRibasim.add_variables_absolute_value!\nRibasim.add_variables_basin!\nRibasim.add_variables_flow!\nRibasim.add_variables_flow_buffer!\nRibasim.adjust_capacities_basin!\nRibasim.adjust_capacities_buffer!\nRibasim.adjust_capacities_edge!\nRibasim.adjust_capacities_returnflow!\nRibasim.adjust_capacities_source!\nRibasim.adjust_demands_flow!\nRibasim.adjust_demands_level!\nRibasim.adjust_demands_user!\nRibasim.all_neighbor_labels_type\nRibasim.allocate!\nRibasim.allocation_graph\nRibasim.allocation_graph_used_nodes!\nRibasim.allocation_problem\nRibasim.allocation_table\nRibasim.assign_allocations!\nRibasim.basin_bottom\nRibasim.basin_table\nRibasim.config.algorithm\nRibasim.config.convert_dt\nRibasim.config.convert_saveat\nRibasim.config.input_path\nRibasim.config.results_path\nRibasim.config.snake_case\nRibasim.create_callbacks\nRibasim.create_graph\nRibasim.create_storage_tables\nRibasim.datetime_since\nRibasim.datetimes\nRibasim.discrete_control_affect!\nRibasim.discrete_control_affect_downcrossing!\nRibasim.discrete_control_affect_upcrossing!\nRibasim.discrete_control_condition\nRibasim.discrete_control_table\nRibasim.expand_logic_mapping\nRibasim.find_allocation_graph_edges!\nRibasim.find_subnetwork_connections!\nRibasim.findlastgroup\nRibasim.findsorted\nRibasim.flow_table\nRibasim.formulate_flow!\nRibasim.formulate_flow!\nRibasim.formulate_flow!\nRibasim.get_area_and_level\nRibasim.get_basin_capacity\nRibasim.get_basin_data\nRibasim.get_basin_demand\nRibasim.get_chunk_sizes\nRibasim.get_compressor\nRibasim.get_flow\nRibasim.get_fractional_flow_connected_basins\nRibasim.get_jac_prototype\nRibasim.get_level\nRibasim.get_scalar_interpolation\nRibasim.get_storage_from_level\nRibasim.get_storages_and_levels\nRibasim.get_storages_from_levels\nRibasim.get_tstops\nRibasim.get_value\nRibasim.get_Δt\nRibasim.id_index\nRibasim.indicate_allocation_flow!\nRibasim.inflow_id\nRibasim.inflow_ids\nRibasim.inflow_ids_allocation\nRibasim.inneighbor_labels_type\nRibasim.inoutflow_ids\nRibasim.integrate_flows!\nRibasim.is_allocation_source\nRibasim.is_current_module\nRibasim.is_flow_constraining\nRibasim.is_flow_direction_constraining\nRibasim.load_data\nRibasim.load_structvector\nRibasim.low_storage_factor\nRibasim.main\nRibasim.metadata_from_edge\nRibasim.nodefields\nRibasim.nodetype\nRibasim.outflow_id\nRibasim.outflow_ids\nRibasim.outflow_ids_allocation\nRibasim.outneighbor_labels_type\nRibasim.parse_static_and_time\nRibasim.pkgversion\nRibasim.process_allocation_graph_edges!\nRibasim.profile_storage\nRibasim.qh_interpolation\nRibasim.reduction_factor\nRibasim.run\nRibasim.save_allocation_flows!\nRibasim.save_demands_and_allocations!\nRibasim.save_flow\nRibasim.save_subgrid_level\nRibasim.save_vertical_flux\nRibasim.scalar_interpolation_derivative\nRibasim.seconds\nRibasim.seconds_since\nRibasim.set_capacities_flow_demand_outflow!\nRibasim.set_current_value!\nRibasim.set_flow!\nRibasim.set_fractional_flow_in_allocation!\nRibasim.set_initial_capacities_basin!\nRibasim.set_initial_capacities_buffer!\nRibasim.set_initial_capacities_edge!\nRibasim.set_initial_capacities_inlet!\nRibasim.set_initial_capacities_returnflow!\nRibasim.set_initial_capacities_source!\nRibasim.set_initial_demands_flow!\nRibasim.set_initial_demands_level!\nRibasim.set_initial_demands_user!\nRibasim.set_initial_discrete_controlled_parameters!\nRibasim.set_initial_values!\nRibasim.set_is_pid_controlled!\nRibasim.set_objective_priority!\nRibasim.set_static_value!\nRibasim.set_table_row!\nRibasim.sorted_table!\nRibasim.tsaves\nRibasim.update_allocation!\nRibasim.update_basin\nRibasim.update_jac_prototype!\nRibasim.update_jac_prototype!\nRibasim.update_tabulated_rating_curve!\nRibasim.update_vertical_flux!\nRibasim.valid_discrete_control\nRibasim.valid_edge_types\nRibasim.valid_edges\nRibasim.valid_flow_rates\nRibasim.valid_fractional_flow\nRibasim.valid_n_neighbors\nRibasim.valid_profiles\nRibasim.valid_sources\nRibasim.valid_subgrid\nRibasim.water_balance!\nRibasim.write_arrow\nRibasim.write_results\nRibasim.config.@addfields\nRibasim.config.@addnodetypes",
                       "crumbs": [
                         "Julia core",
                         "API Reference"
                  @@ -732,7 +732,7 @@
                       "href": "core/usage.html#basin---basin.arrow",
                       "title": "Usage",
                       "section": "20.1 Basin - basin.arrow",
                  -    "text": "20.1 Basin - basin.arrow\nThe Basin table contains:\n\nResults of the storage and level of each basin, which are instantaneous values;\nResults of the vertical fluxes on each basin, which are mean values over the saveat intervals. In the time column the start of the period is indicated.\nThe final state of the model is not part of this file, and will be placed in a separate output state file in the future.\n\nThe initial condition is also written to the file.\n\n\n\ncolumn\ntype\nunit\n\n\n\n\ntime\nDateTime\n-\n\n\nnode_id\nInt32\n-\n\n\nstorage\nFloat64\n\\(m^3\\)\n\n\nlevel\nFloat64\n\\(m\\)\n\n\nprecipitation\nFloat64\n\\(m^3 s^{-1}\\)\n\n\nevaporation\nFloat64\n\\(m^3 s^{-1}\\)\n\n\ndrainage\nFloat64\n\\(m^3 s^{-1}\\)\n\n\ninfiltration\nFloat64\n\\(m^3 s^{-1}\\)\n\n\n\nThe table is sorted by time, and per time it is sorted by node_id.",
                  +    "text": "20.1 Basin - basin.arrow\nThe Basin table contains:\n\nResults of the storage and level of each Basin, which are instantaneous values;\nResults of the fluxes on each Basin, which are mean values over the saveat intervals. In the time column the start of the period is indicated.\nThe initial condition is written to the file, but the final state is not. It will be placed in a separate output state file in the future.\nThe inflow_rate and outflow_rate are the sum of the flows from other nodes into and out of the Basin respectively. The actual flows determine in which term they are counted, not the edge direction.\nThe storage_rate is flow that adds to the storage in the Basin, increasing the water level. In the equations below this number is split out into two non-negative numbers, storage_increase and storage_decrease.\nThe balance_error is the difference of all Basin inflows (total_inflow) and outflows (total_outflow), that is (inflow_rate + precipitation + drainage - storage_increase) - (outflow_rate + evaporation + infiltration - storage_decrease). It can be used to check if the numerical error when solving the water balance is sufficiently small.\nThe relative_error is the fraction of the balance_error over the mean of the total_inflow and total_outflow.\n\n\n\n\ncolumn\ntype\nunit\n\n\n\n\ntime\nDateTime\n-\n\n\nnode_id\nInt32\n-\n\n\nstorage\nFloat64\n\\(m^3\\)\n\n\nlevel\nFloat64\n\\(m\\)\n\n\ninflow_rate\nFloat64\n\\(m^3 s^{-1}\\)\n\n\noutflow_rate\nFloat64\n\\(m^3 s^{-1}\\)\n\n\nstorage_rate\nFloat64\n\\(m^3 s^{-1}\\)\n\n\nprecipitation\nFloat64\n\\(m^3 s^{-1}\\)\n\n\nevaporation\nFloat64\n\\(m^3 s^{-1}\\)\n\n\ndrainage\nFloat64\n\\(m^3 s^{-1}\\)\n\n\ninfiltration\nFloat64\n\\(m^3 s^{-1}\\)\n\n\nbalance_error\nFloat64\n\\(m^3 s^{-1}\\)\n\n\nrelative_error\nFloat64\n-\n\n\n\nThe table is sorted by time, and per time it is sorted by node_id.",
                       "crumbs": [
                         "Julia core",
                         "Usage"
                  @@ -819,7 +819,7 @@
                       "href": "core/equations.html#sec-reduction_factor",
                       "title": "Equations",
                       "section": "2.1 The reduction factor",
                  -    "text": "2.1 The reduction factor\nAt several points in the equations below a reduction factor is used. This is a term that makes certain transitions more smooth, for instance when a pump stops providing water when its source basin dries up. The reduction factor is given by\n\\[\\begin{align}\n    \\phi(x; p) =\n    \\begin{cases}\n    0 &\\text{if}\\quad x < 0 \\\\\n        -2 \\left(\\frac{x}{p}\\right)^3 + 3\\left(\\frac{x}{p}\\right)^2 &\\text{if}\\quad 0 \\le x \\le p \\\\\n        1 &\\text{if}\\quad x > p\n    \\end{cases}\n\\end{align}\\]\nHere \\(p > 0\\) is the threshold value which determines the interval \\([0,p]\\) of the smooth transition between \\(0\\) and \\(1\\), see the plot below.\n\n\nCode\nimport numpy as np\nimport matplotlib.pyplot as plt\n\ndef f(x, p = 3):\n    x_scaled = x / p\n    phi = (-2 * x_scaled + 3) * x_scaled**2\n    phi = np.where(x < 0, 0, phi)\n    phi = np.where(x > p, 1, phi)\n\n    return phi\n\nfontsize = 15\np = 3\nN = 100\nx_min = -1\nx_max = 4\nx = np.linspace(x_min,x_max,N)\nphi = f(x,p)\n\nfig,ax = plt.subplots(dpi=80)\nax.plot(x,phi)\n\ny_lim = ax.get_ylim()\n\nax.set_xticks([0,p], [0,\"$p$\"], fontsize=fontsize)\nax.set_yticks([0,1], [0,1], fontsize=fontsize)\nax.hlines([0,1],x_min,x_max, color = \"k\", ls = \":\", zorder=-1)\nax.vlines([0,p], *y_lim, color = \"k\", ls = \":\")\nax.set_xlim(x_min,x_max)\nax.set_xlabel(\"$x$\", fontsize=fontsize)\nax.set_ylabel(\"$\\phi(x;p)$\", fontsize=fontsize)\nax.set_ylim(y_lim)\n\nfig.tight_layout()\nplt.show()\n\n\n<>:31: SyntaxWarning:\n\ninvalid escape sequence '\\p'\n\n<>:31: SyntaxWarning:\n\ninvalid escape sequence '\\p'\n\n/tmp/ipykernel_5182/665069857.py:31: SyntaxWarning:\n\ninvalid escape sequence '\\p'",
                  +    "text": "2.1 The reduction factor\nAt several points in the equations below a reduction factor is used. This is a term that makes certain transitions more smooth, for instance when a pump stops providing water when its source basin dries up. The reduction factor is given by\n\\[\\begin{align}\n    \\phi(x; p) =\n    \\begin{cases}\n    0 &\\text{if}\\quad x < 0 \\\\\n        -2 \\left(\\frac{x}{p}\\right)^3 + 3\\left(\\frac{x}{p}\\right)^2 &\\text{if}\\quad 0 \\le x \\le p \\\\\n        1 &\\text{if}\\quad x > p\n    \\end{cases}\n\\end{align}\\]\nHere \\(p > 0\\) is the threshold value which determines the interval \\([0,p]\\) of the smooth transition between \\(0\\) and \\(1\\), see the plot below.\n\n\nCode\nimport numpy as np\nimport matplotlib.pyplot as plt\n\ndef f(x, p = 3):\n    x_scaled = x / p\n    phi = (-2 * x_scaled + 3) * x_scaled**2\n    phi = np.where(x < 0, 0, phi)\n    phi = np.where(x > p, 1, phi)\n\n    return phi\n\nfontsize = 15\np = 3\nN = 100\nx_min = -1\nx_max = 4\nx = np.linspace(x_min,x_max,N)\nphi = f(x,p)\n\nfig,ax = plt.subplots(dpi=80)\nax.plot(x,phi)\n\ny_lim = ax.get_ylim()\n\nax.set_xticks([0,p], [0,\"$p$\"], fontsize=fontsize)\nax.set_yticks([0,1], [0,1], fontsize=fontsize)\nax.hlines([0,1],x_min,x_max, color = \"k\", ls = \":\", zorder=-1)\nax.vlines([0,p], *y_lim, color = \"k\", ls = \":\")\nax.set_xlim(x_min,x_max)\nax.set_xlabel(\"$x$\", fontsize=fontsize)\nax.set_ylabel(\"$\\phi(x;p)$\", fontsize=fontsize)\nax.set_ylim(y_lim)\n\nfig.tight_layout()\nplt.show()\n\n\n<>:31: SyntaxWarning:\n\ninvalid escape sequence '\\p'\n\n<>:31: SyntaxWarning:\n\ninvalid escape sequence '\\p'\n\n/tmp/ipykernel_5125/665069857.py:31: SyntaxWarning:\n\ninvalid escape sequence '\\p'",
                       "crumbs": [
                         "Julia core",
                         "Equations"
                  @@ -973,7 +973,7 @@
                       "href": "core/allocation.html#example",
                       "title": "Allocation",
                       "section": "4.4 Example",
                  -    "text": "4.4 Example\nThe following is an example of an optimization problem for the example shown here:\n\n\nCode\nusing Ribasim\nusing Ribasim: NodeID\nusing SQLite\nusing ComponentArrays: ComponentVector\n\ntoml_path = normpath(@__DIR__, \"../../generated_testmodels/allocation_example/ribasim.toml\")\np = Ribasim.Model(toml_path).integrator.p\nu = ComponentVector(; storage = zeros(length(p.basin.node_id)))\n\nallocation_model = p.allocation.allocation_models[1]\nt = 0.0\npriority_idx = 1\n\nRibasim.set_flow!(p.graph, NodeID(:FlowBoundary, 1), NodeID(:Basin, 2), 1.0)\nRibasim.set_objective_priority!(allocation_model, p, u, t, priority_idx)\nRibasim.set_initial_values!(allocation_model, p, u, t)\n\nprintln(p.allocation.allocation_models[1].problem)\n\n\nMin F_abs_user_demand[UserDemand #3] + F_abs_user_demand[UserDemand #6] + F_abs_user_demand[UserDemand #13] + F_abs_level_demand[Basin #2] + F_abs_level_demand[Basin #12] + F_abs_level_demand[Basin #5]\nSubject to\n abs_positive_user_demand[UserDemand #3] : -F[(Basin #2, UserDemand #3)] + F_abs_user_demand[UserDemand #3] ≥ 0\n abs_positive_user_demand[UserDemand #6] : -F[(Basin #5, UserDemand #6)] + F_abs_user_demand[UserDemand #6] ≥ 0\n abs_positive_user_demand[UserDemand #13] : -F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0\n abs_negative_user_demand[UserDemand #3] : F[(Basin #2, UserDemand #3)] + F_abs_user_demand[UserDemand #3] ≥ 0\n abs_negative_user_demand[UserDemand #6] : F[(Basin #5, UserDemand #6)] + F_abs_user_demand[UserDemand #6] ≥ 0\n abs_negative_user_demand[UserDemand #13] : F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0\n abs_positive_basin[Basin #2] : -F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0\n abs_positive_basin[Basin #12] : -F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0\n abs_positive_basin[Basin #5] : -F_basin_in[Basin #5] + F_abs_level_demand[Basin #5] ≥ 0\n abs_negative_basin[Basin #2] : F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0\n abs_negative_basin[Basin #12] : F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0\n abs_negative_basin[Basin #5] : F_basin_in[Basin #5] + F_abs_level_demand[Basin #5] ≥ 0\n F[(TabulatedRatingCurve #7, Basin #12)] ≥ 0\n F[(UserDemand #3, Basin #2)] ≥ 0\n F[(Basin #5, UserDemand #6)] ≥ 0\n F[(FlowBoundary #1, Basin #2)] ≥ 0\n F[(Basin #2, Basin #5)] ≥ 0\n F[(Basin #5, Basin #2)] ≥ 0\n F[(Basin #2, UserDemand #3)] ≥ 0\n F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0\n F[(UserDemand #6, Basin #5)] ≥ 0\n F[(TabulatedRatingCurve #7, Terminal #10)] ≥ 0\n F[(UserDemand #13, Terminal #10)] ≥ 0\n F[(Basin #12, UserDemand #13)] ≥ 0\n F_basin_in[Basin #2] ≥ 0\n F_basin_in[Basin #12] ≥ 0\n F_basin_in[Basin #5] ≥ 0\n F_basin_out[Basin #2] ≥ 0\n F_basin_out[Basin #12] ≥ 0\n F_basin_out[Basin #5] ≥ 0\n source[(FlowBoundary #1, Basin #2)] : F[(FlowBoundary #1, Basin #2)] ≤ 1\n F[(UserDemand #3, Basin #2)] ≤ 0\n F[(UserDemand #6, Basin #5)] ≤ 0\n F[(UserDemand #13, Terminal #10)] ≤ 0\n fractional_flow[(TabulatedRatingCurve #7, Basin #12)] : F[(TabulatedRatingCurve #7, Basin #12)] - 0.4 F[(Basin #5, TabulatedRatingCurve #7)] ≤ 0\n basin_outflow[Basin #2] : F_basin_out[Basin #2] ≤ 0\n basin_outflow[Basin #12] : F_basin_out[Basin #12] ≤ 0\n basin_outflow[Basin #5] : F_basin_out[Basin #5] ≤ 0\n flow_conservation_basin[Basin #2] : -F[(UserDemand #3, Basin #2)] - F[(FlowBoundary #1, Basin #2)] + F[(Basin #2, Basin #5)] - F[(Basin #5, Basin #2)] + F[(Basin #2, UserDemand #3)] + F_basin_in[Basin #2] - F_basin_out[Basin #2] = 0\n flow_conservation_basin[Basin #12] : -F[(TabulatedRatingCurve #7, Basin #12)] + F[(Basin #12, UserDemand #13)] + F_basin_in[Basin #12] - F_basin_out[Basin #12] = 0\n flow_conservation_basin[Basin #5] : F[(Basin #5, UserDemand #6)] - F[(Basin #2, Basin #5)] + F[(Basin #5, Basin #2)] + F[(Basin #5, TabulatedRatingCurve #7)] - F[(UserDemand #6, Basin #5)] + F_basin_in[Basin #5] - F_basin_out[Basin #5] = 0",
                  +    "text": "4.4 Example\nThe following is an example of an optimization problem for the example shown here:\n\n\nCode\nusing Ribasim\nusing Ribasim: NodeID\nusing SQLite\nusing ComponentArrays: ComponentVector\n\ntoml_path = normpath(@__DIR__, \"../../generated_testmodels/allocation_example/ribasim.toml\")\np = Ribasim.Model(toml_path).integrator.p\nu = ComponentVector(; storage = zeros(length(p.basin.node_id)))\n\nallocation_model = p.allocation.allocation_models[1]\nt = 0.0\npriority_idx = 1\n\nRibasim.set_flow!(p.graph, NodeID(:FlowBoundary, 1), NodeID(:Basin, 2), 1.0)\nRibasim.set_objective_priority!(allocation_model, p, u, t, priority_idx)\nRibasim.set_initial_values!(allocation_model, p, u, t)\n\nprintln(p.allocation.allocation_models[1].problem)\n\n\nMin F_abs_user_demand[UserDemand #13] + F_abs_user_demand[UserDemand #3] + F_abs_user_demand[UserDemand #6] + F_abs_level_demand[Basin #5] + F_abs_level_demand[Basin #12] + F_abs_level_demand[Basin #2]\nSubject to\n abs_positive_user_demand[UserDemand #13] : -F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0\n abs_positive_user_demand[UserDemand #3] : -F[(Basin #2, UserDemand #3)] + F_abs_user_demand[UserDemand #3] ≥ 0\n abs_positive_user_demand[UserDemand #6] : -F[(Basin #5, UserDemand #6)] + F_abs_user_demand[UserDemand #6] ≥ 0\n abs_negative_user_demand[UserDemand #13] : F[(Basin #12, UserDemand #13)] + F_abs_user_demand[UserDemand #13] ≥ 0\n abs_negative_user_demand[UserDemand #3] : F[(Basin #2, UserDemand #3)] + F_abs_user_demand[UserDemand #3] ≥ 0\n abs_negative_user_demand[UserDemand #6] : F[(Basin #5, UserDemand #6)] + F_abs_user_demand[UserDemand #6] ≥ 0\n abs_positive_basin[Basin #5] : -F_basin_in[Basin #5] + F_abs_level_demand[Basin #5] ≥ 0\n abs_positive_basin[Basin #12] : -F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0\n abs_positive_basin[Basin #2] : -F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0\n abs_negative_basin[Basin #5] : F_basin_in[Basin #5] + F_abs_level_demand[Basin #5] ≥ 0\n abs_negative_basin[Basin #12] : F_basin_in[Basin #12] + F_abs_level_demand[Basin #12] ≥ 0\n abs_negative_basin[Basin #2] : F_basin_in[Basin #2] + F_abs_level_demand[Basin #2] ≥ 0\n F[(UserDemand #13, Terminal #10)] ≥ 0\n F[(Basin #5, UserDemand #6)] ≥ 0\n F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0\n F[(Basin #12, UserDemand #13)] ≥ 0\n F[(FlowBoundary #1, Basin #2)] ≥ 0\n F[(UserDemand #3, Basin #2)] ≥ 0\n F[(Basin #2, Basin #5)] ≥ 0\n F[(Basin #2, UserDemand #3)] ≥ 0\n F[(UserDemand #6, Basin #5)] ≥ 0\n F[(Basin #5, Basin #2)] ≥ 0\n F[(TabulatedRatingCurve #7, Terminal #10)] ≥ 0\n F[(TabulatedRatingCurve #7, Basin #12)] ≥ 0\n F_basin_in[Basin #5] ≥ 0\n F_basin_in[Basin #12] ≥ 0\n F_basin_in[Basin #2] ≥ 0\n F_basin_out[Basin #5] ≥ 0\n F_basin_out[Basin #12] ≥ 0\n F_basin_out[Basin #2] ≥ 0\n source[(FlowBoundary #1, Basin #2)] : F[(FlowBoundary #1, Basin #2)] ≤ 1\n F[(UserDemand #13, Terminal #10)] ≤ 0\n F[(UserDemand #3, Basin #2)] ≤ 0\n F[(UserDemand #6, Basin #5)] ≤ 0\n fractional_flow[(TabulatedRatingCurve #7, Basin #12)] : -0.4 F[(Basin #5, TabulatedRatingCurve #7)] + F[(TabulatedRatingCurve #7, Basin #12)] ≤ 0\n basin_outflow[Basin #5] : F_basin_out[Basin #5] ≤ 0\n basin_outflow[Basin #12] : F_basin_out[Basin #12] ≤ 0\n basin_outflow[Basin #2] : F_basin_out[Basin #2] ≤ 0\n flow_conservation_basin[Basin #5] : F[(Basin #5, UserDemand #6)] + F[(Basin #5, TabulatedRatingCurve #7)] - F[(Basin #2, Basin #5)] - F[(UserDemand #6, Basin #5)] + F[(Basin #5, Basin #2)] + F_basin_in[Basin #5] - F_basin_out[Basin #5] = 0\n flow_conservation_basin[Basin #12] : F[(Basin #12, UserDemand #13)] - F[(TabulatedRatingCurve #7, Basin #12)] + F_basin_in[Basin #12] - F_basin_out[Basin #12] = 0\n flow_conservation_basin[Basin #2] : -F[(FlowBoundary #1, Basin #2)] - F[(UserDemand #3, Basin #2)] + F[(Basin #2, Basin #5)] + F[(Basin #2, UserDemand #3)] - F[(Basin #5, Basin #2)] + F_basin_in[Basin #2] - F_basin_out[Basin #2] = 0",
                       "crumbs": [
                         "Julia core",
                         "Allocation"