THERMISOL UserManual
THERMISOL UserManual
User Guide
September 2022
Ref: UM.000040364.AIRB
Issue: 5
Use of the software and of the present software manual is submitted to a license agreement to be accepted
before the software installation on a computer.
All suggestion or error concerning the software or this software manual can be sent to:
Z.I. du Palays
FRANCE
This document and the information it contains are property of Airbus Defence and Space. It shall not be used for
any purpose other than those for which it was supplied. It shall not be reproduced or disclosed (in whole or in part)
to any third party without Airbus Defence and Space prior written consent.
Temperature Solver
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 4
THERMISOL V4.9 User Guide
Only T, C, QS, QE, QA, QI and QR are used in the solution routines (energy balance for
each node).
Wavelength dependent properties are available only if it has been enable in the
$ENTITIES block by declaring a wavelength band discretization.
Each datum can be time-dependent or can depend on any criterion defined by the user. Here, the objective is to
compute the node temperatures for steady-state or time-dependent cases. In this approach, the thermal problem is
a mere numerical integration. Broadly defined, THERMISOL is a numerical integrator dealing with steady-state and
transient thermal equations.
These routines have been intensively validated and used on real projects such as:MEX,
Pleiades, Ariane5, Arabsat, VEX, Melfi, Intelsat10, Immarsat4, HotBird8, Metop,
Amazonas, Anik, W3A, ISS, Gaia, LHP, etc.
Input data
The selected language format is based on the European standard language ESATAN. Since its creation, the
THERMISOL language, as the ESATAN one, has evolved so they may have differences. However, even if new specific
THERMISOL features have been developed, the compatibility with ESATAN input files is largely maintained.
The input data are described in text file(s), with a Fortran-like syntax to define the nodal network and a Fortran-like
language to program any arbitrary behavior (time-dependent phenomena, temperature-dependent data, etc). The
input data are translated into a Fortran code, compiled and linked with a computation library; this produces an
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 5
THERMISOL V4.9 User Guide
executable program which generates the solution. The selection of a Fortran-like language provides a very flexible
approach and is a solution to complex problems. The Fortran used is called "Mortran" and provides simple access
to nodal entities, couplings or any THERMISOL specific datum.
• The character used to specify that a line is the continuity of the previous one is ' & ' (it is automatically
positioned to the 5th column, as specified by the FORTRAN)
• A line beginning with a series of number written in the first columns is interpreted as a tag and is not
modified by the preprocessor |
However, for compatibility with older version of THERMISOL or with ESATAN files which are in fixed format
(meaning that all lines shall start at column 6 and a first character on column 5 indicates a line continuation),
THERMISOL also checks the meaning of a line when it starts with a character on the 5th column. If the
instruction does not make sense, it is automatically interpreted as the continuation of the previous line. This
behavior is called the MIXED format (meaning that it handles both free and fixed formats). In rare cases, the
mixed interpretation of the format may fail to interpret correctly a fixed format input file, when this one is
written with lines starting on the 5th column that could be interpret as they are (this is not very smart to write
this kind of input files, but it is allowed by the FORTRAN77 fixed format). For this reason, it is possible to
modify the interpretation of the input file by specifying that a strict fixed format shall be interpreted only. The
option for free format only is also available even if it may not be required.
The file format may be specified at the beginning of the file with the instruction: !FORMAT = MIXED (default
value) !FORMAT = FIXED !FORMAT = FREE
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 6
THERMISOL V4.9 User Guide
filename Main input file This is the only input the user has to specify to the
solver.
(any name) Other input files Any arbitrary number of files, used by means of
$INCLUDE instructions, or by sub-modeling
techniques.
OUTPUT Files
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 7
THERMISOL V4.9 User Guide
zz_filename_for.f Fortran code file These files contain the output of the Fortran-
zz_filename_com.fi like language translation
Filename.log Log file This file relates the main events occurring
during the translation task
filename.out Text file This file contains the standard output text
generated during the calculation
(any name) Other specific output files Other specific output files, depending on the
solver subroutines called during the
calculation
(any name) User specific output files User specific output files, which may be
created by user subroutines
The results are returned into an ASCII output file. The output data consist of node temperatures, and optionally all
the properties required for a complete analysis of heat transfers. The user can access several output subroutines
(including spreadsheet formats) and can also define his own data storage. A comma-separated values file is also
updated during the execution of the resolution program so the user can check the convergence of the model. There
are no results but the convergence criteria only. More complete results are exported to a hdf5 binary file for post-
processing use. This file is compatible with SYSTEMA (for graphic post-processing) and with POSTHER (for tabulated
post-processing analysis) or BPLOT (for curve creations).
Software Architecture
The temperature solver includes three main parts:
• A translator , which loads the input data and produces the corresponding Fortran code.
• A computation library , which provides a set of solution routines and several other services.
• A Fortran compiler , which produces the solution program. In general, any compiler can be used (depending
on the computer configuration). However, the use of a generic compiler (GNU) is recommended.
The user input file is translated into a Fortran code, which is compiled and linked with the solver library; this
produces a solution program which generates the required results. A launcher program automatically performs the
chaining of all these tasks.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 8
THERMISOL V4.9 User Guide
Temperature Calculation
The solution program is a merging of the Fortran code written by the user and the solver computation library. After
some initialization operations, the program makes a call to the user subroutine $INITIAL from which some specific
initializations can be performed, and then calls the user subroutine $EXECUTION from which solution routines are
called, typically for a steady-state calculation followed by one or more transient calculations. Each solution routine
will make some regular calls to the user subroutines $VTEMPERATURE, $VTIME, $VRESULT and $OUTPUTS, at
moments which depend on the solution routine (at each time step, at each iteration, …). For the user, its is an
effective way to program specific events: temperature-dependent data (such as conductive couplings or
capacitance), time-dependent data (such as activation/deactivation of heaters or dissipation of equipment),
through a Fortran-like language which enables any arbitrary complex programming. These calls concern the main
model as well as sub-models. Sub-model routines are called before their father, so that the father model's
instructions will take precedence.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 9
THERMISOL V4.9 User Guide
Model definition
The user input is text data, contained in one or several files. The language is based on the ESATAN standard
language.
Comments can be inserted anywhere in the file. The sharp symbol (#) indicates the beginning of a comment, until
the end of line.
A thermal model can be a standalone model or can include sub-models, whose declarations have to be placed
before the definition paragraphs of the father model. There is no restriction on the number of submodels and a
submodel can be used many times as long as the path are unique.
There are different ways to insert a Submodel. Those are described in section 1.5
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 10
THERMISOL V4.9 User Guide
A thermal model begins with a $MODEL instruction and ends with a $ENDMODEL instruction. The definition
paragraphs and execution paragraphs are inserted between them.
All these data are not necessarily stored in the same input file; the use of $INCLUDE instructions enables to
randomly organize data in several files.
Declaration paragraphs
Any type of declarative paragraph may appear several times in one model and in any order. They can also be mixed
with the definition paragraphs.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 11
THERMISOL V4.9 User Guide
$LOCALS
This paragraph contains the declaration of constants available in all the definition paragraphs.
The constants can be: integers, reals or strings. They cannot be modified at any time.
The type may be defined using the sub-blocks $REAL, $INTEGER and $CHARACTER (like in example 1) or using
individual type definitions (like in example 2).
The local constants may be defined equal to expressions involving literal values and local constants of the same
type, provided that the latter have already been defined themselves.
They may be referenced in the declaration, the definition and the execution blocks. They must be defined before
they can be referenced.
Local constants must be preferred to variables one if they are not updated during the simulation. It will save
memory but also the use of those constants will not generate unnecessary GENMOR code (see paragraph on the
GENMOR code).
Since Version 4.2.3, the local variables are accessible in all the code.
Real values are stored in double precision.
Since Version 4.5.0, the type definition may be written without the '*' symbol.
$VARIABLES
This paragraph contains the declaration of variables (integers, reals, strings) available in all the execution
paragraphs. These variables can be used in Mortran expressions (i.e. definition of node temperature, etc.).
This paragraph was previously known as $CONSTANTS but due to its definition its name
has changed since version 4.3.0. However the old name $CONSTANTS is still admitted for
compatibility with previous THERMISOL models and with ESATAN ones.
The variables can be: integers, reals or strings and are declared like in the $LOCALS paragraph.
Unlike the variables declared in $LOCALS, they can be modified by the user.
If a constant is used to define another in the $VARIABLES block or in any other declarative block, then changing the
value of the first during a solution run will automatically cause that of the second to be recalculated accordingly.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 12
THERMISOL V4.9 User Guide
The second one will be referenced by a specific code used to make such automated updates, the GENMOR
subroutine.
The GENMOR subroutine is generated in the same order than the instructions of the input file. It is called at each
end of $VTEMPERATURE call (which is the one the most often called). If an update is explicitly necessary, then the
user can make a call to that routine anywhere in its code.
$CONTROL
This paragraph contains the definition of variables used by the solution routines during computation. The control
variables have specific names. User's variables cannot be defined here. Their values can be changed during the
solution (i.e. in the $INITIAL, $VTEMPERATURE, $VTIME, $VRESULT or $EXECUTION subroutines).
General Controls
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 13
THERMISOL V4.9 User Guide
Steady-State Controls
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 14
THERMISOL V4.9 User Guide
Transient Controls
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 15
THERMISOL V4.9 User Guide
$ARRAYS
This paragraph contains the definition of user arrays. These arrays can be of 1 or 2 dimensions. They can be
integers, reals or strings. They are declared with the same convention than for the $LOCALS and $VARIABLES.
An array is declared with its dimensions into parenthesis. If 2 dimensions are declared the first dimension is the
number of columns and the second is the number of lines. The last dimension may left to '*' in order to adjust
automatically the size of the array according to the declared elements (number of lines in case of a 2D array).
For 2D arrays if the number of declared elements is not a multiple of the number of columns an error will be raised
and the program will stop. Otherwise, if the second dimension is set to '*', it will be automatically adjusted to the
number of lines. If the second dimension is valued and is greater than the number of declared elements, it will also
be adjusted to the number of declared lines. In case the specified dimension is smaller than the number of declared
elements an error will be raised and the program will stop.
In case an array shall be declared with more elements than specified in the instantiation of the array, a parameter
called SIZE may be used to force the size of the array. For 2D array, the specified size shall be a multiple of the
number of column otherwise an error is raised. If the declared size is greater than the number of declared elements,
the array will keep the original size given and will not be automatically adjusted. On the other hand if the declared
size is too small an error is raised.
It exist two instantiation modes for setting the array values:
• Values separated by commas
• A repeated value defined by using the @ character (number of iteration @ value to be affected)
These two modes can be used together (see the above examples).
For the repetition mode, it is possible to use the '*' character meaning the total number of array element. Of course
using *@value is meaningless in the case of a variable length array.
$ARRAYS
$REAL
QI_ES (2,4) =
0.,28.60,
1708.,28.60,
1708.5,20.00,
99999.,20.00,
REAL*HconvPret (2,*) =
.0,1.5,
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 16
THERMISOL V4.9 User Guide
3.0,1.5,
10.0,80.0,
20.0,200.0,
30.0,350.0,
80.0,140.0,
100.0,50.0,
120.0,0.0,
99999.0,0.0;
REAL*CF_ES_(4)=8.79, 11.3, 13.5, 13.9;
REAL*CF_EPED(*)=48.9, 62.8, 74.8, 76.9;
$ARRAYS
$REAL
NN (99999)=99999@0;
REAL*MeanQR(99)=1.0, 2.0, [email protected], 1.0;
CHARACTER*LineName(99)=*@'Initial name';
Since version 4.3.2, $LOCALS references can be used in addition to explicit values. $VARIABLES (or $CONSTANTS)
references are however not allowed (no GENMOR code created for $ARRAYS definitions).
In some cases, it may be required to instantiate some elements of an array from the definition block so it may be
used in other following declaration or definition blocks.
To set a value at a specific location of an array, the command SET can be used:
$TABLES
This paragraph contains the definition of user tables. Tables are similar to arrays but are defined in a spreadsheet-
like syntax. They contain real values only.
As for $ARRAYS element, since version 4.3.2, $LOCALS references can be used in addition to explicit values.
$VARIABLES (or $CONSTANTS) references are however not allowed (no GENMOR code created for $ARRAYS
definitions).
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 17
THERMISOL V4.9 User Guide
Because of a special storage, tables can be used only through solver interpolation
routines.
2D Tables
Those tables can be considered as a function v = f(x,y), where x and y are independent variables.
The syntax of a 2D table is:
TAB(X,Y)
X = x1, … , xn,
Y= y1, v11, … , vn1,
…
Y= ym, v1m, … , vnm;
A table can be defined with both classical (example 1) and transposed (example 2) definitions.
In spite of this transposition, the tables TAB1 and TAB2 defined in these 2 examples produce the same table in
memory.
3D Tables
Those tables can be interpreted as a function v = f(x,y,z), where x, y and z are independent variables.
Those tables have been newly implemented in version 4.4.0 for some specific cases and for compatibility with
ESATAN models which allow those definitions. However if the complete ESATAN definition handles many ways to
specify those tables, only the most understandable and the most used ones have been implemented (the others
may leading to unclear interpretations by the user).
The following definitions are supported, with all the possible permutations of the X, Y and Z specifications:
• Definition 1: Customized Table
This definition allows the specification of a customized table in the sense that it does not define a 3D matrix but
values for given triplets (x,y,z) not necessary aligned in all dimensions. The syntax is the following:
TAB(X,Y,Z)
X = x1,Y = y1,z1, v1, … , zk, vk,
…
Y = ym,z1, v1, … , zk', vk',
…
X = xn, Y = y1,z1, v1, … , zk", vk",
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 18
THERMISOL V4.9 User Guide
…
Y = ym',z1, v1, … , zk"', vk"';
• Definition 2: Condensed Table
In this definition, 2 dimensions are constant vectors and the values of the other one are not necessary the same for
all pairs of the 2 first dimensions.
TAB(X,Y,Z)
Z = z1, … , zk,
X = x1, Y = y1,v111, … , v11k,
…
Y = ym, v1m1, … , v1mk,
…
X = xn, Y = y1,vn11, … , vn1k,
…
Y = ym', vnm'1, … , vnm'k;
In this example, the values of y may be different depending on the specific occurrence of x but the order of x, y and z
may be also be switched.
• NOT SUPPORTED: Expended 3D matrix
This definition allows the specification of a full 3D matrix, meaning that values are given for triplets (x,y,z) where x, y
and z are constant vectors. The syntax is the following:
TAB(X,Y,Z)
X = x1, … , xn
Y = y1, … , ym
Z= z1, v111, v211, … , v121, …, vnm1
… Z= zk, v11k, v21k, … , v12k, …, vnmk
$EVENTS
An event defines a time where the user either wants to call the output block or to update the thermal model. The
first category of event is declared by "$OUTPUT" events and the second one by "$TIMESTEP" events.
Any event forces the end of transient analysis time-step to coincide with the event time. In the case of an output
event the $OUTPUTS block is called at that specific time.
In the case of a time-step event, the transient analysis knows that there may be a discontinuity in the model or in its
environment and it updates the flux at that time so the final flux of the time-step just before the event and the initial
flux of the next one are not identical but take into account the discontinuity. The next figure shows the relationships
between the computed fluxes at the different times involved by the solution routine. This scheme is respected
independently from the use of the time-step event in executive blocks (call to BEFORE, AFTER, AT or BETWEEN test
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 19
THERMISOL V4.9 User Guide
cases).
Events define a "BEFORE", an "AT" and an "AFTER as shown in the previous figure.
Both time step and output events can be periodic. Periodic events allow an event to repeat at regular intervals.
A periodic event also has a definition for the "BEFORE", "AT" and "AFTER" states as shown in the next figure. The
notion of "BETWEEN" between two periodic events is also represented (concerns only periodic element with the
same period)
The declaration of events is made through the $EVENTS block. It is possible to give literal values, local constants,
variables or expressions using literal values, local constants and variables.
For more convenience, the periods can be declared in a preliminary "$PERIOD" block bellow the "$EVENTS" one.
Those are considered as real local values.
$EVENTS
$PERIOD # Those are a real local constants
ORBITAL_PERIOD = 5250.4;
P_EQUIP1 = ORBITAL_PERIOD / 20;
$TIMESTEP
My_event = 123.45; # A time-step event
New_event = My_event + 300; # Another time event
SWITCH_EQUIP1 = 32.0 [P_EQUIP1]; # A periodic time-step event
SWITCH_EQUIP2 = 41.0 [P_EQUIP1]; # A periodic time-step event
$OUTPUT
Out_event = 680.0; # A output event
Periodic_out = 500.0 [500.0];
The OUTINT control parameter already defines a periodic output event. It is considered
to be the standard periodic ouput (i.e. it is not necessary to redefine that event in this
block)
Definition paragraphs
Those paragraphs describe the network configuration, i.e. the nodes and the couplings.
The symbols related to the defined network are called "Mortran symbols" (node numbers, temperatures, fluxes,
areas…, couplings).
The Mortran syntax is described in the "execution paragraphs" section. It is however possible to use Mortran
expressions to affect a nodal property or a coupling.
Any network data (nodal entity or coupling) defined with formulas or Mortran
expressions will be automatically added to the GENMOR subroutine.
$NODES
This paragraph contains the declaration of thermal nodes, defined by a node number and initial properties. The
syntax is as follows:
Type number = 'name', properties_list;
where:
• type = D (diffusive), B (boundary) or X (inactive)
• number = a positive integer (up to 9 digits)
• 'name' = a string, with single quotes
• properties_list = initial values of node properties (temperature, capacitance, etc.), separated by
commas.
Mortran expressions are available and are applied automatically during the $VTEMPERATURE routine via the
GENMOR code (see the MORTRAN language section).
A boundary node is used to represent a mathematical boundary to the problem, the temperature being prescribed
by the user as a fixed value, or one varying with respect to time, or possibly some other quantity. Boundary node
temperatures are not changed by the solution.
A diffusive node is one whose temperature will be calculated during solution.
Inactive nodes are ignored by solution routines, but may be re-activated at any point during the solution by library
functions. Similarly, "active" nodes (i.e. diffusion or boundary) may be made inactive during solution.
Nodes are defined by the appropriate type symbol (D, B or X), followed by a user-chosen reference integer. This may
be either a literal value or a local index. The index can have any name but shall not conflict with any other local
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 21
THERMISOL V4.9 User Guide
constant declared in the model. Fortran loops FOR can also be used to implicitly declare nodes.
Expressions are not allowed in a node declaration since it might conflict with a supernode definition.
The nodes can be declared with many syntax possibilities. Here are some examples that demonstrate them.
$NODES
D115 ='<6,5,7,1> Strap / Rectang0',
T =.000E+00,
C =1.0000E+01,
A =3.3480E-02,
ALP =.300, EPS =.030;
D4142 = 'Mur-Z/-X', T = 0.0D0;
X12028 = 'LIQUID MMH SIDE', T = 20.00D0;
B 9999 = 'space node', T =-269.0D0;
$NODES
FOR INODE = 1 TO 6 DO
M1 = INODE + 770;
M2 = INODE + 760;
D M1 = 'MEMBRANE 1', T = 27.5, C = 8.43E-01*517.0, A = 8.43E-01;
D:M2 = 'MEMBRANE 2', T = 27.5, C = 9.529E-01*517,0, A = 9.529E-01;
END DO
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 22
THERMISOL V4.9 User Guide
$NODES
DO INODE = 1, 6
M1 = INODE + 770;
M2 = INODE + 760;
D M1 = 'MEMBRANE 1', T = 27.5, C = 8.43E-01*517.0, A = 8.43E-01;
D:M2 = 'MEMBRANE 2', T = 27.5, C = 9.529E-01*517,0, A = 9.529E-01;
END DO
Since version 4.3.2, a FORTRAN-like syntax has also been added for the loop
declarations in order to have more consistency with the FORTRAN/MORTRAN syntax
used in the executive blocks.
$LOCALS
$INTEGER
PZ = 101 ;
MZ = 201 ;
PY = 301 ;
MY = 401 ;
$NODES
D PZ = 'Equipment +Z, T = 0.0, C = 18000.0;
D:MZ = 'Equipment -Z', T = 0.0, C = 4500.0;
D:PY = 'Equipment +Y', T = 0.0, C = 27000.0;
D:MY = 'Equipment -Y', T = 0.0, C = 32000.0;
$NODES
D12004 = 'CYL INT.SUP', T = 40.5,
C = 159.4D-9 *ROPTRH * NTRP1(T12004,CPPTRH,1);
$NODES
D115 ='Wavelength dependent structure', T= 0.0, C= 2500.0,
EPS = EPSWLBEF(), EPSWLB= [0.9, 0.8, 0.7, 0.83, 0.85],
ALP = 0.35 ;
The EPSWLB vector has to be valued using square parenthesis beacause this property is already in a list of
properties separated by commas. There shall be exactly NWLBANDS declared values.
The function EPSWLBEF() may be used in order to assign to the standard EPS parameter the effective epsilon of the
node according to its wavelength definition (EPSWLB) and to its temperature.
Since version 4.5.0, it is important to notice that a node declaration using a symbol has
to be mandatory written with two dots or with at least a blank
DSYMBOL is no longer accepted because of a possible confusion with a symbol starting
with a D character
D:SYMBOL or D SYMBOL are accepted
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 23
THERMISOL V4.9 User Guide
$ENTITIES
The "Entities" block can be used to declare new nodal entities (interger, real or character – i.e. string of 24
characters) that will be attached to the nodes in addition to the ones already known.
The entities are attached to the nodes of the model or sub-model on which it has been declared. This property
ensures that a stand alone model on which new nodal entities have been declared would not affect the nodal
properties of an existing model that would be its son or its father. If a nodal entity is request in different model, the
$ENTITIES block should be present in each one of them.
The new entities can be directly specified in the $NODES block like in the following example or can be used in any
Mortran expression like the original nodal entities.
User nodal entities can also be called in output routines like PRNDTB to write their
values in the text output file
When a wavelength discretization is required for modelling the thermal behavior of non-grey bodies, the definition
of the wavelength bands shall be placed in the $ENTITIES block. It will then enable the nodal property EPSWLB and
the coupling GRWLB in the current model. Any node with an EPSWLB or any GRWLB coupling declared in this model
will refer to this wavelength discretization.
The declaration of a wavelength discretization is done as in the following example:
$ENTITIES
WLBANDS (NWLBANDS=6) 0, 0.5, 2.0, 5.0, 10.0, 20.0, 1000.0;
WLBANDS is a real vector defining the wavelength bounds. If the number of wavelength bands is NWLBANDS, the
vector WLBANDS shall be declared with exactly NWLBANDS+1 values. The unit of wavelength is micro-meter. The
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 24
THERMISOL V4.9 User Guide
adequate extreme values of this vector are 0 to a sufficiently large value, typically 1000, so the integration of the
fractional blackbody emissive power is equal to 1 over the total wavelength interval.
Note: If the model includes sub-models, an $ENTITIES block with a definition of the wavelength bands is also
required in each sub-models.
$EDGES
This paragraph contains the declaration of the edges used for the conduction computation. In previous versions
edges where considered as standard nodes but their specific meaning has lead to split their definitions. This
especially ensures that they are properly handled by the user and the software. The connectivity between the nodes
and their edges is also known thanks to its specific declaration so the conductive heat transfer between shapes may
be known through the standard FLUXL, FLUXT, FLUXGL etc… even if the shapes are not directly connected but
through the edges.
The declaration of edges is made as follow:
E = connectivity list, A=value;
where:
• Connectivity list = node reference |E edge reference relative to the node
• A means the area of the edge (thickness times length) that may be used for further contact resistance
declarations.
The declaration of one edge is made by connecting the node edges together. Indeed a free border will reference
only one node edge and an edge with contacts will reference several node edges.
A node edge, i.e. an edge referenced by its node belonging, shall appear only once in the $EDGES section otherwise
THERMISOL will raise an error. The identification of an edge relatively to a node may be any number not necessarily
sequential (but THERMICA creates the edge database using sequential numbers).
You may refer to the Conduction chapter of the THERMICA User's Manual for more
details on the edge creation..
$EDGES
E = 100|E1, A=0.0024;
E = 100|E2, 200|E3;
E = 200|E4, 150|E2, A=0.0015 ;
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 25
THERMISOL V4.9 User Guide
$CONDUCTORS
This paragraph contains the declaration of couplings between nodes. Linear conductive couplings (GL), linear one-
way couplings (GF), non-linear radiative couplings (GR) and wavelength dependent non-linear radiative coupling
(GRWLB) are available.
Couplings can be declared between nodes of the current model or with nodes of any sub-model by indicating the
path of the sub-model from the current one.
It is also possible to define several couplings between the same nodes and at any model level. They can then be
accessed via a third index giving the position of the coupling in the model structure. If no coupling index is specified
when referencing a coupling, it is assume to be the first one.
As for the nodes, the couplings can be declared using loops and local index. The local index name is not restricted
to the ESATAN syntax KLn but can be any name of 16 characters. The index can also be combined with
mathematical formulae eventually involving other local constants.
The syntax is as follows:
type (n1, n2) = expression;
where:
• type = GL, GR, GF, GV or GRWLB.
• n1, n2 = node numbers, with eventual model references and/or mathematical expression using local
index and local constants.
• expression = a value or an expression.Mortran expressions are available and are applied automatically
during the $VTEMPERATURE routine through the GENMOR code.
A wavelength dependent radiative coupling GRWLB is a vector of radiative couplings for each wavelength band. It
shall be declared with exactly NWLBANDS values.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 26
THERMISOL V4.9 User Guide
Execution paragraphs
Generalities
The user can control the solution using some specific blocks that are executed during the execution. The language
used in those blocks is called Mortran which is derived from the Fortran language and has specific syntax related to
the thermal model. It is so possible to access all the data of the model by use of their name, i.e. any declared local
constant, variable, array or table, any coupling or node property.
The execution blocks are the following:
• EXECUTION
• INITIAL
• OUTPUTS
Complete mode:
• VTEMPERATURE
• VTIME
• VRESULT
or Standard mode:
• VARIABLES1
• VARIABLES2
In addition to those paragraphs, the user can define its own subroutines and functions. Those can then be called
from any of the previous blocks.
• SUBROUTINES
All the data of Thermisol are stored in double precision. The pre-processor translate any single precision real value
to avoid problems during the solution. It is however recommended that the user checks that no confusion between
integer and double precision can be made.
The blocks used to update the data during the solution computation are of 2 kinds:
1. Standard mode ($VARIABLES1 / $VARIABLES2)
2. Complete mode ($VTEMPERATURE / VTIME / $VRESULT)
To understand the mean of the blocks, the following figures present the execution process of steady-state and
transient analysis:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 27
THERMISOL V4.9 User Guide
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 28
THERMISOL V4.9 User Guide
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 29
THERMISOL V4.9 User Guide
Automatic time-step control Transient computation process with standard executive blocks
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 30
THERMISOL V4.9 User Guide
For steady-state computation, using standard or complete executive blocks are equivalent.
$VTEMPEATURE is used to update temperature dependant data.
$VRESULT updates data after the results have converged.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 31
THERMISOL V4.9 User Guide
In this case, compared to the classical blocks, we have a more complete setting of data updates.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 32
THERMISOL V4.9 User Guide
Transient computation process using automatic time-step control with complete executive blocks
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 33
THERMISOL V4.9 User Guide
In the complete executive blocks mode, the temperature is updated properly at each convergence loop of a
transient run.
If, for convergence or other matter, some temperature dependant data require being discontinuously updated (i.e.
with a constant value during a time-step), it is then possible to update those in the $VRESULT block.
Use of EVENTS
The events can then be used in executive blocks through the keywords "BEFORE", "AT", "AFTER" and "BETWEEN".
Note that if you use an "OUTPUT" event to modify thermal data or any data that influence the thermal
environment, the event should also be placed in the $TIMESTEP block (using a different name) in order to correct
the flux at that specific time.
The correct syntaxes to use the events are:
Examples of AT
AT My_event DO # The instructions will be executed only
[instructions] # at the event time
ENDDO
AT (My_event) DO # Same than previous with parentheses
[instructions]
ENDDO
AT SWITCH_EQUIP1 DO # The instruction will be executed only
[instructions] # at the occurrences of the periodic event
ENDDO
AT (SWITCH_EQUIP1,2) DO # The instruction will be executed only
[instructions] # at the 2nd occurrence of the
ENDDO # periodic event
Examples of BETWEEN
BETWEEN My_event & New_event DO # The instructions will be
[instructions] # executed between the two
ENDDO # events
BETWEEN (My_event & New_event) DO # Same with parentheses
[instructions]
ENDDO
BETWEEN (SWITCH_EQUIP1 & SWITCH_EQUIP2) DO # The instructions will
[instructions] # executed according to
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 34
THERMISOL V4.9 User Guide
Getting close to an event forces the transient solution program to adapt the time-step.
This is generally made 2 time-steps before being at one event time. The time-step
retrieve its original value once the event has been met.
$SUBROUTINES
This paragraph contains user functions and subroutines, written in the Mortran language. The pre-processor
translates all the Mortran code into Fortran, whereas mere Fortran routines are not changed.
Each function or subroutine is available during the solution program.
The syntax is as follows:
Syntax Description
where:
• TYPE is the type of returned values: INTEGER, CHARACTER or DOUBLE PRECISION.
• ** represents the blank character; in the context of Fortran, each new line must begin after 6 blank
spaces.
• arg1, arg2, … are the input / output parameters of the subroutine or function.
• The LANG=MORTRAN or LANG=FORTRAN instruction refers to the type of subroutine / function, and is
optional. By default, the Mortran language is used (this means that the LANG=MORTRAN instruction
may be absent).
• The SPLIT=N can be used with the Mortran subroutine to automatically split the routine every N line.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 35
THERMISOL V4.9 User Guide
Between the declaration and the end, the user can perform programming tasks as in a classical Fortran code, with
the 2 following sections:
• Declaration of variables
• Instructions.
In a FUNCTION, the value is returned as follows:
MYFTN = <value>
where:
• MYFTN is the name of the function
• <value> is the value to be returned: an integer, a real or a string.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 36
THERMISOL V4.9 User Guide
$INITIAL
This paragraph contains the subroutine called by the solution program at the beginning of its execution or for any
"INITIAL" case called from the $PARAMETERS block.
The user will use this paragraph to initialize some data:
• Definition of cases,
• Initial values of capacitance and fluxes,
• Initialization of temperatures (using classical instructions or loading an external file).
$EXECUTION
This paragraph contains the subroutine called by the solution program at the beginning of its execution. It can be
considered as the main subroutine that controls the calculation; the calls to solution routines are generally placed
in this paragraph.
This block may be called many times if specified in a $PARAMETERS block.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 37
THERMISOL V4.9 User Guide
If such a modification needs to be taken into account at the exact time of the current TIMEN, it is possible to call a
function UPDATE_FLUX that will force the initial flux of the next time-step to be re-evaluated instead of using the
final flux of the current one. The change is so taken into account immediately in the simulation.
$OUTPUTS
This block is automatically called by the solution routine:
• After the solution in steady-state solution routines,
• Regularly with a periodicity defined by the OUTINT control constant or at each OUTPUT event during
transient solution routine
It can contain any Mortran instruction but is primarily concerned with instructions for the output of
information. Only the main-model $OUTPUTS block is executed.
Parametric Cases
An additional block in THERMISOL allows the user to define cases for parametric analysis, for example determining
the sensitivity of predicted temperatures to the material and optical properties used in a model. The solution is
performed repeatedly with certain parameters in the model being varied for each run, as prescribed by the user.
If the paragraph $PARAMETERS is present, the model defined in the output file, the nominal case, is run as normal
prior to any parameter cases being executed.
The results from a parametric run are stored in a single text file (for the ASCII outputs). However the hdf5 results are
split into several files. In this case, the default name is reserved for the nominal case and the others are combined
with the parameter case name.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 38
THERMISOL V4.9 User Guide
Parametric commands
The CHANGE/ command assigns a new value to the entity specified.
The OFF/ and ON/ commands turn on and off couplings or submodels.
Whenever an implicit reference is given, the preprocessor cannot check the existence of
the nodes and/or couplings. If the reference is not correct, an error will be raised during
the execution of the code.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 39
THERMISOL V4.9 User Guide
• Macro references
This functionality has been introduced in version 4.3.3.
In executive blocks, it is now also possible to set or modify the values of a group of references at once using a
ZNODES descriptor (see next section).
Unlike the previous MORTRAN syntax, the macros are a complete statement and cannot be included into another
statement (i.e. the macro defines a full line instruction and cannot be a sub-part of more complete instruction). The
structure of the macro is as following:
The nodal entity can either be any nodal entity except N (for the internal node number) which not modifiable.
The coupling entities can be GL, GLS, GR, GRS, GF or GFS.
The operator may be = to assign the right member value to all entities or *= to multiply the entity's values by the
right member.
The right member can be as any other right members allowed in the executive blocks and as consequence cannot
use itself a 'ZNODES' reference.
For couplings, the first node reference can be either explicit or implicit.
The functionality is particularly interesting for coupling modifications, since a development of the macro expressed
with a loop is not possible (due to the fact that not all couplings from a node to the others exist).
Here are some examples of correct syntaxes:
It is worth mentioning that all possible syntax available for nodal entities, except the Mortran macro, may be also
used with wavelength dependent emissivities adding a reference to the wavelength band:
• EPSWLB100(WLB=2), EPSWLB 100 (WLB=2), EPSWLB:100(WLB=2)
• EPSWLB:SUBMOD:100(WLB=IWL+1)
• EPSWLB:'#100-200'(WLB=IWL) + 0.28 (Mortran macro are not supported)
For couplings
(GL,GLS, GF, GFS, GR, GRS, GV)
• Using integers: GL(100, 101)
• Using symbols: GL(SYMBOL, 101)GL(SYMBOL1, SYMBOL2)
• Using an expression: GL(SYMBOL1+SYMBOL2 – 300, 101)
• In a submodel: GL(SUBMOD:100, SUBMOD:101)
GL:SUBMOD:(100, 101)
GL(SUBMOD:SYMBOL, SUBMOD:101)
GL(SUBMOD:(SYMBOL–300), SUBMOD:101)
• Using a macro: GLS(1000, '#100-300') = 'X' (or 'OFF')
GR(SUBMOD:SYMBOL, '#100-300') *{}= COEFF
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 40
THERMISOL V4.9 User Guide
It is worth mentioning that the wavelength dependent radiative coupling GRWLB may be used in executive blocks
as other GL, GR or GF couplings with the addition of a wavelength band reference. All explicit and implicit spellings
of GRWLB are possible. Mortran macro are however not accessible.
• GRWLB(100,101,WLB=3)
• GRWLB(SUBMOD:100, SUBMOD:101, WLB=3), GRWLB:SUBMOB:(100,101,WLB=3)
• GRWLBS(1000,'#100-300')= 'X' (Mortran macro are not supported)
The wavelength band reference shall always be placed last.
Note: When using sub-models, the wavelength discretization reference of a GRWLB is the one of the model in which
the coupling is declared.
• A node list is formed by singular nodal specifications separated by comas. A singular nodal specification ca be:
• X : A user node number of current model
• [model path]:X : A user node number of the sub-model given by the model path from the current model
• X-Y : A range of numbers of the current model. The node X must be an existing node number of the
model. The node number Y can either be an existing node or not
• [model path]:X-Y : A range of user node numbers of the sub-model given by the model path from the
current model. The node X must be an existing node number of the specified sub-model. The node
number Y can either be an existing node or not
To get the node model name of an element of the group: (see SUBMDN function for type description)
MODELN = GETGROUP_SUBMDN(I, TYPE)
CALL SETGROUP_GR(N:3200)
N = GETGROUP_NBELEM
DO I=I,N
UNODE = GETGROUP_NUMBER(I)
GR(3200,UNODE) = GR(3200,UNODE) * A:UNODE * 0.01
ENDDO
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 42
THERMISOL V4.9 User Guide
Use of sub-models
A model can have one or several sub-model(s), declared before its definition paragraphs. A sub-model can also
include sub-models. The ways to declare sub-models are described in the following sections.
All the data defined in a sub-model are accessible by the father: nodes, couplings, constants, arrays, subroutines.
For that purpose, the model names are used as prefixes:
• A:HGA:100 is the area of node 100 of sub-model HGA.
• HGA:COMPUTEHEAT (Q100,1.O) is the call to the COMPUTEHEAT function coded in the HGA sub-model.
• C:SUB1:SUB2:100 is the capacitance of node 100 of the SUB2 sub-model contained in the SUB1 sub-
model.
• HGA:POWER is the POWER variable defined in the HGA sub-model.
Sub-models need to be linked together and with their father; for that purpose, the user can define couplings
between them or super nodes.
A coupling between models is a classical coupling involving 2 nodes from different models.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 43
THERMISOL V4.9 User Guide
$MODEL E3000
$MODEL LHP1
$ELEMENTS LHPMODEL
$SUBSTITUTIONS
NBNODES = 170
POWER = 200
$ENDMODEL
...
...
$ENDMODEL
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 44
THERMISOL V4.9 User Guide
In the first example, the temperature, solar, Albedo and IR powers will be displayed
sorted by increasing values of the temperatures.
In the second example, only the powers will be displayed but will however sorted by
decreasing temperatures.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 45
THERMISOL V4.9 User Guide
The third example shows that it is also possible to sort couplings when it makes sense
(ordering by coupling values the temperatures is for example not possible).
• Input:
• ZNODES: Character string describing the nodes concerned
• ENTITIES: Character string describing the node entities to be printed
• MODEL: Name of the model concerned
• Output: none
• Description:
This subroutine prints the entities of all the nodes described in NODES in the model described by MODEL.
The node entities are described by the ENTITIES string, and can be: label, T, QS, QA, QE, QI, QR or any nodal entity
defined by the $ENTITIES block.
The node number and status are systematically printed.
SUBROUTINE PRHEAD
• Input: none
• Output: none
• Description:
This subroutine prints the header of the PRNDTB output subroutine, showing the name of the current solution
routine, the current time step, and some key convergence parameters.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 46
THERMISOL V4.9 User Guide
SUBROUTINE PRHEAD
CALL PRHEAD
• Input:
• NODES: Character string describing the nodes concerned
• DATA: Character string describing the data to be printed
• MODEL: Name of the model concerned
• Output: none
• Description:
This subroutine prints the data described by the DATA string, related to all the nodes described by the NODES string
in the model described by MODEL. The data can be:
• Node entities: T, QS, QA, QE, QI, QR or any real nodal entity defined by the user in the file
USRNOD.DAT.
• Couplings: GL, GR or GF.
• Input:
• ZNODE1: Thermal group
• CNAME1: Submodel name for thermal group
• ZNODE2: Environment group
• CNAME2: Submodel name for environment group
• TYPE: Integer type of sink temperature required
• Output: none
• Description:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 47
THERMISOL V4.9 User Guide
This subroutine prints the sink temperature of all the nodes described in NODES, in the model described by
MODEL (see function TSINK).
This function can be used for systems with wavelength dependent thermo-optical properties.
• Input:
• NODES: Character string describing the nodes concerned
• MODEL: Name of the model concerned
• Output: none
• Description:
This subroutine prints the sink temperature of all the nodes described in NODES, in the model described by MODEL
(see function TSINKN).
This function can be used for systems with wavelength dependent thermo-optical properties.
• Input:
• NODES: Character string describing the nodes concerned
• MODEL: Name of the model concerned
• Output: none
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 48
THERMISOL V4.9 User Guide
• Description:
This subroutine prints the heat exchanges of all the nodes described in NODES, in the model described by MODEL.
• Input:
• NODES: Character string describing the nodes concerned
• MODEL: Name of the model concerned
• Output: none
• Description:
This subroutine prints the heat balance of all the nodes described in NODES, in the model described by MODEL.
• Input:
• MODEL: Name of the model concerned
• Output: none
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 49
THERMISOL V4.9 User Guide
• Description:
This subroutine prints the heat flows along all conductors in submodel MODEL which cross the submodel boundary.
A positive flux means the flux goes from the group of nodes specified by MODEL to the rest of the model.
• Input:
• NODES: Character string describing the nodes concerned
• MODEL: Name of the model concerned
• Output: none
• Description:
This subroutine prints the heat flows along all conductors of the group of nodes described by NODES in submodel
MODEL which cross the boundary of the group of nodes.
A positive flux means the flux goes from the group of nodes to the rest of the model.
• Input:
• NODES: Character string describing the nodes concerned
• MODEL: Name of the model concerned
• Output: none
• Description:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 50
THERMISOL V4.9 User Guide
This subroutine prints the maximum temperature difference between the nodes described in NODES in the model
described by MODEL, and prints the 2 nodes for which the maximum difference is observed.
• Input:
• FILE: Character string – basename for output files
• Output: none
• Description:
This subroutine produces a set of CSV files containing nodal data in vector form (temperature, capacitance, and
total heat load, one row per node) and conductance matrices (separately linear, radiative and fluidic). The latter
are complete NxN matrices (N being the number of nodes in the model), with a zero entry wherever there is no
conductor defined between the row and column nodes. This format is designed to be amenable to loading into
numeric computation tools such as MATLAB®. There is also a list of nodes in the same row/column order, giving
node type, number, label and model name.
FILE is used as the first part of each file name, unless it is blank in which case the model name is used.
The files produced are as follows:
• FILE.nl.csv – Node list: number, type, label, model
• FILE.nd.csv – Node data: temperature, capacitance, total heat load (vectors)
• FILE.gl.csv – Linear conductances (matrix)
• FILE.gr.csv – Radiative conductances (matrix)
• FILE.gf.csv – Fluidic conductances (matrix)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 51
THERMISOL V4.9 User Guide
• Input:
• ZNODES: Character string describing the nodes concerned
• ENTITIES: Character string describing the entities to be output
• MODEL: Name of the model concerned
• ORDER: Character string defining the ordering of the values.
• FILE: Character string for the output file name
• Output: none
• Description:
This subroutine prints the entities specified in ENTITIES for the group of nodes ZNODES. The data are sorted
according to the ORDER specified. Column header are written, and the data are output as a comma-separated
value list, appropriate for import into a post-processing tool such as a spreadsheet.
• Input:
• ZNODES: Character string describing the nodes concerned
• MODEL: Name of the model concerned
• Output: none
• Description:
Prints the maximum temperature difference between nodes of ZNODES within the MODEL specified.
• Input:
• ZNODES: Character string describing the nodes concerned
• ENTITIES: Character string describing the entities
• MODEL: Name of the model concerned
• Output: none
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 52
THERMISOL V4.9 User Guide
• Description:
Prints the sums of the entities for all the nodes specified
Output the sums of the area (A) and the user nodal entity called Damage for all the nodes in the current
model only (excluding its submodels) having 'SCOPE' as a substring of their labels.
• Input:
• ZNODES: Character string describing the nodes concerned
• ENTITIES: Character string describing the entities
• MODEL: Name of the model concerned
• Output: none
• Description:
Prints the average of the entities for all the nodes specified
H5 output
Overview
Introduction
Posther is the name of the post-processing management of Thermisol. It includes the generation of the output file
in the HDF5 format and analysis tools.
The advantage of this new data storage and post-processing tools is that it is based on the powerful HDF5 format
which is already a standard. Free software applications can be used to manage this type of file, like HDF5 explorer,
etc.
The file stored in this format (.h5 file) contains general data (program version, user name, start date and time of the
simulation…), convergence data (number of iterative loops, evolution of the convergence criteria…), simulation
data (nodes identification and models identification, number of couplings), model properties (areas, capacitance,
couplings…), thermal results (temperature, external fluxes…) and analysis data (minmax analyses, flux budgets…).
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 53
THERMISOL V4.9 User Guide
What is HDF5
The Hierarchical Data Format (HDF) implements a model for managing and storing data. It is compatible with any
hardware platform and lets the user manage its data easily. Moreover, the low-level organization of the file is such
that the accesses are much faster than with a standard scan of a file.
The structure of the HDF5 format is mostly divided into 3 kinds of objects:
• The Groups are similar to folders. They are used to organize the data into different named categories.
• The Datasets are the data themselves.They are identified by a name and contain the values of the entity
stored.
• The Attributes are single values which qualify a group or a dataset. They can be used to give the name of the
axis definition of an array or to give additional data.
Control variables
• H5_FREQ This variable control the frequency of the data storage in the h5 file
The default value is 4. This variable can be modified at any time during the simulation.
• H5_RES0 This variable specifies the data that only need to be stored once, at the initialization of the h5 file. The
default value is 'NS,A,C,ALP,EPS,GL,GR,GF'. This value cannot be updated during the simulation.
• H5_RES1 This variable specifies the time-dependant data that will be stored during the simulation at the
frequency given by H5_FREQ. The default value is 'T,QS,QA,QE,QI,QR' . This value cannot be updated during the
simulation.
Storage functions
• H5_INIT(' ')
Create a default result file and store the entity of H5_RES0 A filename can be specified as an argument.
• H5_DUMP
Store the results if the current iteration of the call corresponds to the storage frequency H5_FREQ (the iteration
numbers are automatically reset at each start of a solution routine – last time of solution call is also stored
independently of the frequency).
• H5_CLOSE
Close the current h5 file
Storage behavior
If the initialization function H5_INIT is not specified in the input dck file, an hdf5 output will be automatically
generated with a default name. In batch command the option "-no_auto_h5" deactivate the automatic generation
of the h5 output.
The automatic generation of the h5 file is made for the entire simulation.
If the user wants to creates several h5 result files and/or if it is required to specify when to initialize and close one
file, writing explicitly the command H5_INIT and H5_CLOSE will deactivate the automatic generation of the h5 file
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 54
THERMISOL V4.9 User Guide
• Input:
• NODE D1: Node designation
• Output:
• DOUBLE PRECISION HEATBAL: Absolute heat balance of the node.
• Description:
This function computes the heat balance of the node by integrating its entire environment.
• Input:
• INTEGER J1: Node number of the first node of group J
• INTEGER J2: Node number of the last node of group J
• INTEGER K1: Node number of the first node of group K
• INTEGER K2: Node number of the last node of group K
• Output:
• DOUBLE PRECISION FLUXL: Conductive flux exchanged between group J and group K
• Description:
This function computes the power exchanged conductively between two groups of nodes. Two node numbers
describe each group, involving all nodes having a number greater or less than the two specified numbers. The
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 55
THERMISOL V4.9 User Guide
• Input:
• INTEGER J1: Node number of the first node of group J
• INTEGER J2: Node number of the last node of group J
• INTEGER K1: Node number of the first node of group K
• INTEGER K2: Node number of the last node of group K
• Output:
• DOUBLE PRECISION FLUXR: Radiative flux exchanged between group J and group K
• Description:
This function computes the power exchanged radiatively between two groups of nodes. Two node numbers
describe each group, involving all nodes having a number greater or less than the two specified numbers. The
following quantity is returned:
This function can be used for systems with wavelength dependent thermo-optical properties. In that case, the
following quantity is returned:
where gives the fraction of energy radiated between and for a blackbody at
temperature T.
• Input:
• INTEGER J1: Node number of the first node of group J
• INTEGER J2: Node number of the last node of group J
• INTEGER K1: Node number of the first node of group K
• INTEGER K2: Node number of the last node of group K
• Output:
• DOUBLE PRECISION FLUXF: Convective flux exchanged between group J and group K
• Description:
This function computes the power exchanged through one-way linear couplings between two groups of nodes. Two
node numbers describe each group, involving all nodes having a number greater or less than the two specified
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 56
THERMISOL V4.9 User Guide
Older syntax 'D100', 'B100' or 'X100' can be used instead of the normalized one 'N100'
• Input:
• INTEGER J1: Node number of the first node of group J
• INTEGER J2: Node number of the last node of group J
• INTEGER K1: Node number of the first node of group K
• INTEGER K2: Node number of the last node of group K
• Output:
• DOUBLE PRECISION FLUXT: Totalflux exchanged between group J and group K
• Description:
This function computes the power exchanged in all possible ways (conductive, radiative and linear one-way)
between two groups of nodes. Two node numbers describe each group, involving all nodes having a number higher
or below the two numbers specified. The following quantity is returned:
This function can be used for systems with wavelength dependent thermo-optical properties. In that case, the
following quantity is returned:
where gives the fraction of energy radiated between and for a blackbody at
temperature T.
• Input:
• ZNODE1 : string describing the first group of node
• MDL1 : starting model for the ZNODE1 specification
• ZNODE2 : string describing the second group of node
• MDL2 : starting model for the ZNODE2 specification
• Output:
• DOUBLE PRECISION FLUXGL: Conductive flux exchanged between the two groups of nodes
• Description:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 57
THERMISOL V4.9 User Guide
This function computes the power exchanged conductively between two groups of nodes The following quantity is
returned:
• Input:
• ZNODE1 : string describing the first group of node
• MDL1 : starting model for the ZNODE1 specification
• ZNODE2 : string describing the second group of node
• MDL2 : starting model for the ZNODE2 specification
• Output:
• DOUBLE PRECISION FLUXGR: Radiative flux exchanged between the two groups of nodes
• Description:
This function computes the power exchanged radiatively between two groups of nodes. Two node numbers
describe each group, involving all nodes having a number greater or less than the two specified numbers. The
following quantity is returned:
This function can be used for systems with wavelength dependent thermo-optical properties. In that case, the
following quantity is returned:
where gives the fraction of energy radiated between and for a blackbody at
temperature T.
• Input:
• ZNODE1 : string describing the first group of node
• MDL1 : starting model for the ZNODE1 specification
• ZNODE2 : string describing the second group of node
• MDL2 : starting model for the ZNODE2 specification
• Output:
• DOUBLE PRECISION FLUXGF: Convective flux exchanged between the two groups of nodes
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 58
THERMISOL V4.9 User Guide
• Description:
This function computes the power exchanged through one-way linear couplings between two groups of nodes. Two
node numbers describe each group, involving all nodes having a number greater or less than the two specified
numbers. The following quantity is returned:
• Input:
• ZNODE1 : string describing the first group of node
• MDL1 : starting model for the ZNODE1 specification
• ZNODE2 : string describing the second group of node
• MDL2 : starting model for the ZNODE2 specification
• Output:
• DOUBLE PRECISION FLUXGT: Total flux exchanged between the two groups of nodes
• Description:
This function computes the power exchanged in all possible ways (conductive, radiative and linear one-way)
between two groups of nodes. Two node numbers describe each group, involving all nodes having a number higher
or below the two numbers specified. The following quantity is returned:
This function can be used for systems with wavelength dependent thermo-optical properties. In that case, the
following quantity is returned:
where gives the fraction of energy radiated between and for a blackbody at
temperature T.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 59
THERMISOL V4.9 User Guide
• Input:
• MODEL NAME M1: First model
• MODEL NAME M2: Second model
• Output:
• DOUBLE PRECISION FLUXML: Conductive flux exchanged between model M1 and model M2
• Description:
This function computes the power exchanged conductively between two models or sub-models. The following
quantity is returned:
• Input:
• MODEL NAME M1: First model
• MODEL NAME M2: Second model
• Output:
• DOUBLE PRECISION FLUXMR: Radiative flux exchanged between model M1 and model M2
• Description:
This function computes the power exchanged radiatively between two models or sub-models. The following
quantity is returned:
This function can be used for systems with wavelength dependent thermo-optical properties. In that case, the
following quantity is returned:
where gives the fraction of energy radiated between and for a blackbody at
temperature T.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 60
THERMISOL V4.9 User Guide
• Input:
• MODEL NAME M1: First model
• MODEL NAME M2: Second model
• Output:
• DOUBLE PRECISION FLUXMF: Convective flux exchanged between model M1 and model M2
• Description:
This function computes the power exchanged through one-way linear couplings between two models or sub-
models. The following quantity is returned:
• Input:
• ZNODE1: Thermal group
• CNAME1: Submodel name for thermal group
• ZNODE2: Environment group
• CNAME2: Submodel name for environment group
• TYPE: Integer type of sink temperature required
• ERR: error code (integer)
• Output:
• DOUBLE PRECISION TSINK: Sink temperature of thermal group
Description:
This function returns the sink temperature between a group of node (thermal group) and an environment. TYPE will
define which kind of sink temperature calculation is to be used. It has to be one of the following integers:
1. Black body radiation sink temperature
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 61
THERMISOL V4.9 User Guide
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 62
THERMISOL V4.9 User Guide
• Input:
• NODE: Node concerned
• INTEGER ERR: error code
• Output:
• DOUBLE PRECISION TSINKN: Sink temperature of NODE
This function returns the sink temperature of a node. The sink temperature is used to explain in a different way the
thermal environment of a node: it is the temperature of a "virtual" node, which radiatively exchanges the same
energy as the total energy exchanged by the node with its complex environment (including internal powers):
where is the power exchanged between the node and its environment:
where
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 63
THERMISOL V4.9 User Guide
and gives the fraction of energy radiated between and for a blackbody at
temperature T.
WARNING:
This function was previously known as TSINK but due to ESATAN incompatible
definitions, this function has been renamed TSINKN.
However for the compatibility with previous version, THERMISOL automatically
recognizes this function even if written at TSINK by checking the number of
arguments.
• Input:
• NODE N1: Node designation
• Output:
• DOUBLE PRECISION GETCSG: CSG value of the node.
• Description:
This function returns the CSG value of a node.
Interpolation routines
DOUBLE PRECISION INTRP1 (X,ARR,N)
• Input:
• DOUBLE PRECISION X: Independent variable
• ARR: User array of size (2,n) (DOUBLE PRECISION values)
• INTEGER N: interpolation order
• Output:
• DOUBLE PRECISION INTRP1: Interpolation result.
• Description:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 64
THERMISOL V4.9 User Guide
This function performs a linear interpolation over a user array. The array must be defined in the $ARRAYS definition
paragraph (in a $REAL sub-paragraph to specify the DOUBLE PRECISION type), and must have 2 columns (size 2,n).
The independent variable X is used to scan the 1st column of the ARR array. The interpolation order N may be 0
(constant result over the interval), 1 (for linear interpolation) or 2 (for quadratic interpolation).
• Input:
• DOUBLE PRECISION X,Y: Independent variables
• TAB: User Table array with 2 independent variables
• INTEGER N: interpolation order
• Output:
• DOUBLE PRECISION INTRP2: Interpolation result.
• Description:
This function performs a linear interpolation over a user table array. The table array must be defined in the
$TABLES definition paragraph, with 2 independent variables.
The independent variables X and Y are used to scan the 1st and 2nd columns respectively of the TAB table.
The interpolation order N may be 0 or 1. The order 0 is however not recommended on tables not defined as matrix.
The second order is not supported.
• Input:
• DOUBLE PRECISION X,Y,Z: Independent variables
• TAB: User Table array with 3 independent variables
• INTEGER N: interpolation order
• Output:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 65
THERMISOL V4.9 User Guide
• Description:
This function performs a linear interpolation over a user table array. The table array must be defined in the
$TABLES definition paragraph, with 3 independent variables. The independent variables X, Y and Z are used to scan
the 1st, 2nd and 3rd columns respectively of the TAB table. The interpolation order N may be 0 or 1. The order 0 is
however not recommended on tables not defined as matrix. The second order is not supported.
• Input:
• DOUBLE PRECISION X: Independent variable
• ARRX: User array of size (1,n) (DOUBLE PRECISION values)
• ARRY: User array of size (1,n) (DOUBLE PRECISION values)
• INTEGER N: interpolation order
• Output:
• DOUBLE PRECISION INTERP: Result of the interpolation
• Description:
This function performs a linear interpolation over an ARRY user array. The ARRX and ARRY arrays must be defined in
the $ARRAYS definition paragraph (in a $REAL sub-paragraph to specify the DOUBLE PRECISION type), and must
have 1 column (size 1,n) and the same size. The independent variable X is used to scan the ARRX array, while the
interpolation is performed into ARRY to return the output value. The interpolation order N may be 0 (constant result
over the interval), 1 (for linear interpolation) or 2 (for quadratic interpolation).
• Input:
• DOUBLE PRECISION X: Independent variable
• ARR: User array of size (1,n) (DOUBLE PRECISION values)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 66
THERMISOL V4.9 User Guide
• Description:
This function performs a linear interpolation over a user array. The array must be defined in the $ARRAYS definition
paragraph (in a $REAL sub-paragraph to specify the DOUBLE PRECISION type) and must have 1 column (size 1,n).
The ARR array must have a special format: xstart, deltax, y1, y2, … , yend. The first two values (xstart and deltax)
describe the way the independent variale X must be used to scan the array ARR: y1 corresponds to xstart, y2
corresponds to (xstart+deltax), y3 corresponds to (xstart+2deltax), … This allow to obtain a result more rapidly
than in the other interpolation routines. The independent variable X is used to scan the array ARR from its 3rd value.
Only the 0 and 1 interpolation order N are supported by this function.
• Input:
• DOUBLE PRECISION X: Independent variable
• ARR: User array of size (2,n) (DOUBLE PRECISION values)
• INTEGER N: interpolation order
• DOUBLE PRECISION PERIOD, SHIFT: period and shift concerning the independent variable X
• Output:
• DOUBLE PRECISION INTCY1: Interpolation result.
• Description:
This function performs a linear interpolation over a user array, assuming a periodic problem concerning the
independent variable X. The array must be defined in the $ARRAYS definition paragraph (in a $REAL sub-paragraph
to specify the DOUBLE PRECISION type), and must have 2 columns (size 2,n). The independent variable X is used to
scan the 1st column of the array ARR. This variable is shifted and reduced to a value within one period, i.e. the
interpolation is performed considering MOD(X+SHIFT,PERIOD) as an input. The PERIOD and SHIFT parameters must
be defined as REAL to be taken into account. The interpolation order N may be 0 (constant result over the interval),
1 (for linear interpolation) or 2 (for quadratic interpolation). It is worth mentioning that, for a steady analysis, the
INTCY1 function returns an average value of the second column of the array ARR.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 67
THERMISOL V4.9 User Guide
• Input:
• DOUBLE PRECISION X,Y: Independent variables
• TAB: User Table array with 2 independent variables
• INTEGER N: interpolation order
• DOUBLE PRECISION PERIOD, SHIFT: period and shift concerning the independent variable X
• Output:
• DOUBLE PRECISION INTCY2: Interpolation result.
• Description:
This function performs a linear interpolation over a user table array, assuming a periodic problem concerning the
independent variable X. The table array must be defined in the $TABLES definition paragraph, with 2 independent
variables. The time must be the first variable of the table. The independent variables X and Y are used to scan the
1st and 2nd columns respectively of the TAB table. The variable X is shifted and reduced to a value within one period,
i.e. the interpolation is performed considering MOD(X+SHIFT,PERIOD) as an input. The PERIOD and
SHIFT parameters must be defined as REAL to be taken into account. The interpolation order N may be 0 or 1. The
order 0 is however not recommended on tables not defined as matrix. The second order is not supported.
• Input:
• DOUBLE PRECISION X,Y,Z: Independent variables
• TAB: User Table array with 3 independent variables
• INTEGER N: interpolation order
• DOUBLE PRECISION PERIOD, SHIFT: period and shift concerning the independent variable X
• Output:
• DOUBLE PRECISION INTCY3: Interpolation result.
• Description:
This function performs a linear interpolation over a user table array, assuming a periodic problem concerning the
independent variable X. The table array must be defined in the $TABLES definition paragraph, with 3 independent
variables. The time must be the first variable of the table. The independent variables X, Y and Z are used to scan the
1st, 2nd and 3rd columns respectively of the TAB table. The variable X is shifted and reduced to a value within one
period, i.e. the interpolation is performed considering MOD(X+SHIFT,PERIOD) as an input. The PERIOD and
SHIFT parameters must be defined as REAL to be taken into account. The interpolation order N may be 0 or 1. The
order 0 is however not recommended on tables not defined as matrix. The second order is not supported.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 68
THERMISOL V4.9 User Guide
• Input:
• DOUBLE PRECISION X: Independent variable
• ARRX: User array of size (1,n) (DOUBLE PRECISION values)
• ARRY: User array of size (1,n) (DOUBLE PRECISION values)
• INTEGER N: interpolation order
• DOUBLE PRECISION PERIOD, SHIFT: period and shift concerning the independent variable X
• Output:
• DOUBLE PRECISION INTCYC: Interpolation result.
• Description:
This function performs a linear interpolation over a user array ARRY, assuming a periodic problem concerning the
independent variable X. The ARRX and ARRY arrays must be defined in the $ARRAYS definition paragraph (in a
$REAL sub-paragraph to specify the DOUBLE PRECISION type), must have 1 column (size 1,n) and must have the
same size. The independent variable X is used to scan the ARRX array, while the interpolation is performed into
ARRY to return the output value. The variable X is shifted and reduced to a value within one period, i.e. the
interpolation is performed considering MOD(X+SHIFT,PERIOD) as an input. The PERIOD and SHIFT parameters must
be defined as REAL to be taken into account. The interpolation order N may be 0 (constant result over the interval),
1 (for linear interpolation) or 2 (for quadratic interpolation). It is worth mentioning that, for a steady analysis, the
INTCYC function returns an average value of the array ARRY.
• Input:
• TYPE: Integer (1: Lagrangian interpolation; 2: Function evaluation)
• ANAME: ARRAY name (if TYPE=1)
• USRFNC: Double Precision user function
• N: interpolation order (if TYPE=1)
• Output:
• DOUBLE PRECISION NODFNC: Interpolation result.
• Description:
NODFNC provides a shorthand way of defining nodal entities which depend on temperature, such as capacitance or
emissivity. This function removes the need for the user to supply the nodal temperature reference explicitly. It is not
actually a function in its own right, but a reference to it in the $NODES block its translated by the pre-processor into
a call to an appropriate underlying function. If TYPE=1 (interpolation mode), ANAME may be either a 2xN real array
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 69
THERMISOL V4.9 User Guide
or a table array with one independent variable, containing (temperature, property) pairs. If TYPE=2 (function
mode), USRFNC may be defined in the $SUBROUTINES block or may be contained in an external library. In either
case the function must take a double precision input (temperature).
• Input:
• TYPE: Integer (1: Lagrangian interpolation; 2: Function evaluation;3: Trapezoidal interpolation)
• ANAME: ARRAY name (if TYPE=1,3)
• USRFNC: Double Precision user function (if TYPE=2)
• N: interpolation order (if TYPE=1)
• Output:
• DOUBLE PRECISION CNDFNC: Interpolation result.
• Description:
CNDFNC provides a shorthand way of defining couplings which depend on the average temperature of the two
nodes. This function removes the need for the user to supply the nodal temperature reference explicitly.
It is not actually a function in its own right is translated by the pre-processor into a call to an appropriate
underlying function.
If TYPE=1 or 3 (interpolation mode), ANAME may be either a 2xN real array or a table array with one independent
variable, containing (temperature, property) pairs.
If TYPE=2 (function mode), USRFNC may be defined in the $SUBROUTINES block or may be contained in an external
library. In either case the function must take a double precision input (temperature)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 70
THERMISOL V4.9 User Guide
Mathematical routines
DOUBLE PRECISION INTGL1(X1,X2,ARR)
• Input:
• DOUBLE PRECISION X1, X2: Limits of integration interval
• ARR: User array of size (2,n) (DOUBLE PRECISION values)
• Output:
• DOUBLE PRECISION INTGL1: Integration result
• Description:
This function performs an integration over a user array. The array must be defined in the $ARRAYS definition
paragraph (in a $REAL sub-paragraph to specify the DOUBLE PRECISION type), and must have 2 columns (size 2,n).
The independent variable used for the integration from X1 to X2 corresponds to the 1st column of the ARR array.
Example of an INTGL1 function call
TPS = INTGL1(0.0D0, 120.0D0, SOLARR)
In this example, the TPS variable is used to store the result of the integration from 0 to 120 in the SOLARR user array.
SUBROUTINE THRMST(T,THIGH,TLOW,STATUS)
• Input:
• DOUBLE PRECISION T: Temperature
• DOUBLE PRECISION THIGH: High temperature threshold
• DOUBLE PRECISION TLOW: Low temperature threshold
• Output:
• INTEGER STATUS: Thermostat status
• Description:
This subroutine simulates a basic thermostat:
• STATUS is set to 1 if T <= TLOW
• STATUS is set to 0 if T >= THIGH
• STATUS is unchanged if TLOW < T < THIGH
Example of a THRMST subroutine call
CALL THRMST(T100,25.0D0,0.0D0,STAT)
A basic example below shows the interest of the THSTAT routine compared to the THRMST function. Let's consider
the following basic model:
$NODES
B 100 = ' ', T= 10.000, A= 0.000E+000, C= 0.0000E+000, ALP= 0.0000E+000, EPS= 0.0000E+000;
D 200 = ' ', T= 25.000, A= 0.000E+000, C= 1.0000E+000, ALP= 0.0000E+000, EPS= 0.0000E+000;
$CONDUCTORS
GL(100,200)= 1.D0;
Node 100 is a boundary node with a fixed temperature set to 10°C. Node 200 is a diffusive node with an initial
temperature set to 25°C. These two nodes are linked by a conductive coupling. A transient analysis of this model
shows that the temperature of node 200 tends to 10°C. It is possible to add a thermostat applied on node 200 to
impose a temperature value between 20°C and 25°C. This can be done using the THRMST routine or the THSTAT
routine:
$VARIABLES
INTEGER* THSTS = 0;
REAL* THPOW = 30.0;
REAL* THMIN = 20.0;
REAL* THMAX = 25.0;
$VRESULTS $VTEMPERATURES
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 72
THERMISOL V4.9 User Guide
CALL THRMST(T200, THMAX, THMIN, THSTS) QR200 = THSTAT(N200, THMAX, THMIN, THPOW)
QR200 = THSTS * THPOW
The results obtained after a transient analysis are given in the figures below. We can see that the THSTAT routine
allows to better reach the target temperature value with less dissipated power. The THRMST routine overestimates
the power needed to reach the target value.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 73
THERMISOL V4.9 User Guide
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 74
THERMISOL V4.9 User Guide
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 75
THERMISOL V4.9 User Guide
INTEGER ADIM(ARRAY)
• Input:
• ARRAY: User array name
• Output:
• INTEGER ADIM: User array dimension
• Description:
This function returns the dimension of a user array: 1 or 2 dimensions.
Example of an ADIM function call
DIMENSION = ADIM(MYARRAY)
INTEGER ADIMVL(ARRAY,N)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 76
THERMISOL V4.9 User Guide
• Input:
• ARRAY: User array name
• INTEGER N: Dimension for which the size is requested
• Output:
• INTEGER ADIMVL: Size of the Nth dimension of the array
• Description:
This function returns the size of the Nth dimension for a user array.
Example of an ADIMVL function call
DIMENSION = ADIM(MYARRAY,2)
NTEGER ASIZE(ARRAY)
• Input:
• ARRAY: User array name
• Output:
• INTEGER ASIER: User array size
• Description:
This function returns the size of the user array: total number of elements.
Example of an ASIZE function call
SIZE = ASIZE(MYARRAY)
SUBROUTINE ACONST(ARRAY,VALUE)
• Input:
• ARRAY: User array name (integer or double precision)
• VALUE: Value to be set (integer or double precision)
• Output:
• ARRAY: Updated user array
• Description:
This subroutine sets all the elements of ARRAY to VALUE.
Example of an ACONST subroutine call
CALL ACONST(MYARRAY, 23.2D0)
SUBROUTINE AELCPY(ARRAY1,ARRAY2)
• Input:
• ARRAY1: User array name (integer or double precision)
• Output:
• ARRAY2: Name of the resulting user array (integer or double precision)
• Description:
This subroutine copies all the elements of ARRAY1 to ARRAY2.
Example of an AELCPY subroutine call
CALL AELCPY(MYARRAY1, MYARRAY2)
SUBROUTINE AELADD(ARRAY1,ARRAY2,ARRAY3)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 77
THERMISOL V4.9 User Guide
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the addition ARRAY3 = ARRAY1 + ARRAY2, element by element.
Example of an AELADD subroutine call
CALL AELADD(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELSUB(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the difference ARRAY3 = ARRAY1 - ARRAY2, element by element.
Example of an AELSUB subroutine call
CALL AELSUB(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELMLT(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the multiplication ARRAY3 = ARRAY1 × ARRAY2, element by element. This is not a classical
matrix product.
Example of an AELMLT subroutine call
CALL AELMLT(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELDIV(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the division ARRAY3 = ARRAY1 ⁄ ARRAY2, element by element. This has nothing to do with
the classical matrix inversion.
Example of an AELDIV subroutine call
CALL AELDIV(MYARRAY1, MYARRAY2, MYARRAY3)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 78
THERMISOL V4.9 User Guide
SUBROUTINE AELINV(ARRAY1,ARRAY2)
• Input:
• ARRAY1: Name of the user array (double precision)
• Output:
• ARRAY2: Name of the user array storing the result (double precision)
• Description:
This subroutine performs the inversion ARRAY2 = 1 ⁄ ARRAY1, element by element. This has nothing to do with the
classical matrix inversion.
Example of an AELINV subroutine call
CALL AELINV(MYARRAY1, MYARRAY2)
SUBROUTINE AELGT(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the logical comparison ARRAY1 > ARRAY2, element by element. If the logical comparison
returns TRUE, the value of the element of ARRAY3 is set to the corresponding element of ARRAY1; if FALSE is
returned, the element of ARRAY3 is set to 0.
Example of an AELGT subroutine call
CALL AELGT(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELGE(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the logical comparison ARRAY1 ≥ ARRAY2, element by element. If the logical comparison
returns TRUE, the value of the element of ARRAY3 is set to the corresponding element of ARRAY1; if FALSE is
returned, the element of ARRAY3 is set to 0.
Example of an AELGE subroutine call
CALL AELGE(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELLT(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 79
THERMISOL V4.9 User Guide
This subroutine performs the logical comparison ARRAY1 < ARRAY2, element by element. If the logical comparison
returns TRUE, the value of the element of ARRAY3 is set to the corresponding element of ARRAY1; if FALSE is
returned, the element of ARRAY3 is set to 0.
Example of an AELLT subroutine call
CALL AELLT(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELLE(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the logical comparison ARRAY1 ≤ ARRAY2, element by element. If the logical comparison
returns TRUE, the value of the element of ARRAY3 is set to the corresponding element of ARRAY1; if FALSE is
returned, the element of ARRAY3 is set to 0.
Example of an AELLE subroutine call
CALL AELLE(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELEQ(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the logical test ARRAY1 = ARRAY2, element by element. If the logical test returns TRUE, the
value of the element of ARRAY3 is set to the corresponding element of ARRAY1; if FALSE is returned, the element of
ARRAY3 is set to 0.
Example of an AELEQ subroutine call
CALL AELGT(MYARRAY1, MYARRAY2, MYARRAY3)
SUBROUTINE AELNE(ARRAY1,ARRAY2,ARRAY3)
• Input:
• ARRAY1: Name of the first user array (integer or double precision)
• ARRAY2: Name of the second user array (integer or double precision)
• Output:
• ARRAY3: Name of the user array storing the result (integer or double precision)
• Description:
This subroutine performs the logical test ARRAY1 ≠ ARRAY2, element by element. If the logical test returns TRUE, the
value of the element of ARRAY3 is set to the corresponding element of ARRAY1; if FALSE is returned, the element of
ARRAY3 is set to 0.
Example of an AELNE subroutine call
CALL AELNE(MYARRAY1, MYARRAY2, MYARRAY3)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 80
THERMISOL V4.9 User Guide
CHARACTER*3 STATRP(ENTITY)
• Input:
• ENTITY: Node, conductor or model
• Output:
• CHARACTER*3 STATRP: Entity status
• Description:
This function returns the status of a node, a conductor or a model. The possible statuses for a node are: 'B' (boundary),
'D' (diffusive) or 'X' (inactive). The possible statuses for a conductor are: 'ON' (active) or 'OFF' (inactive). The possible
statuses for a model are: 'ON' (active) or 'OFF' (inactive).
Example of a STATRP function call
ST = STATRP('D300')
WRITE(*,*) 'Coupling status = ', STATRP(GL(200,1000))
Since version 4.3.1 the STATRP routine can be replaced by a direct Mortran syntax:
NS 300 GLS(200,1000)
For couplings, the values are 'A' for active and 'X' for inactive (and not 'ON' or 'OFF')
SUBROUTINE MDLON(MODEL)
• Input:
• MODEL: Model to be activated
• Output: none
• Description:
This subroutine is used to activate a model, by changing the status of the model to 'ON'. The status of the nodes in this
model is not changed: the boundary/diffusive/inactive nodes remain the same.
Example of a MDLON subroutine call
CALL MDLON(BATERRY)
SUBROUTINE MDLOFF(MODEL)
• Input:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 81
THERMISOL V4.9 User Guide
SUBROUTINE SAVET(MODEL)
• Input:
• MODEL: Model concerned
• Output: none
• Description:
This subroutine is used to save the temperature of all the nodes in MODEL, in a binary file. This file is named by the
solver as: MODEL.UNF, and will be loaded later by the FETCHT subroutine, possibly during another execution of the
solver.
Example of a SAVET subroutine call
CALL SAVET(SATEM)
CALL SAVET(SATEM:TELESCOPE)
CALL SAVET(CURRENT)
SUBROUTINE FETCHT(MODEL)
• Input:
• MODEL: Model concerned
• Output: none
• Description:
This subroutine is used to load the temperature of all the nodes in MODEL from a binary file. This file is saved by the
solver as: MODEL.UNF, and has been already created, possibly during a previous execution of the solver.
Example of a FETCHT subroutine call
CALL FETCHT(SATEM)
CALL FETCHT(SATEM:TELESCOPE)
CALL FETCHT(CURRENT)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 82
THERMISOL V4.9 User Guide
INTEGER INTNOD(MODEL,NODE)
• Input:
• MODEL: Model concerned
• INTEGER NODE: User node number
• Output:
• INTEGER INTNOD: Internal node number
• Description:
This function returns the internal node number associated with the node which has a user node number NUMBER in
MODEL.
Example of an INTNOD function call
N = INTNOD(CURRENT, 102)
N = INTNOD(SATEM:TELESCOPE, 1000)
This routine becomes now obsolete in MORTRAN codes with the syntax
"N: [MODEL_PATH:] NODE"
Which is strictly equivalent to "INTNOD(MODEL_PATH,NODE)"
However, with the extended MORTRAN language proposed by THERMISOL, the knowledge of the internal
numbering should never be required.
INTEGER NODNUM(N)
• Input:
• INTEGER N: Internal node number
• Output:
• INTEGER NODNUM: User node number
• Description:
This function returns the user node number associated with the node which has an internal number N.
Example of a NODNUM function call
TN = NODNUM(3)
CHARACTER*256 SUBMDN(N,NAMETYPE)
• Input:
• INTEGER N: Internal node number
• NAMETYPE: Character string to specify the name format
• Output:
• CHARACTER*256 SUBMDN: Model name
• Description:
This function returns the name of the model or submodel to which the node N belongs (N is an internal node number).
The character string NAMETYPE can have the following values:
• 'ALL': The model name will be returned as a full name (e.g: 'SATEM:PLATFORM:TELESCOPE')
• 'ALL-NOMAIN': The model name will be returned as a full name but without the main model name (e.g:
'PLATFORM:TELESCOPE')
• 'ROOT': The name returned is the full name of the father model (e.g: 'SATEM:PLATFORM')
• 'ROOT-NOMAIN': The name returned is the full name of the father model without the main model name
(e.g: 'PLATFORM')
• 'SUBMODEL': The name returned is the model name, without his fathers (e.g: 'TELESCOPE')
Example of a SUBMDN function call
NAME = SUBMDN(3, 'ALL')
NAME = SUBMDN(30, 'ROOT')
NAME = SUBMDN(30, 'SUBMODEL')
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 83
THERMISOL V4.9 User Guide
CHARACTER*256 SUBMOD(NAMETYPE)
• Input:
• NAMETYPE: Character string to specify the name format
• Output:
• CHARACTER*256 SUBMOD: Model name
• Description:
This function returns the name of the current model. The current model is the model to which the calling subroutine
belongs.
The character string NAMETYPE can have the following values:
• 'ALL': The model name will be returned as a full name (e.g: 'SATEM:PLATFORM:TELESCOPE')
• 'ALL-NOMAIN': The model name will be returned as a full name but without the main model name (e.g:
'PLATFORM:TELESCOPE')
• 'ROOT': The name returned is the full name of the father model (e.g: 'SATEM:PLATFORM')
• 'ROOT-NOMAIN': The name returned is the full name of the father model without the main model name
(e.g: 'PLATFORM')
• 'SUBMODEL': The name returned is the model name, without his fathers (e.g: 'TELESCOPE')
Example of a SUBMOD function call
NAME = SUBMOD('ALL')
NAME = SUBMOD('ROOT')
NAME = SUBMOD('SUBMODEL')
NAME = SUBMOD('ALL-NOMAIN')
NAME = SUBMOD('ROOT-NOMAIN')
INTEGER INTGL(MODEL1,NODE1,MODEL2,NODE2,INDEX)
• Input:
• INTEGER MODEL1: Model of first node
• INTEGER NODE1: User first node number
• INTEGER MODEL2: Model of second node
• INTEGER NODE2: User second node number
• INTEGER INDEX: Index of the coupling
• Output:
• INTEGER INTGL: Internal number of the GL coupling
• Description:
This function returns the internal coupling number between the two nodes. If a coupling has been multi-defined, the
index is used to select the coupling index to be returned by the function
Example of an INTGL function call
N = INTGL(CURRENT, 102, CURRENT, 103, 1)
N = INTGL(SATEM:TELESCOPE, 1000, CURRENT, 102, 1)
INTEGER INTGR(MODEL1,NODE1,MODEL2,NODE2,INDEX)
• Input:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 84
THERMISOL V4.9 User Guide
INTEGER INTGF(MODEL1,NODE1,MODEL2,NODE2,INDEX)
• Input:
• INTEGER MODEL1: Model of first node
• INTEGER NODE1: User first node number
• INTEGER MODEL2: Model of second node
• INTEGER NODE2: User second node number
• INTEGER INDEX: Index of the coupling
• Output:
• INTEGER INTGF: Internal number of the GF coupling
• Description:
This function returns the internal coupling number between the two nodes. If a coupling has been multi-defined, the
index is used to select the coupling index to be returned by the function
Example of an INTGF function call
N = INTGF(CURRENT, 102, CURRENT, 103, 1)
N = INTGF(SATEM:TELESCOPE, 1000, CURRENT, 102, 1)
INTEGER INTGV(MODEL1,NODE1,MODEL2,NODE2,INDEX)
• Input:
• INTEGER MODEL1: Model of first node
• INTEGER NODE1: User first node number
• INTEGER MODEL2: Model of second node
• INTEGER NODE2: User second node number
• INTEGER INDEX: Index of the coupling
• Output:
• INTEGER INTGV: Internal number of the GV coupling
• Description:
This function returns the internal coupling number between the two nodes. If a coupling has been multi-defined, the
index is used to select the coupling index to be returned by the function
Example of an INTGV function call
N = INTGV(CURRENT, 102, CURRENT, 103, 1)
N = INTGV(SATEM:TELESCOPE, 1000, CURRENT, 102, 1)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 85
THERMISOL V4.9 User Guide
SETNDI(ZNODE,ENTITY,VALUE,MODEL)
• Input:
• ZNODE: Character string describing the nodes concerned
• ENTITY: Character string describing the nodal entity to be valued
• VALUE: Integer value to be affected
• MODEL: Model
• Output: none
• Description:
This function affects a value of a given nodal entity to all nodes specified by ZNODE from the model MODEL. Since no
integer nodal entity exists by default the function can only be called on a user nodal entity.
Example of a SETNDI function call
CALL SETNDI('#300-399','STATUS',0,CURRENT)
This function has been developed only for compatibility matters with ESATAN.
The extended MORTRAN language of THERMISOL may be more convenient to use. The previous example can then be
written:
STATUS:'#300-399' = 0
SETNDR(ZNODE,ENTITY,VALUE,MODEL)
• Input:
• ZNODE: Character string describing the nodes concerned
• ENTITY: Character string describing the nodal entity to be valued
• VALUE: Real value to be affected
• MODEL: Model
• Output: none
• Description:
This function affects a value of a given nodal entity to all nodes specified by ZNODE from the model MODEL. This may
be applied to existing nodal entities or to user declared ones.
Example of a SETNDR function call
CALL SETNDR('#300-399','T',20.0D0,CURRENT)
This function has been developed only for compatibility matters with ESATAN.
The extended MORTRAN language of THERMISOL may be more convenient to use. The previous example can then be
written:
T:'#300-399' = 20.0
SETNDZ(ZNODE,ENTITY,VALUE,MODEL)
• Input:
• ZNODE: Character string describing the nodes concerned
• ENTITY: Character string describing the nodal entity to be valued
• VALUE: String value to be affected
• MODEL: Model
• Output: none
• Description:
This function affects a value of a given nodal entity to all nodes specified by ZNODE from the model MODEL. Since no
string nodal entity exists by default the function can only be called on a user nodal entity.
Example of a SETNDZ function call
CALL SETNDZ('#300-399','STATUS','OFF',CURRENT)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 86
THERMISOL V4.9 User Guide
This function has been developed only for compatibility matters with ESATAN.
The extended MORTRAN language of THERMISOL may be more convenient to use. The previous example can then be
written:
STATUS:'#300-399' = 'OFF'
STORMM(ENTITY,MIN,TMIN,MAX,TMAX)
• Input:
• ENTITY: Character string describing the nodal entity to be compared
• MIN: Character string of nodal entity to store minimums
• TMIN: Character string of nodal entity to store times of minimums
• MAX: Character string of nodal entity to store maximums
• TMAX: Character string of nodal entity to store times of maximums
• Output: none
• Description:
This function is used to store the minimums, maximums and their times of a nodal entity during a transient analysis.
The nodal entity referenced by the MIN, TMIN, MAX and TMAX parameters shall be user nodal entities declared by the
user
This function shall be called in the $VRESULTS (or $VARIABLES2) block.
Example of a STORMM function call
$ENTITIES
MIN;
TMIN;
MAX;
TMAX;
$NODES
…
…
$VRESULTS
CALL STORMM('T','MIN','TMIN','MAX,'TMAX')
• Output:
• GRPMAX : Maximum value
• Description:
This function returns the maximum value of the nodal entity specified within the group of nodes described by ZNODE.
Example of a GRPMAX function call
TMAX = GRPMAX('#300-500','T',CURRENT)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 89
THERMISOL V4.9 User Guide
Other routines
CHARACTER*17 ZDAYDT()
• Input: none
• Output:
• CHARACTER*17 ZDAYDT: Current date
• Description:
This function returns the current date (information provided by the operating system).
Example of a ZDAYDT function call
DATE = ZDAYDT()
CHARACTER*8 ZDAYTM()
• Input: none
• Output:
• CHARACTER*8 ZDAYTM: Current time
• Description:
This function returns the current time (information provided by the operating system).
Example of a ZDAYTM function call
TIME = ZDAYTM()
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 90
THERMISOL V4.9 User Guide
Solution routines
Steady-State
SUBROUTINE SOLVIT
This subroutine computes the solution of a steady-state problem with the Newton Raphson algorithm as described in
the Theoretical chapter.
Driving parameters:
• RELXCA: maximum temperature change for one node over one iteration.The criterion is: RELXCC
< RELXCA.
• NLOOP: maximum number of iterations allowed. The criterion is: LOOPCT < NLOOP.
• INBALA: maximum power exchange between diffusive nodes and boundary nodes.The criterion is:
ENBALA < INBALA.
• INBALR: maximum relative power exchange between diffusive nodes and boundary nodes. The
criterion is: ENBALR < INBALR.
• DAMPT: damping factor to be applied to all the nodes at each iteration for temperature change (T(n+1) =
T(n) – DAMPT . f / f ').
If DAMPT=1, the algorithm will apply some dynamic changes to ensure convergence.
SUBROUTINE SOLVFM
This subroutine computes the solution of a steady-state problem with a Newton-Krylov algorithm as described in the
Theoretical chapter.
Driving parameters:
• RELXCA: maximum temperature change for one node over one iteration. The criterion is: RELXCC <
RELXCA.
• NLOOP: maximum number of iterations allowed. The criterion is: LOOPCT < NLOOP.
• INBALA: maximum power exchange between diffusive nodes and boundary nodes. The criterion is:
ENBALA < INBALA.
• INBALR: maximum relative power exchange between diffusive nodes and boundary nodes. The criterion
is: ENBALR < INBALR.
• DAMPT: damping factor to be applied to all the nodes at each iteration for temperature change (T(n+1) =
T(n) – DAMPT . DeltaT). If DAMPT=1, the algorithm will apply some dynamic changes to ensure convergence.
Typical values are: NLOOP=1000, RELXCA=1e-4 (INBALA=0.1 and INBALR=1e-4 may also be used).
In a general way, do not specify any value for DAMPT (or just DAMPT=1 which is equivalent). However, you can try
successive values (such as 0.9, 0.5 or 0.1) if no convergence occurs. In this case, please contact our services to
enable us to improve the algorithm.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 91
THERMISOL V4.9 User Guide
Transient
SUBROUTINE SCRANK
This subroutine computes the solution of a transient problem with the Crank Nicholson algorithm as described in the
Theoretical chapter.
Driving parameters:
• TIMEO: start date.
• TIMEND: end date.
• DTIMEI: time step.
• RELXCA: maximum temperature change for one node over an iteration, at a given time. The criterion is:
RELXCC < RELXCA.
• INBALT: maximum power exchange by diffusive nodes, including capacitive power. This is a convergence
criterion more physical than the RELXCA one. It has been introduced because the definition of the INBALA
control variable is not suitable for transient cases. However, each diffusive node has to respect a balanced
flux equation taking into account transient phenomena such as capacitive fluxes. The criterion is: ENBALT <
INBALT.
• NLOOP: maximum number of iterations allowed, at a given time. The criterion is: LOOPCT < NLOOP.
• DAMPT: damping factor to be applied to all the nodes at each iteration of the implicit convergence. If
DAMPT=1, the algorithm will apply some dynamic changes to ensure convergence.
The values for TIMEO, TIMEND and DTIMEI depend on the problem being modelled.
Other typical values are: RELXCA=1e-4, NLOOP=1000 (in general, only 5 to 50 iterations are sufficient).
In this routine, the DTMIN, DTMAX and DTPMAX variables are not used.
A special call of the function UPDATE_FLUX in $VRESULT allows to take into account a discontinuous phenomena that
happens at a specific time by forcing the start flux of the next time-step to be recomputed and not equal to the end flux
of the current time-step.
SUBROUTINE SCRANKAUTO
This subroutine computes the solution of a transient problem with the Crank Nicholson algorithm associated with an
automatic time step as described in the Theoretical chapter.
Driving parameters:
• Same as SCRANK: TIMEO, TIMEND, RELXCA, INBLAT, NLOOP, DAMPT
• DTIMEI: initial time step.
• ERRMIN: if the maximum estimated relative error in the model is lower than ERRMIN, the time step will be
increased.
• ERRMAX: if the maximum estimated relative error in the model is higher than ERRMAX, then the time step is
decreased and the solution is recomputed.
• DTMIN: minimum time-step allowed.
• DTMAX: maximum time-step allowed.
The values for TIMEO, TIMEND and DTIMEI depend on the problem being modelled.
Other typical values are: RELXCA=1e-4, NLOOP=1000 (in general, only 5 to 50 iterations are sufficient), ERRMIN=1e-4,
ERRMAX=1e-4 (these last two parameters can be equal – the solution will always be as close as possible, but
lower, to the desired relative error value).
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 92
THERMISOL V4.9 User Guide
• Inputs:
• SOLNAM : String – transient solver to be used
• CVTCA: Double – Cycle convergence criterion for temperature
• CVDTCA: Double - Cycle convergence criterion for rate of change of temperature (not used)
• PERIOD: Double – Period of cycle (seconds)
• MAXCYC: Integer – Maximum number of cycles
• ZNODE: Specifies nodes for which criteria shall be met
• OUTIML: String – defines whether normal output is required ('NONE' or 'ALL')
SCYCLE is a 'meta-solver', the purpose of which is to attain a steady cyclic solution.: i.e. successive cycles of a transient
analysis giving the same thermal results to within user-specified criteria.
This routine uses convergence criteria previously defined by one or several calls to the subroutine SCYCLE_ADDSPEC
(limited to 32), allowing to specify different convergence levels for several group of nodes.
Moreover, it automatically performs convergence cycles excluding calls to the $OUTPUTS block and storing the
convergence results into a specific h5 file.
If the cyclic convergence has been successfully reached, a last cycle is performed including calls to $OUTPUTS and
storing this last cycle results into the original h5 file.
A detail convergence repporting is written in the convergence control file (csv) plus a summary into the standard
output file (out).
• Inputs: (SCYCLE)
• SOLNAM : String – transient solver to be used
• PERIOD: Double – Period of cycle (seconds)
• MAXCYC: Interger – Maximum number of cycle
• Inputs: (SCYCLE_ADDSPEC)
• ZNODE: Specifies nodes for which criteria shall be met
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 93
THERMISOL V4.9 User Guide
$EXECUTION
1. Specification of convergence criteria
CALL SCYCLE_ADDSPEC('#100-200', 3.0)
CALL SCYCLE_ADDSPEC('Equipments', 0.5)
• Input:
• none
• Output:
• DOUBLE PRECISION EPSWLBEF: equivalent epsilon.
• Description:
This function computes the equivalent epsilon value according to the wavelength discretization and the
temperature of the thermal node. The function shall be exclusively used at the nodal description level (the value of
the EPS data will then be updated during the execution according to the GENMOR behaviour). The following
quantity is returned:
• Input:
• DOUBLE PRECISION T: Temperature of thermal node
• DOUBLE PRECISION L1: Lower bound of the wavelength band
• DOUBLE PRECISION L2: Upper bound of the wavelength band
• Output:
• DOUBLE PRECISION FBAND: fractional emissive power
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 94
THERMISOL V4.9 User Guide
• Description:
This function computes the fractional emissive power for a given wavelength band. It returns the weight factor of a
given wavelength band according to the thermal node temperature. The value of the FBAND function is given by:
where the wavelength band m is defined by the two bounds and the BBFN function is given by
Michael F.Modest, Radiative Heat Transfer - Second Edition, 2003, Academic Press, ISBN 0-120503163-7
Theoretical Background
where:
• Ti is the temperature of node i, to be computed
• t is the time
• Ci is the capacitance (M.Cp) of node i
• GRij is a symmetric radiative coupling between nodes i and j
• GLij is a symmetric linear coupling between nodes i and j
• GFij is a one-way linear coupling between nodes i and j
• QSi is the solar power absorbed by node i
• QAi is the planet albedo power absorbed by node i
• QEi is the planet infra-red power absorbed by node i
• QIi is an internal power absorbed by node i
• QRi is an additional power absorbed by node i.
At several moments (at each iteration or at each time step), the user can modify any of these data, using a Fortran-
like language. This can be useful to integrate the variations of external fluxes, the activation of heaters or
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 95
THERMISOL V4.9 User Guide
dissipation of equipment, etc. It can also be used to simulate different classes of mathematical equations; e.g.,
linear couplings can be changed according to the temperature to model convective exchanges.
Newton algorithm
The Newton method is a general method for solving non-linear systems written as the follow:
Starting from an initial data , the Newton method builds a series of approximations of .
Supposing that 2 successive approximations are close enough, the Taylor development of the function to the first
order gives:
The construction of this series stops when the convergence criterion is reached.
3. Evaluate
This method may be optimized by introducing a damping factor in the evaluation of the new solution at the
The algorithms stop when the maximum temperature change during an iteration (RELXCC) is less than the specified
criterion (RELXCA):
Then, the global equilibrium is verified, considering incoming and outgoing fluxes (due to internal powers and
exchanges with boundary nodes). This difference is called "ENBALA" and has to be less than the "INBALA" user
parameter. The relative balance "ENBALR" is also evaluated and compared with the user parameter "INBALR".
In all cases, the algorithm will be stopped if the number of iterations (LOOPCT) has reached the maximum value
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 96
THERMISOL V4.9 User Guide
SOLVIT consist of solving for each line i of linear system matrix the solution according to the data
, .
This method is very efficient for thermal problems since all temperature variables are widely coupled to each other
with radiative links. However, for more sparse problems or purely linear problems, it becomes much less efficient
than a matricial method.
For each iteration, the system of N equations is considered as N independent equations of 1 variable. For each
equation (i), the unknown variable is Ti and all the Tj (ji) are considered as fixed values:
The Krylov methods work by forming a basis from a matrix A and a vector b .
The approximations to the solution are then formed by minimizing the residual formed over the increasing
subspace created.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 97
THERMISOL V4.9 User Guide
This method is suitable for large sparse systems that are difficult to be handled by the Cholesky decomposition.
Both generalized minimum residual (GMRES) and conjugate gradient (CG) have been tested. It resulted that CG gave
better results in the context of thermal or electrical problems.
The Newton-Krylov method is the one now being implemented in the thermal resolution SOLVFM.
This method requires a pre-conditioner which is given by a partial sparse Cholesky decomposition. This pre-
conditioner is updated not at each iteration but when necessary.
This decomposition has then became an incomplete decomposition used as a pre-conditioner for a conjugate
gradient resolution.
Thus, the thermal equation giving T(n+1) as a function of T(n), is the following implicit scheme:
where:
Then, the solver computes all the Ti (n+1) values with a Newton Raphson algorithm, controlled by the NLOOP and
RELXCA. These variables have the same meaning as in the steady-state problem.
Arithmetic nodes (without capacitance) are solved using the Newton-Raphson algorithm (see SOLVIT).
As for steady-state cases, a criterion based on diffusive nodes equilibrium has been set, INBALT, defined by:
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 98
THERMISOL V4.9 User Guide
Two user variables, ERRMIN and ERRMAX, are used to modify the time step, leading to 3 different cases:
• *_ERRMIN err ERRMAX: the iteration is correct and the time step is not changed._*
• *_err ERRMIN: the iteration is correct but the time step is increased:_*
.
• *_err ERRMAX: the iteration is cancelled and computed again with a smaller time step:_*
.
The first time-step is initially adjusted to 0.5*CSGMIN, where CSGMIN is the minimum of all CSG coefficients.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 99
THERMISOL V4.9 User Guide
Skeleton
Interactive mode
In the interactive mode (i.e. into SYSTEMA), the skeleton module is used as a simple interface between THERMICA
and THERMISOL giving the possibility to the user to add customized instructions from a file written by himself. The
interest of such an interface is that the user can write common instructions into a single file that will be taken into
account automatically in the successive calls of THERMICA/THERMISOL processes. It is only requested to select that
file without needing to modify manually the THERMISOL input file.
Batch mode
The skeleton file is also very convenient to use when running the temperature solver in batch command. A standard
skeleton wrote by the user can then be re-used to expand many different cases just by changing the references to
the files containing the couplings or different instructions. An "easy batch" mode is also available to directly
translate a ske file into a dck file. Read the batch mode section for more details.
Reading instructions
Reading instructions
Contextual expansion
To reference the different files, the skeleton uses special reading instructions. Those instructions will expand the
content of a given block from the file to read where the reading instructions are placed.
There are 5 types of reading instructions:
• #READ
• #READ-MODELNAME
• #READ-SUBMODEL
• #USE
• #READ-n where n is an integer from the range 1 to 256
• #USE-n where n is an integer from the range 1 to 256
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 100
THERMISOL V4.9 User Guide
Standard READ
The #READ is used to basically expand the content of one block. When this command is found under a specific block
into the skeleton file, the expansion module will replace it by the content of that block from the file to be read.
If the file referenced by a #READ has no context (no blocks are written into the file), it is completely expanded at its
call.
Example
If the file specified by the #READ does not contain any block, it is then supposed to be entirely expended where it is
called.
Modelname READ
This type of READ instruction has to be exclusively used after a $MODEL in order to get the model name from a
specific input file (usually the nodal description).
This feature was used by default with THERMICA-THERMISOL v4.5. Now the model name is usually directly set from
the skeleton parameters and the nodal description does not contain the main model name anymore (which avoids
the use of this option).
Sub-model READ
The sub-model READ instruction has to be placed under a $MODEL block.
Compared to a standard READ (or a USE function), it is specialized to expand sub-models with the possibility to
select which blocks shall be included.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 101
THERMISOL V4.9 User Guide
USE statement
The #USE command is a new helpful command to be specified at the beginning of the skeleton file.
It means that the file specified by the #USE instruction has to be extended in any block of the skeleton file if it
matches a block of the file to be extended.
In fact, it replaces repetitions of the #READ instructions in the skeleton file by a single statement at its beginning.
Inputs
SKE file
If the SKE file is specified in the Inputs (in the batch mode, it is considered as an input if the file exist, otherwise it is
considered as an output), then the Skeleton program will use this skeleton file to create the input solver file (DCK
file).
If no SKE file is specified (or if the SKE file specified in the batch mode does not exist), the Skeleton program will
build a generic skeleton file.
NWK files
In the case of a skeleton generation, the nwk files specified as inputs will be added as reading instruction into the
ske file.
A simple expansion of a ske file into a dck one does not require the nwk files to be specified in the inputs if they are
in the result folder. Indeed, the batch mode does not usually need those files to be expressed as parameters.
However, the interactive process, which is executed into a deported result folder, needs those arguments to be
specified.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 102
THERMISOL V4.9 User Guide
Outputs
SKE file
If specified as an output, a generic skeleton file will be created (except if one is specified as an input).
DCK file
If specified, this file contains the expanded skeleton, i.e. the THERMISOL temperature solver input file.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 103
THERMISOL V4.9 User Guide
Posther
Introduction
POSTHER is a tool used to export data and to perform some analysis. The results are exported to both a XLS file (to
be read in Excel® or any other similar tool) and to a text file. The data requested by POSTHER are specified in the h5
result file from THERMISOL under a "POSTHER" group. The kind of analysis performed by POSTHER can be
extended to any user's need thanks to an API (available for FORTRAN and C++).
Nodes specifications
Whenever the user can select a group of nodes, the general syntax is the same one than the 'ZNODES' used in some
THERMISOL output routines:
• ALL to select all the nodes
• @[model path] to select the nodes of a given sub-model and its sub-models
• #X to select the node X
• #[model path]:X to select the node X in a specified submodel
• #X-Y to select the range of nodes between X and Y
• #[model path]:X-Y to select the range of nodes between X and Y from a specified submodel
• #X, Y, [model path]:Z-T to select nodes X, Y and nodes from Z to T of a sub-model
• [label] to select all the nodes with the given label in their name
• [model path]:[label] to select the nodes with a given label from a sub-model
Analyses Modules
Extract
The « extract » module creates both xls and text reports on which it is possible to choose the data to be written.
First, the user can select a group of nodes to be output as well as a time range.
The selected data will be classified in two tables: the first one for constant data (or data that have been stored as
constant in the h5 file – using the H5_RES0 control parameter of THERMISOL), the second one for time dependant
results.
The data that can be selected for the module are
• Areas
• Capacitances
• Emissivities (epsilon)
• Absorptivities (alpha)
• Temperatures
• Solar Fluxes
• Albedo Fluxes
• Planet IR Fluxes
• Internal Dissipations
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 104
THERMISOL V4.9 User Guide
• Residual Fluxes
If the number of column to write in the xls file is to large then this file may be split in different files. The option
EXCEL_COL can be set to define the maximum number of columns of the files.
If a time occurs more than once (for example if a steady-state has been called before the transient resolution, time 0
may be stored twice in the 5h file), only the last one is exported and taken into account.
Node Min/Max
The « node min/max » analysis exports, for each time stored in the h5 file and for each entity selected:
• its minimum value, on which node it is found
• its maximum value, on which node it is found
• the mean value on the selected group of node
The mean temperature is computed using the area of the nodes if they are stored in the h5 file. The means on the
fluxes (which are actually powers), as well as the temperature's mean in case no areas are found in the h5 file, are
algebraic means (the sum divided by the number of summed values).
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 105
THERMISOL V4.9 User Guide
Time Min/Max
The « time min/max » analysis exports, for each selected node and for each entity selected:
• its minimum value, at which time it is found
• its maximum value, at which time it is found
• the mean value over the time range specified
The mean values are computed taking into account the time-steps variations.
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 106
THERMISOL V4.9 User Guide
Flux Budget
Exchange Flux
The flux budget analyses all the fluxes across the frontiers between 2 groups of nodes noticed G1 and G2:
• Direct radiative flux through the radiative links between thermal nodes of each group
• Direct conductive flux through the conductive links between thermal nodes of each group
• Direct conductive flux through the common edges of the 2 goups
• Direct convective flux through the convectif links between thermal nodes of each group
Except for the conductive flux through the edges for which the direct flux is physically known between the group
and its frontier. In case a third group of nodes is also connected to the common frontier of G1 and G2, the third flux
balancing the frontier is also given
• flux from G1 to its frontier with G2 (with a negative sign)
• flux from the frontier to G2 (with a positive sign)
• flux from the frontier to the other connected nodes G0 (sum of the 2 previous)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 107
THERMISOL V4.9 User Guide
Group definitions
The two groups of nodes are exclusives. If the group B contains nodes already defined in group A, those are
removed from group B.
When the model contains conductive interfaces (i.e. edge nodes), the group of nodes A and B are closed by the
edges directly connected to the groups. The specification of the groups can so be done without taking into account
the edge nodes belonging to a group. Another advantage of this specification is that it allows the two groups to
overlap (some edges can be shared by the two groups).
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 108
THERMISOL V4.9 User Guide
the other possible definition which is "the equivalent fluxes between the two groups".
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 109
THERMISOL V4.9 User Guide
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 110
THERMISOL V4.9 User Guide
Group Balance
The group balance export the budget of all powers related to that group (with eventually its enclosure in case a
EDGE node group is specified).
Are then exported:
• The total absorbed, evacuated powers
• The extern powers Solar, Albedo, Planet IR, Internal dissipation and Residual powers
• The absorbed and evacuated radiative powers
• The absorbed and evacuated conductive powers
• The absorbed and evacuated convective powers
Radiative Budget
The radiative budget exports for the specified group of nodes:
• Area
• Equivalent Emissivity
• GR sum
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 111
THERMISOL V4.9 User Guide
• Linear Temperature
• Quadratic Temperature
Temperature Initialization
This mode is only available in batch mode. It exports the node temperatures into a file as a "$INITIAL" block to be
integrate into a DCK file (directly or through the Skeleton module).
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 113
THERMISOL V4.9 User Guide
B-Plot
Introduction
B-Plot is a postscript document writer. It reads instruction from a file and export graphs into a ps document. As
POSTHER, this module is a post-processing tool which is based on the h5 output of THERMISOL.
Principle
B-Plot is based on the following principles: a graph is described by instructions written in a text file called the B-Plot
command file. Those instructions respect a language described in the next paragraph. A document is made of
several graphs and each graph is made of several curves. A curve is given by a node specification and an entity (T,
QS, QA, QE, QR or QI). It is possible to plot temperature and power curves into a same graphic. If this is the case, B-
Plot will automatic display 2 y axes (one on the left and one on the right of the graph). The use of 1 y axe or 2 y axes
can also be manually managed as well as the axes labels, factors, curve titles, graph titles… In this version of B-Plot,
it is possible to choose between 2 page formats. The default format corresponds to 1 graph per page in landscape
orientation. The other possibility is to specify 2 graphs per page in portrait orientation.
Limitations
B-Plot authorize the maximal number of declaration of:
• 5 input files (h5 results from THERMISOL Temperature Solver runs)
• 10 curves per graph
The numbers of graphs, the total number of nodes and the length of the time vector have no limit.
Keywords
Command Parameters Description
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 114
THERMISOL V4.9 User Guide
Command sequences
Here is an example of a B-Plot command sequence.
1. comment: a B-Plot command sequence
2. Input data
F1 …
T1 …
F2 …
T2 …
……
3. General definitions
NGRAPH…
NUM…
XLABEL …
XFACT…
4. Graph 1:
@…
AXEX…
AXEY…
YLABLE…
AXEY2…
5. Curve 1 (of graph 1)
!…
6. Curve 2
!…
…
7. Graph 2:
@…
…
…
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 115
THERMISOL V4.9 User Guide
Keywords definitions
AXEX
AXEX xmin, xmax [ , xdelta [ , xoffset ] ]
OPTIONAL
Set the minimum and maximum values of the X axis
Default values
The range is set to the minimum and maximum values of the time reference
The offset is set to zero
Déclaration :
• Into the general definition (before any @ command). Set the default values to apply to each graph
• Into one graph definition (after a @ command). Locally overload the default value.|
Limitation : no
Déclaration :
• Into the general definition (before any @ command). Set the default values to apply to each graph
• Into one graph definition (after a @ command). Locally overload the default value.|
Limitation : no
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 116
THERMISOL V4.9 User Guide
Déclaration :
• Into the general definition (before any @ command). |
Limitation : The input file has to be a h5 output from THERMISOL
5 files maximum can be declared
NUM
NUM n
OPTIONAL
First page number
Defaul value
The first page starts with number 1
Déclaration :
• Into the general definition (before any @ command). |
Limitation : The input file has to be a h5 output from THERMISOL
5 files maximum can be declared
NGRAPH
NGRAPH n
OPTIONAL
Number of graphs per page
Defaul value
One graph per page (LANDSCAPE format)
Déclaration :
• Into the general definition (before any @ command). |
Limitation : There can be only 1 or 2 graphs per page
T
T n text
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 117
THERMISOL V4.9 User Guide
Set the title of an input file to be reported into the curve legends
Déclaration :
• Just after a F command |
Limitation : See the F command
Déclaration :
• Into the general definition (before any @ command). Set the default values to apply to each graph
• Into one graph definition (after a @ command). Locally overload the default value.|
Limitation : None
Remark
The time is output in seconds if XFACT is set to 1.
To convert the time into minutes, XFACT shall be set to 1.6667e-2
hours, 2.7778e-4
days, 1.1574e-5
The other default units (corresponding to a factor of 1.0) are
Temperatures Degre Celsius
Power Watt
Déclaration :
• Into the general definition (before any @ command). Set the default values to apply to each graph
• Into one graph definition (after a @ command). Locally overload the default value.|
Limitation : None
!
! n, X node, $label
Define a curve
Déclaration :
• Into one graph definition (after a @ command). |
Limitation : Only 10 curves per graph can be plotted
X _T QS Q Q Q Q E
A E R I n
_ t
i
t
y
t
o
p
l
o
t
@
@ text
New graph definition
Déclaration :
• After general definitions
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 119
THERMISOL V4.9 User Guide
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 120
THERMISOL V4.9 User Guide
Batch Mode
Introduction
THERMISOL is package of applications which is convenient to call directly from batch command. This batch mode
should allow the user to completely define all the required computations. It should be easy to use and all the
options should not necessarily be defined if they are not different from the common default values.
The batch program will execute each paragraph defined in the command file.
A paragraph is defined by the keyword "$" followed by the name of the module to be executed.
There are 4 modules in THERMISOL which are:
• $SKELETON
• $SOLVER
• $POSTHER
• $BPLOT
A command file can include as many occurrences of those modules.
Direct expansion
The direct expansion can be call with the following syntax:
[path] ThermisolLNX –e file.ske on Linux systems
# Inputs
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 121
THERMISOL V4.9 User Guide
# Outputs
# Inputs
# Outputs
# Options
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 122
THERMISOL V4.9 User Guide
# Inputs
# Outputs
# Options
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 123
THERMISOL V4.9 User Guide
TIME Real -1 Time for Tinit output (-1 goes to the end
time of the simulation)
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 124
THERMISOL V4.9 User Guide
Example
Here is an example of THERMISOL batch sequence that was used for THERMICA validation procedures on industrial
cases:
The goal of this sequence was to compare results between THERMICA v3 and v4. Let's suppose that THERMICA files
for THERMISOL has been already computed
THERMICA files :
• V3 Results:
• • Example99N.TAN Nodal Description
• Example99R.TAN Radiative Couplings
• Example99H.TAN External Fluxes
• V4 Results:
• • Example.nod.nwk Nodal Description
• Example.gr.nwk Radiative Couplings
• Example.fsa.nwk Solar Fluxes
• Example.fpa.nwk Planet Fluxes
In order to compare those results, let's compute the steady-state and transient temperatures in both case and plot
some curves to have a graphical check.
First of all, we need a generic skeleton using parametric file references that we are going to use for both cases.
Skeleton.ske
#----------------------------------#
# Generic Skeleton for Thermisol #
#----------------------------------#
#
# Parametric files description:
#
# File 1: Nodal Description
# File 2: Radiative Couplings
# File 3: Planet Fluxes (v4) or External Fluxes (v3)
# File 4: Solar Fluxes (v4) or OFF (v3)
$INFOS
#READ-1
#READ-2
#READ-3
#READ-4
$MODEL #READ-1
$NODES
#READ-1
$CONDUCTORS
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 125
THERMISOL V4.9 User Guide
#READ-2
$LOCALS
INTEGER* NBORBIT = 2;
$ARRAYS
#READ-2
#READ-3
#READ-4
$CONTROL
DTIMEI = 10;
OUTINT = PERIOD / 20;
# csv output
CSV_FREQ = 10;
# h5 output definition
1. initial data storage
H5_RES0 = 'NS,A,C,ALP,EPS,GL,GR,GF';
# frequency data storage
H5_FREQ = 4;
H5_RES1 = 'T,QS,QA,QE,QI,QR';
$SUBROUTINES
#READ-2
#READ-3
#READ-4
$INITIAL
# Storage in h5 file
CALL H5_INIT(' ')
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 126
THERMISOL V4.9 User Guide
$VTIME
$VRESULT
# Storage in h5 file
CALL H5_DUMP
$OUTPUTS
$EXECUTION
# Steady-State case
CALL SOLVIT
# Transient case
CALL SCRANK
$ENDMODEL
#
# THERMISOL Script for results comparison
#
# Input: Skeleton
SKE Skeleton.ske
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 127
THERMISOL V4.9 User Guide
$SOLVER
# Input: DCK
DCK v3.dck
# Input: Skeleton
SKE Skeleton.ske
$SOLVER
# Input: DCK
DCK v4.dck
# Curve Plotting
$BPLOT
F2 v4.temp.h5
T2 v4.3.3
# Graph 1:
@Temperatures of nodes 51 & 314
!1,T51,$Baseplate
!2,T51,$Baseplate
!1,T314,$Radiator
!2,T314,$Radiator
# Graph 2:
@Cylindrical structure
!1,T476,$Cycl7-Temperature
!2,T476,$Cycl7-Temperature
!1,QS476,$Cycl7-Solar Flux
!2,QS476,$Cycl7-Solar Flux
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 128
THERMISOL V4.9 User Guide
!1,QA476,$Cycl7-Albedo Flux
!2,QA476,$Cycl7-Albedo Flux
!1,QE476,$Cycl7-IR Flux
!2,QE476,$Cycl7-IR Flux
The following command will then perform all the tasks requested:
ThermisolXXX Sequence.txt
Ref: UM.000040364.AIRB © Airbus Defence and Space SAS 2022 - All rights reserved 129