ISEAFrame  2.26.1
Parsing of the thermal model

Abstract

The parametrization of the thermal model is done by the use of a xml file. The aim is to construct a regular base structure, which could be expanded on demand to include single irregular structures. The basic idea of the developed concept is to parse the xml file twice in the same order (once for the electrical and once for the thermal model). Thereby the connection between both models is done by identical structural order. The basis of the thermal model are the thermal blocks and the cooling. The thermal blocks define all important data, which are given in a particular space. The cooling, thermal materials and thermal blocks are addressed in more detail in other context. Standard cooling is applied to each surface, which is open to the environment.This can be adjusted in the options. Global options can be adjusted in the <Options>-node.

Sofware basics

The software workflow of the thermal model should be shortly outlined in the following paragraph (see picture):

  • The parameterization of the thermal model is given in the xml file and is woven into the parameterization of the electrical model.
  • The major part of the parameterization is given by the definition of thermal blocks and coolings, which are supplied by the xml file.
  • This creates the following data structures and passes them to the thermal-model class:
    • Thermal blocks: finite volumes, thermal conductivity, outer surface and geometrical dimensions
    • Cooling: geometry, outer surfaces, strength
  • The thermal-model class generates a blank data structure, which is passed to the equation system.
  • The equation system is constructed once at the beginning. Afterwards, the actual simulation starts: The equation system passes all necessary data to the solver. This process is repeated until the simulation time is entirely simulated.



Heat generation

Heat generation can be devided into two parts, irreversible and reversible heat.

\[ P_{gesamt} = P_{revsible} + P_{irrevsible} \]

The irreversible heat, also called joule heating, can be caluclated from the ohmic losses of the impedance an is usally proportinal to the quadratic current. The reversible heat, caused by change in entropy, can be evaluated by a lookup. The heat generation is linear to the current. The underlaying formula that is used is as follows:

\[ p= i \cdot T \frac{dV(SOC, T)}{dT} \]

The lookup can be influenced by the xml node <ReversibleHeat/>.

Scanning process

Firstly, following nodes are parsed consecutively:

  • <ThermalMaterials>: All thermal materials, which are in use, are defined here. Every material has to be cached with cache="true" and afterwards called with cachref.
  • <CachedCoolings>: All physical components of the cooling can be defined here. Those have to be cached with cache="true" and afterwards called with cachref. This is done by calling the <Cooling>-node within the cooling block with the cachref-attribute. The physical component of the cooling can also be defined directly within the <CoolingBlocks>-node. Hereby the <CoolingBlocks>-node is defined in sito.
  • <CoolingBlocks>: The coolings can be defined here. These have to be cached with cache="true" and afterwards called with cachref. Every cooling can optionally be multiplied with a count-loop(dx, dy, dz, see next section); therefore, the corresponding attributes in xml nodes have to be given. Coolings can also be defined in the <CoolingBlocks>-nodes, which are recursively contained in the RootElement.

Afterwards, the actual parse process begins. The parser of the thermal model parses the xml nodes recursively, until

  • he comes across a <ThermalBlock>-, <AdditionalBlocks> or <CoolingBlocks>-node within a cell element or an ohmic resistance, or
  • he comes across <AdditionalBlocks> or <CoolingBlocks>-nodes within a series or parallel connection. If this occurs, thermal blocks or coolings are created according to the given definitions:
<RootElement class="SerialTwoPort">
    <Children count="3" dx="0.05">
        <Line class="ParallelTwoPort">
            <Children count="5" dy="0.04">
                <Cell ref="MyCellElement1"/>
                <Cell ref="MyCellElement1" dz="0.03"/>
            </Children>
        </Line>
    </Children>
</RootElement>
<MyCellElement1 class="CellElement" observable="True">
      ...
      <ReversibleHeat class="ConstObj"><Value>1e-4<Value></ReversibleHeat>
      <ThermalBlock ref="SupercapCellBlock"/>
      <UnheatedBlocks>
        <Block1 ref="BlockType1"/>
        <Block2 ref="BlockType1" dy="0.075"/>
      </UnheatedBlocks>
</MyCellElement1>
  • A <ThermalBlock>-node leads directly to the creation of a thermal block, which is linked with the electrical model. Consequently, its heat and temperature are interchanged with the elecrical model.
  • An <AdditionalBlocks>-node contains a listing of thermal blocks, which are not linked with the electrical model.
  • A <CoolingBlocks>-node contains a listing of coolings.

Positioning of the thermal blocks

The position of the thermal blocks is controlled by the attributes "dx", "dy" and "dz". Those attributes can appear at three different places.

  • Within the <Children>-nodes of the series or parallel connections.
  • Wihtin the child nodes of the <Children>-nodes of the series or parallel connections.
  • Within the child nodes of the <AdditionalBlocks>-nodes

They define the shift in the global cartesian coordinate system. Starting at the global origing, the placement point is shifted in each case by the corresponding value. This placement point is then passed recursively. The exact system is as follows:

  • The <Children>-node is parsed "count" times. For each repetition the placement is shifted by the values of the attributes "dx", "dy" and "dz".
  • A further shift by "dx", "dy" and "dz" within the child nodes of the <Children>-node and the <AdditionalBlocks>-node is possible.

Positioning of thermal sensors

By the use of <ThermalProbe>-nodes, sensors can be added at arbitrary point. They can be deposited as X,Y,Z tuples in the subnode <Position>. The sensors compute the nearest centre of a finite volume and output the volumes temperature. This function can be useful to examine suspected hotspots in detail or recreate measuring points in real packs.

<ThermalProbe>
    <Position>
    0.3370, 0.5500, -0.1260;
    0.3370, 0.5500, -0.0720;
    0.3370, 0.5500, -0.0180;
    0.5710, 0.4720, -0.0180;
    0.3343, 0.2344,  0.1340;
    0.3343, 0.2344,  0.0820;
    0.3343, 0.2344,  0.0300;
    0.3370, 0.1560, -0.1260;
    0.3370, 0.1560, -0.0720;
    0.3370, 0.1560, -0.0180;
    </Position>
</ThermalProbe>