From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001
From: stainer_t <thomas.stainer@oecd-nea.org>
Date: Mon, 8 Sep 2025 13:48:49 +0200
Subject: Initial commit from Polytechnique Montreal

---
 doc/IGE351/SectDcompo.tex | 417 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 417 insertions(+)
 create mode 100644 doc/IGE351/SectDcompo.tex

(limited to 'doc/IGE351/SectDcompo.tex')

diff --git a/doc/IGE351/SectDcompo.tex b/doc/IGE351/SectDcompo.tex
new file mode 100644
index 0000000..9cded50
--- /dev/null
+++ b/doc/IGE351/SectDcompo.tex
@@ -0,0 +1,417 @@
+\section{Contents of a \dir{multicompo} directory}\label{sect:multicompodir}
+
+This object, shown in \Fig{multicompo}, is used to collect information gathered
+from many DRAGON {\sl elementary calculations} performed under various conditions.
+Each elementary calculation is characterized by a tuple of {\sl global} and {\sl local parameters}.
+These parameters are of different types, depending on the nature of the
+study under consideration: type of assembly, power, temperature in a mixture,
+concentration of an isotope, time, burnup or exposure rate in a depletion calculation,
+etc. Each step of a depletion calculation represents an elementay calculation.
+The {\sc multicompo} object is often presented as a {\sl multi-parameter reactor database}.
+
+\begin{figure}[h!]
+\begin{center} 
+\epsfxsize=9cm
+\centerline{ \epsffile{compo.eps}}
+\parbox{15cm}{\caption{Representation of a {\sc multicompo} 
+object.}\label{fig:multicompo}}   
+\end{center}  
+\end{figure}
+
+\vskip 0.2cm
+
+The {\sc multicompo} object contains table-of-content information apart from a list
+of {\sl homogenized mixture} directories. Each {\sl homogenized mixture}
+directory contain a list of {\sl elementary calculation} directories whose
+components are embedded {\sc microlib} objects containing the useful data.
+The localization of an elementary calculation
+is done using a tuple of global and local parameters. The elementary calculation indices are
+stored in a tree with the number of levels equal to the number of global {\sl and} local parameters.
+An example of a tree with three parameters is shown in \Fig{ctree}. Each node
+of this tree is associated with the index of the corresponding global parameter (positive index) or
+local parameter (negative index) and with the
+reference to the daughter nodes if they exist. The number if leafs is equal to the number
+of nodes for the last (third) parameter and is equal to the number of elementary
+calculations stored in the {\sc multicompo} object. The index of each elementary calculation is
+therefore an attribute of each leaf.
+
+\begin{figure}[h!]  
+\begin{center} 
+\epsfxsize=12cm
+\centerline{ \epsffile{tree.eps}}
+\parbox{14cm}{\caption{Parameter tree in a {\sc multicompo} object}\label{fig:ctree}}   
+\end{center}  
+\end{figure}
+
+\vskip 0.1cm
+
+In each embedded {\sc microlib} directory, the {\tt COMPO:} module recover
+cross sections for a number of {\sl particularized isotopes} and {\sl macroscopic
+sets} named {\tt '*MAC*RES'}, a collection of isotopic cross sections weighted by
+isotopic number densities. Other information is also recovered: multigroup neutron
+fluxes, isotopic number densities, fission spectrum and a set
+of {\sl local parameters}. The local parameters are values that characterize each
+homogenized mixture: local power, burnup, exposure rate, etc.
+
+\subsection{State vector content for the \dir{multicompo} data structure}\label{sect:multicompostate}
+
+The dimensioning parameters for this data structure, which are stored in the state vector
+$\mathcal{S}^{\rm cpo}$, represent:
+
+\begin{itemize}
+\item The number of homogenized mixtures $M_{m}=\mathcal{S}^{\rm cpo}_{1}$. $=0$
+for an empty {\sc multicompo} object.
+\item The number of groups ${G}=\mathcal{S}^{\rm cpo}_{2}$ 
+\item The exact number of elementary calculations in the {\sc multicompo} ${N_{\rm cal}}=\mathcal{S}^{\rm cpo}_{3}$ 
+\item The maximum number of elementary calculations in the {\sc multicompo} ${N_{\rm max}}=\mathcal{S}^{\rm cpo}_{4}$ 
+\item The number of global parameters $N_{\rm glob}=\mathcal{S}^{\rm cpo}_{5}$ 
+\item The number of local parameters $N_{\rm loc}=\mathcal{S}^{\rm cpo}_{6}$ 
+\item The number of global parameters linked with isotopes $N_{\rm gl\_iso}=\mathcal{S}^{\rm cpo}_{7}$
+\item The number of global parameters linked with {\sc microlib} objects $N_{\rm gl\_bib}=\mathcal{S}^{\rm cpo}_{8}$
+\item The number of local parameters linked with isotopes $N_{\rm loc\_iso}=\mathcal{S}^{\rm cpo}_{9}$
+\item The number of lines of comment $N_{\rm doc}=\mathcal{S}^{\rm cpo}_{10}$
+\item Geometry index $L_{\rm geo}=\mathcal{S}^{\rm cpo}_{11}$:
+\begin{displaymath}
+L_{\rm geo} = \left\{
+\begin{array}{ll}
+0 & \textrm{the geometries are not available}\\
+1 & \textrm{calculation--ordered homogenized geometries are available.}\\
+\end{array} \right.
+\end{displaymath}
+\item Version identificator $\mathcal{S}^{\rm cpo}_{12}$. Currently equal to {\tt 2006}. This value
+  will change if the {\sc multicompo} specification is to be modified in the future.
+\item The number of user-defined particularized isotopes $\mathcal{S}^{\rm cpo}_{13}$.
+\item Group form factor index $N_{\rm gff}=\mathcal{S}^{\rm cpo}_{14}$:
+\begin{displaymath}
+N_{\rm gff} = \left\{
+\begin{array}{ll}
+-1 & \textrm{the group form factors will be recovered from an {\sc edition} object}\\
+0 & \textrm{the group form factors are not processed}\\
+>0 & \textrm{number of group form factors per energy group. The information is stored in}\\
+ & \textrm{a {\sc macrolib} subdirectory in the {\sc multicompo}.}\\
+\end{array} \right.
+\end{displaymath}
+\item Physical albedo index $N_{\rm alb}=\mathcal{S}^{\rm cpo}_{15}$:
+\begin{displaymath}
+N_{\rm alb} = \left\{
+\begin{array}{ll}
+-1 & \textrm{the physical albedos will be recovered from an {\sc edition} object}\\
+0 & \textrm{the physical albedos are not processed}\\
+>0 & \textrm{number of physical albedos per energy group. The information is stored in}\\
+ & \textrm{a {\sc macrolib} subdirectory in the {\sc multicompo}.}\\
+\end{array} \right.
+\end{displaymath}
+\item Discontinuity factor index $I_{\rm df}=\mathcal{S}^{\rm cpo}_{16}$:
+\begin{displaymath}
+I_{\rm df} = \left\{
+\begin{array}{ll}
+-1 & \textrm{discontinuity factor information will be recovered from an {\sc edition} object}\\
+0 & \textrm{no discontinuity factor information}\\
+1 & \textrm{multigroup boundary current information is available}\\
+2 & \textrm{discontinuity factor information (see \Sect{macroADF}) is available.}
+\end{array} \right.
+\end{displaymath}
+\end{itemize}
+
+\subsection{The main \dir{multicompo} directory}\label{sect:cpodirmain}
+
+On its first level, the
+following records and sub-directories will be found in the \dir{multicompo} directory:
+
+\begin{DescriptionEnregistrement}{Main records in \dir{multicompo}}{8.0cm}
+\CharEnr
+  {SIGNATURE\blank{3}}{$*12$}
+  {Signature of the data structure ($\mathsf{SIGNA}=${\tt L\_MULTICOMPO}).}
+\DirVar
+  {\listedir{namdir}}
+  {Set of sub-directories, each of them containing an independent {\sc multicompo}
+  structure}
+\end{DescriptionEnregistrement}
+
+\begin{DescriptionEnregistrement}{Main records and sub-directories in \listedir{namdir}}{8.0cm}
+\IntEnr
+  {STATE-VECTOR}{$40$}
+  {Vector describing the various parameters associated with this data structure $\mathcal{S}^{\rm cpo}_{i}$,
+  as defined in \Sect{multicompostate}.}
+\OptDirEnr
+  {DEPL-CHAIN\blank{2}}{$*$}
+  {directory containing the \dir{depletion} associated with directory \dir{namdir}, following
+  the specification presented in \Sect{microlibdirdepletion}.}
+\OptCharEnr
+  {COMMENT\blank{5}}{$(N^{\rm cpo}_{10})*80$}{$\mathcal{S}^{\rm cpo}_{10}> 0$}
+  {User--defined comments about the data structure}
+\OptCharEnr
+  {NOMISP\blank{6}}{$(\mathcal{S}^{\tt cpo}_{13})*8$}{$\mathcal{S}^{\tt cpo}_{13}\ge 1$}
+  {Names of the user-defined particularized isotopes.}
+\DirEnr
+  {GLOBAL\blank{6}}
+  {Table--of--content for global parameter information: definition and tabulated values. The specification is presented in \Sect{cpodirarbre}.}
+\OptDirEnr
+  {LOCAL\blank{7}}{$\mathcal{S}^{\rm cpo}_{6}\ge 1$}
+  {Table--of--content for local parameter information. The specification is presented in \Sect{cpodirlocal}.}
+\OptDirlEnr
+  {MIXTURES\blank{4}}{$\mathcal{S}^{\rm cpo}_1$}{$\mathcal{S}^{\rm cpo}_{1}\ge 1$}
+  {List of {\sl homogenized mixture} directories. Each component of this list follows the specification
+   presented in \Sect{homo_mix}.}
+\OptDirlEnr
+  {GEOMETRIES\blank{2}}{$\mathcal{S}^{\rm cpo}_4$}{$\mathcal{S}^{\rm cpo}_{11} = 1$}
+  {List of homogenized {\sl geometry} directories. Each component of this list follows the specification
+   presented in \Sect{geometrydirmain}.}
+\end{DescriptionEnregistrement}
+
+\subsection{The {\tt GLOBAL} sub-directory in \dir{multicompo}}\label{sect:cpodirarbre}
+
+This directory is a table--of--content for the globals parameters. Its
+specification follows:
+
+\begin{DescriptionEnregistrement}{Contents of sub-directory {\tt GLOBAL} in
+\dir{multicompo}}{7.0cm}
+\label{tabl:tabglob}
+\CharEnr
+  {PARKEY\blank{6}}{$(\mathcal{S}^{\rm cpo}_{5})*12$}
+  {User--defined key-words for the global parameters.}
+\CharEnr
+  {PARTYP\blank{6}}{$(\mathcal{S}^{\rm cpo}_{5})*4$}
+  {Character identification for the types of global parameters (eg: {\tt TEMP}, {\tt CONC}, {\tt IRRA},
+  etc.). Temperatures are given in Kelvin.}
+\CharEnr
+  {PARFMT\blank{6}}{$(\mathcal{S}^{\rm cpo}_{5})*8$}
+  {Types for the global parameters (eg: {\tt REAL}, {\tt STRING} or {\tt INTEGER}).}
+\OptCharEnr
+  {PARCHR\blank{6}}{$(\mathcal{S}^{\rm cpo}_{7})*8$}{$\mathcal{S}^{\rm cpo}_{7}\ge 1$}
+  {Isotope names linked to type--{\tt CONC} global parameters.}
+\IntEnr
+  {NVALUE\blank{6}}{$\mathcal{S}^{\rm cpo}_{5}$}
+  {Number of specific values for a global parameters.}
+\IntEnr
+  {PARCAD\blank{6}}{$\mathcal{S}^{\rm cpo}_{5}+1$}
+  {Address of the first element in array {\tt PARCHR}.}
+\IntEnr
+  {PARPAD\blank{6}}{$\mathcal{S}^{\rm cpo}_{5}+1$}
+  {Address of the first element in array {\tt PARBIB}.}
+\OptIntEnr
+  {PARMIL\blank{6}}{$\mathcal{S}^{\rm cpo}_{8}$}{$\mathcal{S}^{\rm cpo}_{8}\ge 1$}
+  {Mixture indices linked to type--{\tt TEMP} or --{\tt CONC} global parameters.}
+\OptCharEnr
+  {PARBIB\blank{6}}{$(\mathcal{S}^{\rm cpo}_{8})*12$}{$\mathcal{S}^{\rm cpo}_{8}\ge 1$}
+  {{\sc microlib} names linked to type--{\tt TEMP} or --{\tt CONC} global parameters.}
+\OptRealVar
+  {\listedir{gvaldir}}{\tt NVALUE(J)}{*}{}
+  {Set of real global parameter arrays. Each element of \listedir{gvaldir} contains a
+   real array containing the tabulated values of the $J$--th global parameter.}
+\OptIntVar
+  {\listedir{gvaldir}}{\tt NVALUE(J)}{*}
+  {Set of integer global parameter arrays.  Each element of \listedir{gvaldir} contains an
+   integer array containing the tabulated values of the $J$--th global parameter.}
+\OptCharVar
+  {\listedir{gvaldir}}{$({\tt NVALUE(J)})*12$}{*}
+  {Set of character$*12$ global parameter arrays. Each element of \listedir{gvaldir} contains a
+   character$*12$ array containing the tabulated values of the $J$--th global parameter.}
+\end{DescriptionEnregistrement}
+
+Item \listedir{gvaldir} represents a set of $\mathcal{S}^{\rm cpo}_{5}$ real,
+integer or character*$12$ records. The name of each
+\listedir{gvaldir} record is a {\tt character*12} variable ({\tt text12})
+composed using the following FORTRAN instruction:
+$$
+\mathtt{WRITE(}\mathsf{text12}\mathtt{,'(''pval'',I8.8)')}\: J
+$$
+where $J$ is the index of the global parameter with $1 \leq J \leq \mathcal{S}^{\rm cpo}_{5}$. The global
+parameter values of type {\tt REAL} or {\tt INTEGER} are sorted.
+
+\subsection{The {\tt LOCAL} sub-directory in \dir{multicompo}}\label{sect:cpodirlocal}
+
+This directory is a table--of--content for the locals parameters. Its
+specification follows:
+
+\begin{DescriptionEnregistrement}{Contents of sub-directory {\tt LOCAL} in
+\dir{multicompo}}{7.0cm}
+\label{tabl:tabloc}
+\CharEnr
+  {PARKEY\blank{6}}{$(\mathcal{S}^{\rm cpo}_{6})*12$}
+  {User--defined key-words for the local parameters.}
+\CharEnr
+  {PARTYP\blank{6}}{$(\mathcal{S}^{\rm cpo}_{6})*4$}
+  {Character identification for the types of local parameters (eg: {\tt TEMP}, {\tt IRRA}, {\tt FLUB},
+  etc.).}
+\OptCharEnr
+  {PARCHR\blank{6}}{$(\mathcal{S}^{\rm cpo}_{9})*8$}{$\mathcal{S}^{\rm cpo}_{9}\ge 1$}
+  {Isotope names linked to type--{\tt CONC} local parameters.}
+\IntEnr
+  {PARCAD\blank{6}}{$\mathcal{S}^{\rm cpo}_{6}+1$}
+  {Address of the first element in array {\tt PARCHR}.}
+\end{DescriptionEnregistrement}
+
+\subsection{The homogenized mixture sub-directory in \dir{multicompo}}\label{sect:homo_mix}
+
+Each component of the list named {\tt 'MIXTURES'} contains the parameter tree and a list of
+directories:
+
+\begin{DescriptionEnregistrement}{Component of the homogenized mixture directory}{7.5cm}
+\label{tabl:mixture_cpo}
+\DirEnr
+  {TREE\blank{8}}
+  {Parameter tree. The specification is presented in \Sect{cpodirtree}.}
+\DirlEnr
+  {CALCULATIONS}{$\mathcal{S}^{\rm cpo}_{4}$}
+  {List of {\sc microlib} directories. Each component of this list follows the specification
+   presented in \Sect{microlibdirmain} with $M_{m}=1$ (1 mixture) and $\mathcal{M}=4$.}
+\end{DescriptionEnregistrement}
+
+\subsection{The {\tt TREE} sub-directory in a {\tt MIXTURES} component}\label{sect:cpodirtree}
+
+This directory contains local parameter values and the parameter tree. Its specification follows:
+
+\begin{DescriptionEnregistrement}{Contents of sub-directory {\tt TREE} in
+{\tt MIXTURES}}{7.0cm}
+\label{tabl:tabctree}
+\IntEnr
+  {NCALS\blank{7}}{$1$}
+  {Number of elementary calculations.}
+\IntEnr
+  {NVP\blank{9}}{$2$}
+  {{\tt NVP(1)}: Exact number of nodes in the parameter tree. {\tt NVP(2)}: Maximum number of nodes in the parameter tree.}
+\OptIntEnr
+  {NVALUE\blank{6}}{$\mathcal{S}^{\rm cpo}_{6}$}{$\mathcal{S}^{\rm cpo}_{6}\ge 1$}
+  {Number of specific values for a local parameters.}
+\OptRealVar
+  {\listedir{lvaldir}}{\tt NVALUE(J)}{$\mathcal{S}^{\rm cpo}_{6}\ge 1$}{}
+  {Set of real local parameter arrays. Each element of \listedir{lvaldir} contains a
+   real array containing the tabulated values of the $J$--th local parameter.}
+\IntEnr
+  {DEBARB\blank{6}}{{\tt NVP(1)}$+1$}
+  {- If the node does not correspond to the last parameter:
+     index in {\tt DEBARB} of the first daughter of the node.
+   - If the node correspond to the last parameter: index in
+     {\tt DEBARB} where we recover the index of an elementary
+     calculation.}
+\IntEnr
+  {ARBVAL\blank{6}}{{\tt NVP(1)}}
+  {-For a global parameter: index of the parameter in the \listedir{gvaldir}
+   record (see Table~\ref{tabl:tabglob}).
+   -For a local parameter: index of the parameter in the \listedir{lvaldir} record}
+\IntEnr
+  {ORIGIN\blank{6}}{$\mathcal{S}^{\rm cpo}_{4}$}
+  {Index of the mother elementary calculation. This information is useful to follow the
+  historical relation between calculations.}
+\end{DescriptionEnregistrement}
+
+Item \listedir{lvaldir} represents a set of $\mathcal{S}^{\rm cpo}_{6}$ real records. The name of each
+\listedir{lvaldir} record is a {\tt character*12} variable ({\tt text12})
+composed using the following FORTRAN instruction:
+$$
+\mathtt{WRITE(}\mathsf{text12}\mathtt{,'(''pval'',I8.8)')}\: J
+$$
+where $J$ is the index of the local parameter with $1 \leq J \leq \mathcal{S}^{\rm cpo}_{6}$. The local
+parameter values are sorted.
+
+\vskip 0.2cm
+
+The parameter tree has the same number of stages as global {\sl and} local parameters. The local parameters
+always follow the global parameters. For each value of
+the $i$--th parameter, the tree indicates the beginning position of the $(i+1)$--th parameter.
+The arrays {\tt DEBARB} and {\tt ARBVAL} are set to localize the results of an elementary calculation
+identified by a specific parameter tuple.
+
+\vskip 0.2cm
+
+An example of a parameter tree is represented here:
+\begin{verbatim}
+     dn = value in DEBARB,  (m) = value in ARBVAL
+
+     Root                          *(0)
+                                     !
+     Param. Nb 1                  d2(1)
+                            -------------------
+                           !                   !
+     Param. Nb 2        d3(1)                4(2)
+                       ---------           ---------
+                      !         !         !    !    !
+     Param. Nb 3   d5(1)      6(3)     d7(1) 8(2) 9(3)   d10
+
+     Calculation Nb:  4         5         1    2    3
+
+     DEBARB:      2  3  5  7 10  4  5  1  2  3
+     ARBVAL:      0  1  1  2  1  3  1  2  3
+\end{verbatim}
+
+\vskip 0.2cm
+
+The useful dimensions of variables {\tt DEBARB}, {\tt ARBVAL} and {\tt ORIGIN} in
+Table~\ref{tabl:tabctree} are respectively equal to {\tt NVP(1)}$+1$, {\tt NVP(1)}
+and $\mathcal{S}^{\rm cpo}_{3}$. The allocated sizes may be bigger.
+
+\vskip 0.2cm
+
+Each elementary calculation is fully identified by a parameter tuple (the Fortran array {\tt MUPLET(NPTOT)}), an
+integer array of dimension {\tt NPTOT}$=\mathcal{S}^{\rm cpo}_{5}+\mathcal{S}^{\rm cpo}_{6}$. The first
+$\mathcal{S}^{\rm cpo}_{5}$ components correspond to global parameter indices; the following
+$\mathcal{S}^{\rm cpo}_{6}$ components correspond to local parameter indices. Here, {\tt NVP} represents
+the useful size of the {\tt ARBVAL} array. A recursive procedure is required to search the elementary
+calculation index {\tt ICAL} corresponding to this parameter tuple {\tt MUPLET}. Note that some components of the tuple
+can be set to zero in case where the number of global and local parameters is overdetermined. The recursive function
+is called using
+\begin{verbatim}
+      ICAL=NICAL(1,NVP,NPTOT,DEBARB,ARBVAL,MUPLET)
+\end{verbatim}
+
+\noindent and is implemented in Fortran-90 as
+\begin{verbatim}
+RECURSIVE INTEGER FUNCTION NICAL(II,NVP,NPTOT,DEBARB,ARBVAL,MUPLET) RESULT(ICAL)
+   INTEGER II,NVP,NPTOT,DEBARB(NVP+1),ARBVAL(NVP),MUPLET(NPTOT)
+   IF(NPTOT==0) THEN
+      ICAL=DEBARB(II+1)
+      RETURN
+   ENDIF
+   NBOK=0
+   IKEEP=0
+   DO I=DEBARB(II),DEBARB(II+1)-1
+      IF((MUPLET(1)==0).OR.(MUPLET(1)==ARBVAL(I))) THEN
+         JICAL=NICAL(I,NVP,NPTOT-1,DEBARB,ARBVAL,MUPLET(2))
+         IF(JICAL > 0) THEN
+            IKEEP=JICAL
+            NBOK=NBOK+1
+         ELSE IF(JICAL==-1) THEN
+            NBOK=2
+         ENDIF
+      ENDIF
+   ENDDO
+   IF(NBOK > 1) THEN
+      ! Many elementary calculation exist for this tuple.
+      ICAL=-1
+   ELSE IF(NBOK==0) THEN
+      ! No elementary calculation exists for this tuple.
+      ICAL=0
+   ELSE
+      ICAL=IKEEP
+   ENDIF
+END FUNCTION NICAL
+\end{verbatim}
+
+\vskip 0.2cm
+
+Similarly, another Fortran program can be used to search the parameter tuple corresponding to
+the {\tt ICAL}--th elementary calculation:
+\begin{verbatim}
+SUBROUTINE COMUPL(NVP,NPTOT,ICAL,NCALS,DEBARB,ARBVAL,MUPLET)
+   INTEGER NVP,NPTOT,ICAL,NCALS,DEBARB(NVP+1),ARBVAL(NVP),MUPLET(NPTOT)
+   DO I=NVP-NCALS+1,NVP
+      IF(DEBARB(I+1)==ICAL) THEN
+         I0=I
+         EXIT
+      ENDIF
+   ENDDO
+   MUPLET(NPTOT)=ARBVAL(I0)
+   DO IPAR=NPTOT-1,1,-1
+      DO I=1,NVP-NCALS
+         IF(DEBARB(I+1) > I0) THEN
+            I0=I
+            EXIT
+         ENDIF
+      ENDDO
+      MUPLET(IPAR)=ARBVAL(I0)
+   ENDDO
+END SUBROUTINE COMUPL
+\end{verbatim}
+
+\clearpage
-- 
cgit v1.2.3

