{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "sacramentosimplifiedprocedure.json",
    "title": "SacramentoSimplifiedProcedure",
    "type": "object",
    "description": "Simplified (10-parameter) Sacramento for precipitation - discharge transformation",
    "allOf": [
        {
            "$ref": "pqprocedure.json"
        },
        {
            "properties": {
                "type": {
                    "type": "string",
                    "enum": [
                        "SacramentoSimplified",
                        "SacramentoSimplifiedProcedure"
                    ]
                },
                "initial_states": {
                    "type": "array",
                    "description": "Initial storages: [x1,x2,x3,x4]",
                    "minItems": 4,
                    "maxItems": 4,
                    "items": {
                        "type": "number"
                    }
                },
                "parameters": {
                    "$ref": "sacramentosimplifiedprocedure.json#/$defs/Parameters"
                },
                "extra_pars": {
                    "$ref": "sacramentosimplifiedprocedure.json#/$defs/ExtraPars"
                }
            },
            "required": [
                "type",
                "parameters",
                "extra_pars",
                "initial_states"
            ]
        }
    ],
    "$defs": {
        "Parameters": {
            "type": "object",
            "description": "Model parameters object",
            "properties": {
                "x1_0": {
                    "type": "number",
                    "description": "top soil layer storage capacity [L]"
                },
                "x2_0": {
                    "type": "number",
                    "description": "bottom soil layer storage capacity [L]"
                },
                "m1": {
                    "type": "number",
                    "description": "runoff function exponent [-]"
                },
                "c1": {
                    "type": "number",
                    "description": "interflow function coefficient [1/T]"
                },
                "c2": {
                    "type": "number",
                    "description": "percolation function coefficient [-]"
                },
                "c3": {
                    "type": "number",
                    "description": "base flow recession rate [1/T]"
                },
                "mu": {
                    "type": "number",
                    "description": "base flow/deep percolation partition parameter [-]"
                },
                "alfa": {
                    "type": "number",
                    "description": "linear reservoir coefficient [1/T]"
                },
                "m2": {
                    "type": "number",
                    "description": "percolation function exponent [-]"
                },
                "m3": {
                    "type": "number",
                    "description": "evapotranspiration function exponent [-]"
                }
            },
            "required": [
                "x1_0",
                "x2_0",
                "m1",
                "c1",
                "c2",
                "c3",
                "mu",
                "alfa",
                "m2",
                "m3"
            ],
            "additionalProperties": false
        },
        "ExtraPars": {
            "type": "object",
            "properties": {
                "windowsize": {
                    "type": "integer"
                },
                "dt": {
                    "$ref": "timeinterval.json"
                },
                "rho": {
                    "type": "number",
                    "description": "soil porosity (0-1)"
                },
                "area": {
                    "type": "number",
                    "description": "basin area in square meters"
                },
                "ae": {
                    "type": "number",
                    "description": "effective area   (00-1)"
                },
                "wp": {
                    "type": "number",
                    "description": "wilting point of soil (0-1)"
                },
                "sm_transform": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "description": "Linear transformation parameters for soil moisture [intercept, coefficient]",
                    "items": {
                        "type": "number"
                    }
                },
                "par_fg": {
                    "$ref": "sacramentosimplifiedprocedure.json#/$defs/ParFG"
                },
                "max_npasos": {
                    "type": "integer",
                    "description": "Maximum number of substeps"
                },
                "no_check1": {
                    "type": "boolean",
                    "description": "skip numeric stability check 1"
                },
                "no_check2": {
                    "type": "boolean",
                    "description": "skip numeric stability check 2"
                },
                "rk2": {
                    "type": "boolean",
                    "description": "Use Runge-Kutta 2 instead of default Runge-Kutta 4"
                },
                "fill_nulls": {
                    "type": "boolean",
                    "description": "If missing PMAD values, fill up with zeros"
                },
                "compute_mass_balance": {
                    "type": "boolean",
                    "description": "Compute mass balance"
                }
            }
        },
        "ParFG": {
            "description": "flood guidance parameters",
            "type": "object",
            "properties": {
                "CN2": {
                    "type": "number",
                    "description": "Curve number for moisture condition 2"
                },
                "hp1dia": {
                    "type": "number"
                },
                "hp2dias": {
                    "type": "number"
                },
                "Qbanca": {
                    "type": "number",
                    "description": "bankfull discharge"
                }
            },
            "required": [
                "CN2",
                "hp1dia",
                "hp2dias",
                "Qbanca"
            ],
            "additionalProperties": false
        }
    }
}