Battery knowledge · Transport and modelling
Digital twin
A model of a specific battery, kept in step with its real counterpart by live data, used to estimate state, predict life and plan operation. The term is used loosely; a model only earns it when it is continuously updated from the asset.
Example
Transport and modelling: an example situation
The same concentration difference across 10 μm gives ten times the gradient across 100 μm; at equal D, first-law flux magnitude is ten times greater.
Read Digital twin alongside Aging model in this context. A model that predicts capacity fade and resistance growth as functions of time, temperature, SOC and throughput. Empirical models fit power laws and Arrhenius terms to test data; physics-based models simulate the SEI, plating and cracking mechanisms themselves.
Use in Lemonergy
Lemonergy Studio blocks
Update nested battery telemetry
Replaces selected bus fields while preserving every other field.
Blocks to use
- Bus assignment
Replacement ports inherit the exact declared field types. The original bus value remains unchanged for other consumers.
Inputs & settings
- Use the block reference for settings and connections.
- Bundled example verified on the production release of 28 October 2026.
This overview identifies the components to use. Follow the example in Lemonergy for their connections and settings.
- 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. Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.
Observe. Inspect the output channels and checks on the block reference page.
A field and one of its descendants cannot be replaced in the same assignment; replacement paths must be distinct.
Open Studio example →Lemonergy Studio blocks
Update nested battery telemetry
Collects typed named fields into a bus, including nested buses.
Blocks to use
- Bus creator
Field names, quantities and nested bus types come from an explicit versioned declaration; no numerical values are changed.
Inputs & settings
- Use the block reference for settings and connections.
- Bundled example verified on the production release of 28 October 2026.
This overview identifies the components to use. Follow the example in Lemonergy for their connections and settings.
- 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. Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.
Observe. Inspect the output channels and checks on the block reference page.
Bus declarations must be acyclic, at most 16 levels deep, with at most 4096 leaves.
Open Studio example →Lemonergy Studio blocks
Update nested battery telemetry
Selects one declared field or nested field from a named bus.
Blocks to use
- Bus selector
A dotted field path selects the original typed value; missing fields are rejected before simulation.
Inputs & settings
- Use the block reference for settings and connections.
- Bundled example verified on the production release of 28 October 2026.
This overview identifies the components to use. Follow the example in Lemonergy for their connections and settings.
- 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. Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.
Observe. Inspect the output channels and checks on the block reference page.
Paths must exist in the declared bus version; dynamic field names are not supported.
Open Studio example →All connected Lemonergy block references
- Bus assignment
- Bus creator
- Bus selector
- Bus to vector
- Storage declaration
- Storage reader
- Storage writer
- Enumeration code
- Enumeration constant
- Named signal receiver
- Named signal sender
- Signal visibility scope
- Submodel input boundary
- Manual variant sink
- Manual variant source
- Adjustable gain
- Algebraic residual constraint
- Arithmetic bit shift
- Array element submodel
- Assertion
- Array assignment
- Bias
- Clear bit
- Pack Boolean bits
- Set bit
- Bitwise operator
- Boolean operator
- Dynamic forbidden interval check
- Dynamic lower-bound check
- Dynamic range check
- Dynamic upper-bound check
- Signal gap check
- Sample difference check
- Static lower-bound check
- Static range check
- Input resolution check
- Forbidden interval check
- Static upper-bound check
- Linear frequency sweep
- Compare to constant
- Compare to zero
- Complex to real and imaginary
- Complex to magnitude and angle
- Array constant
- Bounded counter
- Cross product
- Sampled storage
- Dead zone
- Vector splitter
- Create diagonal matrix
- Digital clock
- Direct N-D lookup
- Live signal display
- Dot product
- Dynamic dead zone
- Dynamic interval test
- Dynamic 1-D lookup
- Dynamic saturation
- Expand scalar
- Extract bit range
- Extract diagonal
- Find nonzero elements
- Float32 bit pattern
- Coulomb and viscous friction
- Gram matrix
- Hermitian transpose
- Identity matrix
- Initial value override
- Integer to Boolean bits
- Interpolate from prelookup
- Interval test
- Is Hermitian
- Is symmetric
- Is triangular
- 1-D lookup table
- 2-D lookup table
- N-D lookup table
- Manual switch
- Math function
- Matrix concatenate
- Matrix multiply
- Multiport switch
- Neighborhood submodel
- Normal random source
- Real and imaginary to complex
- Permute array dimensions
- Permute matrix rows and columns
- Pixel channel submodel
- Recorded signal
- Magnitude and angle to complex
- Polynomial
- Prelookup
- Product of elements
- Pulse generator
- Quantized sine in cycles
- Quantizer
- Ramp
- Rate transition
- Signal recorder
- Sum or mean of elements
- Repeating sequence
- Reshape array
- Rounding
- Weighted sample time math
- Signal scope
- Element selector
- Signal specification
- Signal width
- Sine source
- Sine wave function
- Remove singleton dimensions
- Array step
- Stop simulation
- Extract submatrix
- Signal terminator
- Simulation time
- Matrix transpose
- Trigonometric function
- Truth table
- Numeric type conversion
- Uniform random source
- Vector concatenate
- Reset above threshold
- Submodel output boundary
- Scaled integer constant
- Scaling strip
- Owned signal copy
- Reusable submodel
- Same-type constraint
- Inherited numeric conversion
- Declared type propagation
- Authored unit policy
- Variant branch end
- Variant sink
- Variant source
- Variant branch start
- Variant submodel
- Vector assembly
- Vector selector
References & further reading
Further reading on this topic
These sources provide broader context; they are not presented as citations for every statement in this entry.
- Modeling of Galvanostatic Charge and Discharge of the Lithium/Polymer/Insertion Cell
Marc Doyle, Thomas F. Fuller, John Newman · Journal of The Electrochemical Society · 1993
Topic background · Porous-electrode transport and insertion-cell modeling; foundational work rather than a specification for a particular commercial cell.
- Quantities, Units and Symbols in Physical Chemistry, 3rd edition, 2nd printing
IUPAC · 2011
Topic background · Physical-chemistry notation, thermodynamics, electrochemistry and transport quantities.