{
  "node": {
    "id": "block:phase-change-mass",
    "type": "Block",
    "label": "Phase-change thermal mass",
    "properties": {
      "id": "phase-change-mass",
      "name": "Phase-change thermal mass",
      "kind": "studio",
      "summary": "Enthalpy storage with a finite linear melting interval; constant sensible heat capacity, no supercooling or hysteresis",
      "behavior": "Conserving component solved simultaneously with the connected network. Enthalpy storage with a finite linear melting interval; constant sensible heat capacity, no supercooling or hysteresis",
      "ports": [
        {
          "name": "h",
          "direction": "terminal",
          "unit": "K; W",
          "description": "thermal conserving connection; absolute temperature with balanced heat flow."
        },
        {
          "name": "temperature",
          "direction": "output",
          "unit": "K",
          "description": "Recorded temperature measurement from the conserving simulation."
        },
        {
          "name": "liquidFraction",
          "direction": "output",
          "unit": "fraction",
          "description": "Recorded liquid fraction measurement from the conserving simulation."
        },
        {
          "name": "storedEnergy",
          "direction": "output",
          "unit": "J",
          "description": "Recorded stored energy measurement from the conserving simulation."
        }
      ],
      "parameters": [
        {
          "key": "massKg",
          "label": "Mass",
          "unit": "kg",
          "default": 1,
          "description": "Material mass that contributes sensible and, where enabled, latent heat storage.",
          "min": 1e-09,
          "max": 1000000000
        },
        {
          "key": "specificHeatJkgK",
          "label": "Specific heat capacity",
          "unit": "J/(kg K)",
          "default": 2000,
          "description": "Sensible heat required per unit mass and kelvin.",
          "min": 1e-06,
          "max": 1000000000
        },
        {
          "key": "latentHeatJkg",
          "label": "Latent heat",
          "unit": "J/kg",
          "default": 200000,
          "description": "Energy per unit mass stored while the liquid fraction changes from zero to one.",
          "min": 0,
          "max": 1000000000
        },
        {
          "key": "solidusK",
          "label": "Solidus temperature",
          "unit": "K",
          "default": 330,
          "description": "Temperature at which melting begins in the finite transition interval.",
          "min": 0,
          "max": 5000
        },
        {
          "key": "liquidusK",
          "label": "Liquidus temperature",
          "unit": "K",
          "default": 334,
          "description": "Temperature at which the model is fully liquid.",
          "min": 0,
          "max": 5000
        },
        {
          "key": "initialTemperatureK",
          "label": "Initial temperature",
          "unit": "K",
          "default": 300,
          "description": "Absolute initial temperature of the thermal storage.",
          "min": 0,
          "max": 5000
        }
      ],
      "equations": [
        "H = m cp T + m latentHeat × liquidFraction",
        "liquidFraction = clip((T − solidus)/(liquidus − solidus), 0, 1)",
        "dH/dt = Σ Q̇in"
      ],
      "example": {
        "title": "Phase-change thermal mass worked example",
        "text": "Editable first-party network. mass: specificHeatJkgK=2; mass: latentHeatJkg=100; mass: solidusK=310; mass: liquidusK=320; mass: initialTemperatureK=310; heater: heatFlowW=12. Checks below were verified in the native execution engine.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-phase-change-mass",
        "label": "Open Studio example",
        "inputs": [
          {
            "port": "massKg",
            "label": "Mass",
            "value": 1,
            "unit": "kg"
          },
          {
            "port": "specificHeatJkgK",
            "label": "Specific heat capacity",
            "value": 2,
            "unit": "J/(kg K)"
          },
          {
            "port": "latentHeatJkg",
            "label": "Latent heat",
            "value": 100,
            "unit": "J/kg"
          },
          {
            "port": "solidusK",
            "label": "Solidus temperature",
            "value": 310,
            "unit": "K"
          }
        ],
        "checks": [
          {
            "port": "mass/temperature",
            "label": "temperature",
            "atS": 1,
            "value": 311,
            "unit": "K",
            "tolerance": 0.00031100000000000273
          },
          {
            "port": "mass/liquidFraction",
            "label": "liquidFraction",
            "atS": 1,
            "value": 0.1,
            "unit": "fraction",
            "tolerance": 1.0000000000020123e-07
          },
          {
            "port": "mass/storedEnergy",
            "label": "storedEnergy",
            "atS": 1,
            "value": 12,
            "unit": "J",
            "tolerance": 1.2000000000020007e-05
          }
        ]
      },
      "limits": [
        "Enthalpy storage with a finite linear melting interval; constant sensible heat capacity, no supercooling or hysteresis",
        "Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run."
      ],
      "references": [
        "physical-phase",
        "openstax-heat"
      ],
      "availability": {
        "status": "released",
        "label": "Available in Lemonergy Studio",
        "detail": "The bundled example is available in the production release verified on 28 October 2026. The parameters and examples here are synthetic teaching fixtures, not a characterized cell or a validated operating limit."
      },
      "evidence": [
        "docs/glossary/native-block-verification.json"
      ],
      "sourceRepository": "Lemonergy Studio public contract",
      "sourceRevision": "verification-2026-10-27",
      "caseIds": [
        "native-phase-change-mass"
      ],
      "type": "phase-change-mass",
      "implementationId": "phase-change-mass",
      "url": "https://lemonergy.com/learn/glossary/blocks/phase-change-mass/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/phase-change-mass/",
      "sourceFile": "block-library.json",
      "reviewed": "2026-10-27",
      "releaseEvidence": {
        "environment": "production",
        "status": "verified",
        "revision": "e76cadfc203e15eb41f3478d8b1044a5b851953d",
        "verifiedOn": "2026-10-28",
        "exampleUrls": [
          "https://design.lemonergy.com/cosim.html?example=physical-phase-change-mass"
        ]
      }
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/native-phase-change-mass/0",
      "type": "usesBlock",
      "source": "workflow:native-phase-change-mass",
      "target": "block:phase-change-mass",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Phase-change thermal mass",
        "type": "phase-change-mass",
        "role": "Conserving component solved simultaneously with the connected network. Enthalpy storage with a finite linear melting interval; constant sensible heat capacity, no supercooling or hysteresis",
        "settings": [
          "Use the block reference for settings and connections.",
          "Bundled example verified on the production release of 28 October 2026."
        ]
      }
    }
  ],
  "outgoing": [
    {
      "id": "edge:cites/block:phase-change-mass/reference:openstax-heat",
      "type": "cites",
      "source": "block:phase-change-mass",
      "target": "reference:openstax-heat",
      "properties": {
        "sourceFile": "block-library.json",
        "scope": "Scientific or mathematical background; implementation scope is stated by the block contract"
      }
    },
    {
      "id": "edge:cites/block:phase-change-mass/reference:physical-phase",
      "type": "cites",
      "source": "block:phase-change-mass",
      "target": "reference:physical-phase",
      "properties": {
        "sourceFile": "block-library.json",
        "scope": "Scientific or mathematical background; implementation scope is stated by the block contract"
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:native-phase-change-mass",
      "type": "Workflow",
      "label": "Phase-change thermal mass worked example",
      "properties": {
        "id": "native-phase-change-mass",
        "title": "Phase-change thermal mass worked example",
        "kind": "studio",
        "summary": "Enthalpy storage with a finite linear melting interval; constant sensible heat capacity, no supercooling or hysteresis",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. mass: specificHeatJkgK=2; mass: latentHeatJkg=100; mass: solidusK=310; mass: liquidusK=320; mass: initialTemperatureK=310; heater: heatFlowW=12. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Enthalpy storage with a finite linear melting interval; constant sensible heat capacity, no supercooling or hysteresis Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-phase-change-mass",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "reference:openstax-heat",
      "type": "Reference",
      "label": "University Physics Volume 2, §1.6: Mechanisms of Heat Transfer",
      "properties": {
        "title": "University Physics Volume 2, §1.6: Mechanisms of Heat Transfer",
        "publisher": "OpenStax, Rice University",
        "url": "https://openstax.org/books/university-physics-volume-2/pages/1-6-mechanisms-of-heat-transfer",
        "type": "Textbook section",
        "scope": "Conduction, convection, radiation and thermal resistance.",
        "accessed": "2026-10-27"
      }
    },
    {
      "id": "reference:physical-phase",
      "type": "Reference",
      "label": "Phase Changes",
      "properties": {
        "title": "Phase Changes",
        "publisher": "OpenStax, Rice University",
        "url": "https://openstax.org/books/university-physics-volume-2/pages/1-5-phase-changes",
        "type": "Primary educational or metrology reference",
        "scope": "Underlying physical law or reduced-model basis; Lemonergy implementation choices and limits are documented separately.",
        "accessed": "2026-10-27"
      }
    }
  ]
}
