diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /doc/IGE344/SectHST.tex | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'doc/IGE344/SectHST.tex')
| -rw-r--r-- | doc/IGE344/SectHST.tex | 348 |
1 files changed, 348 insertions, 0 deletions
diff --git a/doc/IGE344/SectHST.tex b/doc/IGE344/SectHST.tex new file mode 100644 index 0000000..a47e8ba --- /dev/null +++ b/doc/IGE344/SectHST.tex @@ -0,0 +1,348 @@ +\subsection{The \moc{HST:} module}\label{sect:HSTData} + +The \moc{HST:} module has been designed to manage a full reactor execution in DONJON using explicit DRAGON calculations for each +cell.\cite{hst} This module saves in an \dds{history} data structure the information available in \dds{burnup} data +structures generated by DRAGON. It can also read \dds{map} data structure generated by DONJON to prepare the \dds{history} data structure for a +new series of cell calculations in DRAGON. The \dds{history} data structure can also be used to update the \dds{map} data structure. Finally, the module +\moc{HST:} can be used to create an initial \dds{burnup} data structure that can be used to evolve the cell another time step in DRAGON. + +The \moc{HST:} module can be used to create or update an \dds{history} data structure. The possible options are: + +\begin{DataStructure}{Updating an \dds{history} structure using a \dds{map} structure} +\dusa{\dds{history}} \moc{:=} \moc{HST:} $[$ \dusa{\dds{history}} $]$ \dusa{\dds{map}} $[$ \moc{::} +$[$ \dstr{hstdim} $]$ $[$ \moc{GET} \dstr{hstpar} $]$ $]$ +\end{DataStructure} + +\begin{DataStructure}{Updating an \dds{history} structure using a \dds{burnup} structure}\label{tab2} +\dusa{\dds{history}} \moc{:=} \moc{HST:} $[$ \dusa{\dds{history}} $]$ $[$ \dusa{\dds{burnup}} $]$ $[$ \moc{::} +$[$ \dstr{hstdim} $]$ \\ +\hspace*{1.0cm} $[$ \moc{GET} \dstr{hstpar} $]$ + $[$ \moc{CELLID} \dusa{icha} \dusa{ibun} $[$ \dusa{idfuel} $]$ $[$ \moc{GET} \dstr{hstpar} +$]$ $]$ $]$ +\end{DataStructure} It can also be used to create a \dds{burnup} data structure from the information available on an \dds{history} data structure: +\begin{DataStructure}{Updating a \dds{burnup} structure using an \dds{history} structure} +\dusa{\dds{burnup}} \moc{:=} \moc{HST:} \dusa{\dds{history}} $[$ \moc{::} $[$ \dstr{hstdim} $]$ \\ +\hspace*{1.0cm} $[$ \moc{PUT} \dstr{hstpar} $]$\\ +\hspace*{1.0cm} \moc{CELLID} \dusa{icha} \dusa{ibun}\\ +\hspace*{1.0cm} $[$ \moc{PUT} + $\{$ \moc{BREFL} \dstr{hstbrn} \dstr{hstpar} \moc{AREFL} +\dstr{hstbrn} \dstr{hstpar} $|$ $[$ \moc{AREFL} $]$ \dstr{hstbrn} \dstr{hstpar} $\}$ +$]$ $]$ +\end{DataStructure} +\noindent It can also be used to update a \dds{map} data structure from the information available on an \dds{history} data structure: +\begin{DataStructure}{Updating an \dds{history} structure using a \dds{map} structure} +\dusa{\dds{map}} \moc{:=} \moc{HST:} \dusa{\dds{map}} \dusa{\dds{history}} +\end{DataStructure} + +\noindent where + +\begin{ListeDeDescription}{mmmmmmmm} + +\item[\dusa{\dds{history}}] \verb|character*12| name of an \dds{history} data structure. + +\item[\dusa{\dds{burnup}}] \verb|character*12| name of a \dds{burnup} data structure. + +\item[\dusa{\dds{map}}] \verb|character*12| name of a \dds{map} data structure. + +\item[\dstr{hstdim}] structure containing the dimensions for the \dds{history} data structure. + +\item[\moc{CELLID}] keyword to identify the cell for which history information is to be processed. + +\item[\dusa{icha}] channel number for which history information is to be processed. + +\item[\dusa{ibun}] bundle number for which history information is to be processed. + +\item[\dusa{idfuel}] fuel type number associated with this cell. One can associate to each fuel cell a different fuel type. By default a single fuel type is +defined and it fills every fuel cell. Only the initial properties of each fuel type are saved. These properties are used for refueling. + +\item[\moc{GET}] keyword to specify that the values of the parameters selected in \dstr{brnpar} will be read from the input stream or CLE-2000 local variables +and stored on the \dds{history} data structure. + +\item[\moc{PUT}] keyword to specify that the values of the parameters selected in \dstr{brnpar} will be read from the \dds{history} data structure and +transferred to local CLE-2000 variables. + +\item[\moc{BREFL}] to specify that the information to extract from the \dds{history} data structure is related to the properties of the cell before refueling takes +place. + +\item[\moc{AREFL}] to specify that the information to extract from the \dds{history} data base is related to the properties of the cell after refueling took +place. + + \item[\dstr{hstbrn}] structure containing the burnup options. + +\item[\dstr{hstpar}] structure containing the local parameters options. +\end{ListeDeDescription} + +The \dstr{hstdim} input structure is required for general dimensioning purpose. It is generally used only when creating the \dds{history} data structure. +However, the number of global and local parameters used in a \dds{history} data structure can be increased at all time. The number of channels, bundles and the +refueling scheme must be defined at the creation of the \dds{history} data structure. This information can be provided manually or extracted from a \dds{map} +data structure. The general form of the \dstr{hstdim} input structure follows: + +\begin{DataStructure}{Structure \dstr{hstdim}} +$[$ \moc{EDIT} \dusa{iprint} $]$ \\ +$[$ \moc{DIMENSIONS} +$[$ \moc{GLOBAL} \dusa{nglo} $]$ $[$ \moc{LOCAL} \dusa{nloc} $]$ +$[$ \moc{BUNDLES} \dusa{nbun} \dusa{bunl} $]$ $[$ \moc{CHANNELS} \dusa{ncha} $]$ $]$ +\end{DataStructure} + +\noindent + where +\begin{ListeDeDescription}{mmmmmmmmm} + +\item[\moc{EDIT}] keyword used to modify the print level \dusa{iprint}. + +\item[\dusa{iprint}] index used to control the printing in this module. It must be set to 0 if no printing on the output file is required. + +\item[\moc{DIMENSIONS}] keyword used to indicate that the general dimensioning of the \dds{history} data structure will be modified. + +\item[\moc{GLOBAL}] keyword used to modify the number of global parameters on the \dds{history} data structure. + +\item[\dusa{nglo}] the number of global parameters. Note that the history module will use the maximum value between the current \dusa{nglob} and the value, if +any, defined on the \dds{history} data structure. + +\item[\moc{LOCAL}] keyword used to modify the number of local parameters on the \dds{history} data structure. + +\item[\dusa{nloc}] the number of local parameters. Note that the history module will use the maximum value between the current \dusa{nloc} and the value, if +any, defined on the \dds{history} data structure. + +\item[\moc{BUNBLES}] keyword used to specify the number of bundles per channels for the reactor model considered in the \dds{history} data structure. + +\item[\dusa{nbun}] the number of bundles per channels for the reactor model. Note that if \dusa{nbun} is different from the value already defined on the +\dds{history} data structure or the \dds{map} data structure, the execution will be aborted. + +\item[\dusa{bunl}] bundle length in cm. This information is required to compute inital fuel weight. + +\item[\moc{CHANNELS}] keyword used to specify the number of fuel channels for the reactor model considered in the \dds{history} data structure. + +\item[\dusa{ncha}] the number of fuel channels for the reactor model. Note that if \dusa{ncha} is different from the value already defined on the \dds{history} +data structure or the \dds{map} data structure, the execution will be aborted. + +\end{ListeDeDescription} + +The \dstr{hstbrn} serves a unique purpose, mainly to extract from the \dds{history} file the information required to process a burnup evaluation in DRAGON using +the \moc{EVO:} module. The information must be stored inside CLE-2000 variables. The general form of this output structure is: + +\begin{DataStructure}{Structure \dstr{hstbrn}} +\moc{BURN} \dusa{period} \dusa{power} \\ +\end{DataStructure} +\noindent + where +\begin{ListeDeDescription}{mmmmmmmm} + +\item[\moc{BURN}] keyword to indicate that burnup information follows. + +\item[\dusa{period}] the burnup period (in days) that will be transferred to a real CLE-2000 variable. + +\item[\dusa{power}] the power density (in kW/kg) that will be transferred to a real CLE-2000 variable. +\end{ListeDeDescription} + + +The \dstr{hstpar} serves two purposes. First, it is used to define the names of the local and global parameters that may be used in our calculations as well as +the values of these local parameters. In can also be used to extract from a \dds{history} data structure the values of these parameters. The general form of +this structure is: + +\begin{DataStructure}{Structure \dstr{hstpar}} +$[[$ \dusa{NAMPAR} \dusa{valpar} $]]$ +\end{DataStructure} + +\noindent + where +\begin{ListeDeDescription}{mmmmmmmm} + +\item[\dusa{NAMPAR}] name of a local or global parameter to process. The parameters specified before the keyword \dusa{CELLID} is read will be considered global +otherwise they will be considered local. + +\item[\dusa{valpar}] real value for the local or global parameter to process. In the case where the \moc{GET} option is activated, the history module will +extract this parameter from the input data stream. In the case where the \moc{PUT} option is activated, the history module will try to transfer this information +into a real CLE-2000 variable. +\end{ListeDeDescription} + +\subsubsection{Example}\label{sect:HSTExample} + +The history interface between the codes DRAGON and DONJON has been written as a new module in +order to facilitate the access to the GANLIB utilities that manage the required hierarchical data structures. The +resulting \moc{HST:} module can be called both by DRAGON and DONJON. + +The reactor model we will consider as an example is a 3--D model with an $x = 3$, $y = 3$ and $z = 3$ mesh. Here +we will assume that the $x - y$ plane describes fuel channels. The $z$ plane will be associated with the so-called fuel +bundles. This choice is somewhat arbitrary, however it is useful if the refueling takes place in a specific direction as +in a CANDU reactor. Here, a 2--bundle shift fueling strategy will be considered. To each fresh fuel cell introduced +in the core the \moc{HST:} module will associate a unique cell number between 1 and \moc{Nc}, the maximum number of +cells in the reactor. Most of the information associated with the fresh fuel cells will be extracted from a DRAGON +\dds{burnup} file or defined using variable local parameters. Each fresh fuel cell inserted in the core will also be +associated with a specific fuel type. Each fuel type is defined as a unique initial fuel composition. +The fuel management for the reactor, including burnup and refueling will be performed by the DONJON code. +Here the \moc{HST:} will interact with this code via the \dds{map} data structure. Typically, each cell in the reactor will be +burned inside DRAGON using the power provided in the \moc{AX-SHAPE} record and the depletion time provided in +the \moc{BURNUP-BEG} record stored in the \dds{map} structure. When refueling takes place some of the +fuel cells will be extracted, other will be displaced from one position to another and finally new fresh fuel cells +inserted. The fresh fuel cells properties will be extracted from the fuel types properties available on the \dds{history} +data structure. + +In a coupled DRAGON/DONJON execution, the \moc{HST:} module will be called at various points and for various +reasons. The first call to \moc{HST:} can be performed using: + +\begin{verbatim} +MODULE HST: ; +*---- +* Map data structure for initialization: MAP0 +* History data structure : History +*---- +SEQ_ASCII MAP0 ; +XSM_FILE History ; +XSM_FILE Reseau ; +*---- +* Reactor parameters +* ncha = nunber of channels = 9 +* nbun = nunber of bundles = 3 +* nevo = nunber of evolution = 3 +* nglo = nunber of global parameters = 1 +* nloc = nunber of local parameters = 2 +* bunl = bundle length in cm = 49.53 cm +*---- +INTEGER ncha nbun nevo nglo nloc := +9 3 3 1 2 ; +REAL bunl := 49.53 ; +*---- +* Initialize History using MAP0 +*---- +Reseau := MAP0 ; +History := HST: Reseau :: +DIMENSIONS GLOBAL <<nglo>> LOCAL <<nloc>> +BUNDLES <<nbun>> <<bunl>> +CHANNELS <<ncha>> ; +\end{verbatim} + +Here, the \dds{history} data structure will be stored in the XSM file \moc{History}. One global and two local parameters +are considered. No information about the name or the value of the global and local parameters will be available. +This initialization procedure stores information only on the main level of the \dds{history} data structure if the \dds{map} +data structure is not available. In this case the \dds{history} is updated using a \dds{map} data structure (in sequential ASCII +file \moc{MAP0}). The number of channels and bundles per channel are stored and compared with the same information +in the \dds{map} structure. For each bundle in the \dds{map}, cell type and fuel type directories are constructed. The bundle +powers and burnups available in \dds{map} are used to generate the power rates in kW/kg and the depletion time in days +required to reach the specified burnups. These values are stored in the \dds{history} in the \moc{PARAMBURNTAR} record. +The fuel mass is mandatory for such calculation, thus the fuel weight is recovered from the \dds{map}. If the \dds{history} +is in modification mode, the fuel weight is computed using the bundle lenght and the initial fuel density. +Now, let us assume that a DRAGON calculation was performed for the cell located in bundle $j=1$ of channel +$i=1$. We will also assume that these cells contain a single type of fuel. Here the moderator temperature \moc{TMod} is a +global parameter while the fuel (\moc{TComb}) and coolant (\moc{TCalo}) temperatures are considered local parameters. We +assume that after the cell flux calculation a \dds{burnup} data structure was generated using the following instructions: + +\begin{verbatim} +*---- +* Procedures for cell calculation: CellCalc +*---- +PROCEDURE CellCalc ; +*---- +* Global parameter: Tmod for moderator temperature +* Local parameters: TComb for fuel temperature +* TCalo for coolant temperature +*---- +REAL TMod := 345.66 ; +REAL TComb TCalo := 941.29 560.66 ; +*---- +* Initial burnup options for cell calculation +*---- +REAL Power DeltaT := 31.9713 5.0 ; +*---- +* Local data structures +*---- +LINKED_LIST Burnup Edition ; +*---- +* Execution control parameters +* icha = channel number = 1 +* ibun = bundle number = 1 +*---- +INTEGER icha ibun := 1 1 ; +*---- +* Perform cell calculation +*---- +Burnup Edition := CellCalc Burnup :: +<<TComb>> <<TCalo>> <<TMod>> +<<Power>> <<DeltaT>> ; +\end{verbatim} + +Then, assuming that the history structure \moc{HistXSM} was created using the options above, we can use + +\begin{verbatim} +*---- +* Update history structure +*---- +History := HST: History Burnup :: +GET TMod <<TMod>> +CELLID <<icha>> <<ibun>> +GET TComb <<TComb>> TCalo <<TCalo>> ; +\end{verbatim} + +where no \moc{idfuel} is given (see Table~\ref{tab2}), thus we have used the default value for \moc{idfuel}$=1$ to store in \dds{history} the +general information associated with fuel channel 1 and bundle 1. Here, the initial properties associated with fuel +type 1 will be generated from the initial isotope densities in the \dds{burnup}. For the \moc{CELLID}, here \moc{icha}$=1$ and +\moc{ibun}$=1$, the burnup information, isotope densities, depletion parameters and initial fuel density are stored in a +\dir{celldir} directory. Moreover the power rate 31.9713 kW/kg and the depletion time 5.0 days are kept in the +\moc{PARAMBURNTAR} record. + +A \dds{history} data structure that contains the initial cell information can be updated using a \dds{map} data structure: + +\begin{verbatim} +*---- +* Map data structure for refueling: MAP1 +*---- +SEQ_ASCII MAP1 ; +*---- +* Refuel +*---- +Reseau := MAP1 ; +History := HST: History Reseau ; +\end{verbatim} + +Here, new burnup power ratings will be stored in the \dds{history} data structure reflecting the power distribution in +the DONJON calculation. The refueling information available in the \dds{map} structure will also be used to redistribute +the fuel in the \dds{history} structure at various cell location. + +Finally the last option is to recover this information in DRAGON to perform a new series of cell calculations: + +\begin{verbatim} +*---- +* Local parameters +* Initial burnup options for cell calculation +* *A is after refueling +* *B is before refueling +*---- +REAL TCombA TCaloA TCombB TCaloB ; +REAL PowerA DeltaTA PowerB DeltaTB ; +Burnup := HST: History :: +PUT TMod >>TMod<< +CELLID <<icha>> <<ibun>> +PUT BREFL BURN >>DeltaTB<< >>PowerB<< +TComb >>TCombB<< TCalo >>TCaloB<< +AREFL BURN >>DeltaTA<< >>PowerA<< +TComb >>TCombA<< TCalo >>TCaloA<< ; +IF DeltaTB 0.0 > THEN +*---- +* Burn before refueling +*---- +Burnup Edition := CellCalc Burnup :: +<<TCombB>> <<TCaloB>> <<TMod>> +<<PowerB>> <<DeltaTB>> ; +Edition := DELETE: Edition ; +ENDIF ; +*---- +* Burn after refueling +*---- +Burnup Edition := CellCalc Burnup :: +<<TCombA>> <<TCaloA>> <<TMod>> +<<PowerA>> <<DeltaTA>> ; +*---- +* Update History +*---- +History := HST: History Burnup :: +CELLID <<icha>> <<ibun>> ; +\end{verbatim} + +Note that here, there are two sets of local parameters that can be extracted from the history data structure, namely +the before (\moc{BREFL}) and the after (\moc{AREFL}) refueling information. In the case of fresh fuel (single fuel description +or a refueled bundle) extracting the before information is not required. However, if one uses the general procedure +described above to extract the before and after information, one will be able to identify the new fuel bundles as +well as the bundle that have not been moved in the core by the fact that $\Delta t = 0$ for burnup before refueling. For +bundles that have been displaced in the core during refueling then $\Delta t > 0$. + +\clearpage |
