\subsubsection{The {\tt TRIVAT:} tracking module}\label{sect:TRIVACData} The {\tt TRIVAT:} module provides an implementation of the diffusion or simplified $P_n$ method. The {\tt TRIVAT:} module is used to perform a TRIVAC-type ``tracking" on a 1D/2D/3D regular Cartesian or hexagonal geometry.\cite{BIVAC,TRIVAC} The geometry is analyzed and a LCM object with signature {\tt L\_TRIVAC} is created with the following information: \begin{itemize} \item Diagonal and hexagonal symmetries are unfolded and the mesh-splitting operations are performed. Volumes, material mixture and averaged flux recovery indices are computed on the resulting geometry. \item A finite element discretization is performed and the corresponding numbering is saved. \item The unit finite element matrices (mass, stiffness, etc.) are recovered. \item Indices related to an ADI preconditioning with or without supervectorization are saved. \end{itemize} The calling specification for this module is: \begin{DataStructure}{Structure \dstr{TRIVAT:}} \dusa{TRKNAM} \moc{:=} \moc{TRIVAT:} $[$ \dusa{TRKNAM} $]$ \dusa{GEONAM} \moc{::} \dstr{desctrack} \dstr{descTRIVAC} \end{DataStructure} \noindent where \begin{ListeDeDescription}{mmmmmmm} \item[\dusa{TRKNAM}] {\tt character*12} name of the \dds{tracking} data structure that will contain region volume and surface area vectors in addition to region identification pointers and other tracking information. If \dusa{TRKNAM} also appears on the RHS, the previous tracking parameters will be applied by default on the current geometry. \item[\dusa{GEONAM}] {\tt character*12} name of the \dds{geometry} data structure. \item[\dstr{desctrack}] structure describing the general tracking data (see \Sect{TRKData}) \item[\dstr{descTRIVAC}] structure describing the transport tracking data specific to \moc{TRIVAT:}. \end{ListeDeDescription} \vskip 0.2cm The \moc{TRIVAT:} specific tracking data in \dstr{descTRIVAC} is defined as \begin{DataStructure}{Structure \dstr{descTRIVAC}} $[~\{$ \moc{PRIM} $[$ \dusa{ielem} $]~|$ \moc{DUAL} $[$ \dusa{ielem} \dusa{icol} $]~|$ \moc{MCFD} $[$ \dusa{ielem} $]~|$ \moc{LUMP} $[$ \dusa{ielem} $]~\}~]$ \\ $[$ \moc{SPN} $[$ \moc{DIFF} $]$ \dusa{nlf} $[$ \moc{SCAT} \dusa{iscat} $]~[$ \moc{VOID} \dusa{nvd} $]~]$ \\ $[$ \moc{ADI} \dusa{nadi} $]$ \\ $[$ \moc{VECT} $[$ \dusa{iseg} $]~[$ \moc{PRTV} \dusa{impv} $]~]$ \\ {\tt ;} \end{DataStructure} \noindent where \begin{ListeDeDescription}{mmmmmm} \item[\dstr{desctrack}] structure describing the general tracking data (see \Sect{TRKData}) \item[\moc{PRIM}] key word to set a discretization based on the variational collocation method. \item[\moc{DUAL}] key word to set a mixed-dual finite element discretization. If the geometry is hexagonal, a Thomas-Raviart-Schneider method is used. \item[\moc{MCFD}] key word to set a discretization based on the nodal collocation method. The mesh centered finite difference approximation is the default option and is generally set using {\tt MCFD~1}. The {\tt MCFD} approximations are numerically equivalent to the {\tt DUAL} approximations with \dusa{icol}=2; however, the {\tt MCFD} approximations are less expensive. \item[\moc{LUMP}] key word to set a discretization based on the nodal collocation method with serendipity approximation. The serendipity approximation is different from the \moc{MCFD} option in cases with \dusa{ielem}$\ge$2. This option is not available for hexagonal geometries. \item[\dusa{ielem}] order of the finite element representation. The values permitted are: 1 (linear polynomials), 2 (parabolic polynomials), 3 (cubic polynomials) or 4 (quartic polynomials). By default \dusa{ielem}=1. \item[\dusa{icol}] type of quadrature used to integrate the mass matrices. The values permitted are: 1 (analytical integration), 2 (Gauss-Lobatto quadrature) or 3 (Gauss-Legendre quadrature). By default \dusa{icol}=2. The analytical integration corresponds to classical finite elements; the Gauss-Lobatto quadrature corresponds to a variational or nodal type collocation and the Gauss-Legendre quadrature corresponds to superconvergent finite elements. \item[\moc{SPN}] keyword to set a simplified spherical harmonics ($SP_n$) expansion of the flux.\cite{nse2005,ane10a} This option is available with 1D, 2D and 3D Cartesian geometries and with 2D and 3D hexagonal geometries. \item[\moc{DIFF}] keyword to force using $1/3D^{g}$ as $\Sigma_1^{g}-\Sigma_{{\rm s}1}^{g}$ cross sections. A $P_1$ or $SP_1$ method will therefore behave as diffusion theory. \item[\dusa{nlf}] order of the $P_n$ or $SP_n$ expansion (odd number). Set to zero for diffusion theory (default value). \item[\moc{SCAT}] keyword to limit the anisotropy of scattering sources. \item[\dusa{iscat}] number of terms in the scattering sources. \dusa{iscat} $=1$ is used for isotropic scattering in the laboratory system. \dusa{iscat} $=2$ is used for linearly anisotropic scattering in the laboratory system. The default value is set to $n+1$ in $P_n$ or $SP_n$ case. \item[\moc{VOID}] key word to set the number of base points in the Gauss-Legendre quadrature used to integrate void boundary conditions if \dusa{icol} $=3$ and \dusa{n} $\ne 0$. \item[\dusa{nvd}] type of quadrature. The values permitted are: 0 (use a (\dusa{n}$+2$)--point quadrature consistent with $P_{\rm n}$ theory), 1 (use a (\dusa{n}$+1$)--point quadrature consistent with $S_{{\rm n}+1}$ theory), 2 (use an analytical integration of the void boundary conditions). By default \dusa{nvd}=0. \item[\moc{ADI}] keyword to set the number of ADI iterations at the inner iterative level. \item[\dusa{nadi}] number of ADI iterations (default: \dusa{nadi} $=2$). \item[\moc{VECT}] key word to set an ADI preconditionning with supervectorization. By default, TRIVAC uses an ADI preconditionning without supervectorization. \item[\dusa{iseg}] width of a vectorial register. \dusa{iseg} is generally a multiple of 64. By default, \dusa{iseg}=64. \item[\moc{PRTV}] key word used to set \dusa{impv}. \item[\dusa{impv}] index used to control the printing in supervectorization subroutines. =0 for no print; =1 for minimum printing (default value); Larger values produce increasing amounts of output. \end{ListeDeDescription} Various finite element approximations can be obtained with different values of \dusa{ielem}. \eject