{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "sacramentosimplifiedfixedparsprocedure.json",
    "title": "SacramentoSimplifiedFixedParsProcedure",
    "type": "object",
    "description": "Simplified (10-parameter) Sacramento for precipitation - discharge transformation with fixed soil parameters",
    "allOf": [
        {
            "$ref": "procedure.json"
        }
    ],
    "properties": {
        "type": {
            "type": "string",
            "enum": [
                "SacramentoSimplifiedFixedPars",
                "SacramentoSimplifiedFixedParsProcedure"
            ]
        },
        "initial_states": {
            "type": "array",
            "description": "Initial storages: [x1,x2,x3,x4]",
            "minItems": 4,
            "maxItems": 4,
            "items": {
                "type": "number"
            }
        },
        "parameters": {
            "$ref": "sacramentosimplifiedfixedparsprocedure.json#/$defs/Parameters"
        },
        "fixed_parameters": {
            "$ref": "sacramentosimplifiedfixedparsprocedure.json#/$defs/FixedParameters"
        },
        "extra_pars": {
            "$ref": "sacramentosimplifiedfixedparsprocedure.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
        },
        "FixedParameters": {
            "type": "object",
            "description": "Overrides parameters. The parameters declared here will skip calibration.",
            "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 [-]"
                }
            },
            "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 (0-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
        }
    }
}