{
  "format": "lemonergy/dual-battery-catalog@1",
  "title": "Dual-battery truck systems",
  "canonicalUrl": "https://lemonergy.com/wiki/dual-battery-truck/",
  "qualification": "Software verification of declared reduced models. Pack advancement uses the shared native Design solver; route, service-event and comparison orchestration use shared Design JavaScript. Generic parameter assumptions are not measured validation of the announced truck, reserve, switching hardware, ageing or station network. Fleet cost calculation is deferred.",
  "defaultParameters": {
    "mainEnergyKWh": 432,
    "reserveEnergyKWh": 77,
    "mainReturnSoc": 0.05,
    "reserveMinSoc": 0.1,
    "mainInitialSoc": 0.95,
    "reserveInitialSoc": 0.9,
    "mainMassKg": 2600,
    "reserveMassKg": 500,
    "hardwareMassKg": 100,
    "curbKg": 10000,
    "payloadKg": 20000,
    "maximumGrossKg": 44000,
    "routeKm": 400,
    "detourKm": 0,
    "routeStopMinutes": 0,
    "serviceDeadlineHours": 0,
    "speedKph": 70,
    "gradePct": 0,
    "ambientC": 20,
    "repeats": 2,
    "sampleTimeS": 300,
    "stationSwapMinutes": 5,
    "stationReadyPacks": 2,
    "rechargePowerKW": 231,
    "sitePowerKW": 500,
    "chargerEfficiency": 0.95,
    "mainDischargeA": 1000,
    "reserveDischargeA": 400
  },
  "parameterFields": [
    {
      "id": "mainEnergyKWh",
      "label": "Main battery nominal energy",
      "unit": "kWh",
      "default": 432,
      "min": 10,
      "max": 1000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "reserveEnergyKWh",
      "label": "Reserve nominal energy",
      "unit": "kWh",
      "default": 77,
      "min": 1,
      "max": 300,
      "step": 1,
      "type": "number"
    },
    {
      "id": "mainReturnSoc",
      "label": "Dual-system main return SOC",
      "unit": "one",
      "default": 0.05,
      "min": 0.02,
      "max": 0.8,
      "step": 0.01,
      "type": "number"
    },
    {
      "id": "reserveMinSoc",
      "label": "Protected reserve SOC floor",
      "unit": "one",
      "default": 0.1,
      "min": 0.01,
      "max": 0.7,
      "step": 0.01,
      "type": "number"
    },
    {
      "id": "mainInitialSoc",
      "label": "Main departure SOC",
      "unit": "one",
      "default": 0.95,
      "min": 0.2,
      "max": 1,
      "step": 0.01,
      "type": "number"
    },
    {
      "id": "reserveInitialSoc",
      "label": "Reserve departure SOC",
      "unit": "one",
      "default": 0.9,
      "min": 0.2,
      "max": 1,
      "step": 0.01,
      "type": "number"
    },
    {
      "id": "mainMassKg",
      "label": "Declared main pack mass",
      "unit": "kg",
      "default": 2600,
      "min": 50,
      "max": 10000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "reserveMassKg",
      "label": "Declared reserve pack mass",
      "unit": "kg",
      "default": 500,
      "min": 10,
      "max": 3000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "hardwareMassKg",
      "label": "Dual-source added hardware mass",
      "unit": "kg",
      "default": 100,
      "min": 0,
      "max": 1000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "curbKg",
      "label": "Vehicle mass excluding batteries and payload",
      "unit": "kg",
      "default": 10000,
      "min": 1000,
      "max": 30000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "payloadKg",
      "label": "Payload to deliver",
      "unit": "kg",
      "default": 20000,
      "min": 0,
      "max": 50000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "maximumGrossKg",
      "label": "Maximum permitted gross vehicle mass",
      "unit": "kg",
      "default": 44000,
      "min": 5000,
      "max": 100000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "routeKm",
      "label": "Distance between replenishment visits",
      "unit": "km",
      "default": 180,
      "min": 0.1,
      "max": 3000,
      "step": 10,
      "type": "number"
    },
    {
      "id": "detourKm",
      "label": "Additional station access detour",
      "unit": "km",
      "default": 0,
      "min": 0,
      "max": 500,
      "step": 1,
      "type": "number"
    },
    {
      "id": "routeStopMinutes",
      "label": "Authored mid-route stop with auxiliary load",
      "unit": "min",
      "default": 0,
      "min": 0,
      "max": 240,
      "step": 1,
      "type": "number"
    },
    {
      "id": "serviceDeadlineHours",
      "label": "Repeating arrival deadline period (0 disables)",
      "unit": "h",
      "default": 0,
      "min": 0,
      "max": 168,
      "step": 0.1,
      "type": "number"
    },
    {
      "id": "speedKph",
      "label": "Authored cruise speed",
      "unit": "km/h",
      "default": 60,
      "min": 1,
      "max": 110,
      "step": 1,
      "type": "number"
    },
    {
      "id": "gradePct",
      "label": "Authored constant route gradient",
      "unit": "percent",
      "default": 0,
      "min": -15,
      "max": 15,
      "step": 0.1,
      "type": "number"
    },
    {
      "id": "ambientC",
      "label": "Ambient temperature",
      "unit": "degC",
      "default": 25,
      "min": -40,
      "max": 55,
      "step": 1,
      "type": "number"
    },
    {
      "id": "repeats",
      "label": "Repeated service routes",
      "unit": "one",
      "default": 2,
      "min": 1,
      "max": 16,
      "step": 1,
      "type": "number"
    },
    {
      "id": "sampleTimeS",
      "label": "Mission supervisory interval",
      "unit": "s",
      "default": 300,
      "min": 30,
      "max": 1800,
      "step": 30,
      "type": "number"
    },
    {
      "id": "stationSwapMinutes",
      "label": "Declared mechanical swap duration",
      "unit": "min",
      "default": 5,
      "min": 1,
      "max": 60,
      "step": 1,
      "type": "number"
    },
    {
      "id": "stationReadyPacks",
      "label": "Initially ready compatible main packs",
      "unit": "one",
      "default": 2,
      "min": 0,
      "max": 16,
      "step": 1,
      "type": "number"
    },
    {
      "id": "rechargePowerKW",
      "label": "Power per station charge port",
      "unit": "kW",
      "default": 200,
      "min": 1,
      "max": 2000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "sitePowerKW",
      "label": "Shared station electrical limit",
      "unit": "kW",
      "default": 400,
      "min": 1,
      "max": 10000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "chargerEfficiency",
      "label": "External charger efficiency",
      "unit": "one",
      "default": 0.95,
      "min": 0.5,
      "max": 1,
      "step": 0.01,
      "type": "number"
    },
    {
      "id": "mainDischargeA",
      "label": "Assumed main discharge current limit",
      "unit": "A",
      "default": 1000,
      "min": 1,
      "max": 3000,
      "step": 1,
      "type": "number"
    },
    {
      "id": "reserveDischargeA",
      "label": "Assumed reserve discharge current limit",
      "unit": "A",
      "default": 400,
      "min": 1,
      "max": 2000,
      "step": 1,
      "type": "number"
    }
  ],
  "runtime": {
    "engineSha256": "9386ef7fa79e20200f25aa70348a0129093c9ad1d3121649dae0adf14e726fab",
    "manifest": "./runtime-manifest.json",
    "canonicalModule": "js/dual-source-scenarios.js",
    "numerics": {
      "packRelativeTolerance": 1e-8,
      "socTaperTimeS": 1,
      "chargeTemperatureK": [
        273.15,
        318.15
      ],
      "dischargeTemperatureK": [
        233.15,
        333.15
      ],
      "scope": "Inspected canonical pack model defaults. Route supervisory interval and fast electrical window are separate declared time scales."
    }
  },
  "models": [
    {
      "id": "dual-battery-truck-baseline",
      "variant": "baseline",
      "model": "./models/dual-battery-truck-baseline.json",
      "modelSha256": "af6d3afa5d3e4e5320566b24d9c1795fe2f5dbdc1ed1a2f3cbd31ae4baacdd61",
      "studioExample": "dual-battery-truck-baseline"
    },
    {
      "id": "dual-battery-truck-policy-only",
      "variant": "policy-only",
      "model": "./models/dual-battery-truck-policy-only.json",
      "modelSha256": "1f3bc3b10f129b1655fe1507ae95ae5292d74cfe3046593bc152a2a75eebe776",
      "studioExample": "dual-battery-truck-policy-only"
    },
    {
      "id": "dual-battery-truck-dual",
      "variant": "dual",
      "model": "./models/dual-battery-truck-dual.json",
      "modelSha256": "15f760e7e74b73c391241fc0d79c824c3a51db8d99a7a562e5273f5e0a16b6c1",
      "studioExample": "dual-battery-truck-dual"
    },
    {
      "id": "dual-battery-truck-equal-energy-fixed",
      "variant": "equal-energy-fixed",
      "model": "./models/dual-battery-truck-equal-energy-fixed.json",
      "modelSha256": "89bf7c70e20999d2e7fe403003e5c1a3f45e15f619346e52add319f3cb556f0c",
      "studioExample": "dual-battery-truck-equal-energy-fixed"
    },
    {
      "id": "dual-battery-truck-smaller-main",
      "variant": "smaller-main",
      "model": "./models/dual-battery-truck-smaller-main.json",
      "modelSha256": "d42409a013585a9b858ab8ae3af88877e8c917de9f5bf67d8b878c40e28fe0f3",
      "studioExample": "dual-battery-truck-smaller-main"
    },
    {
      "id": "dual-battery-truck-cold-reserve",
      "variant": "cold-reserve",
      "model": "./models/dual-battery-truck-cold-reserve.json",
      "modelSha256": "694181a502aa3fbb0232747b2902761d02d000576671a79f591edc3000f85a8b",
      "studioExample": "dual-battery-truck-cold-reserve"
    },
    {
      "id": "dual-battery-truck-high-power-reserve",
      "variant": "high-power-reserve",
      "model": "./models/dual-battery-truck-high-power-reserve.json",
      "modelSha256": "1d917aa9494dc2876818e2f3525c9606ecee397f6e9cf88b814658d4308ae452",
      "studioExample": "dual-battery-truck-high-power-reserve"
    }
  ]
}
