{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.calculatorx.com/schemas/physics.fluid.gradual_contraction.input.json",
  "title": "Gradual contraction — input",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "head",
        "pressure",
        "velocity",
        "angle"
      ],
      "description": "head (default), pressure, velocity, or angle. Not sudden contraction, expansion, minor-loss, Darcy, or Q=Av."
    },
    "v1": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Upstream speed in m/s. Alternative: v1_m_s."
    },
    "v1_m_s": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Upstream speed in m/s (query/UI). REST may send v1."
    },
    "v2": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Downstream speed in m/s. Required except velocity invert. Alternative: v2_m_s."
    },
    "v2_m_s": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Downstream speed in m/s (query/UI). REST may send v2."
    },
    "alpha_deg": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Wall half-angle in degrees. Required except angle invert. Alternative: alpha_rad. Do not send both."
    },
    "alpha_rad": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Wall half-angle in radians. Alternative: alpha_deg. Do not send both."
    },
    "h": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Head loss in m. Required for velocity and angle invert. Alternatives: hm, h_m."
    },
    "h_m": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Head loss in m (query/UI). REST may send h."
    },
    "rho": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Density in kg/m³. Optional; default 1000."
    },
    "g": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Gravity in m/s². Optional; default 9.80665."
    }
  },
  "description": "Conical contraction h=K v2²/(2g), K=0.5 sin(α)(1−v1/v2). Not sudden contraction, not gradual expansion, not minor-loss K given, not Q=Av. (calculation_version 1.0.0)"
}
