\section{Ajout d'une chaîne de réactions thermonucléaires}
\label{sec:asnu}\index{réactions thermonucléaires}\index{ajout isotope}
Pour implanter une nouvelle chaîne de réactions thermonucléaires, il est souvent
nécessaire d'ajouter un ou plusieurs isotopes, et aussi une ou plusieurs
réactions thermonucléaires.
\begin{itemize}
 \item {\embf Pour ajouter un isotope}\footnote{{\cesam2k} prévoit la
 possibilité d'utiliser des éléments chimiques de l'hydrogène ($Z=1$)
 jusqu'au nickel ($Z=28$). Pour introduire des éléments de masse
 supérieure, les disposer dans la routine {\tt abon\_ini} en appliquant
 une procédure voisine de celle décrite pour l'ajout d'un isotope.}~:
 \begin{enumerate}
  \item Dans le module {\tt mod\_nuc} augmenter le
  {\tt PARAMETER niso\_tot} d'une unité, Exemple~: {\tt niso\_tot=28}.
  \item Dans la routine {\tt taux\_nuc}~:
  \begin{enumerate}
   \item Dans les déclarations, ajouter l'excès de masse de l'isotope
    et son symbole, Exemple~: {\tt Fe56=-60.6054d0}.
   \item Ajouter la masse de l'isotope, (il est
    conseillé d'ajouter la masse de l'isotope, dans la routine de constantes
    physiques {\tt ini\_ctes}, son symbole dans les déclarations du module
    {\tt mod\_donnees} et dans l'instruction de restriction {\tt ONLY}
    de la routine {\tt taux\_nuc}, Exemple~:
    {\tt nucleot(27)=afe56, afe56=55.847d0, afe56, af18...}).
   \item Ajouter la charge de l'isotope, Exemple~: {\tt zit(28)=11}.
   \item Ajouter le nom de l'isotope, Exemple~: {\tt 'B11 '}.
   (ces chaînes de 4 ca\-rac\-tères sont à cadrer à gauche sauf pour les
   symboles de 2 ca\-rac\-tères qui sont centrés.).
  \end{enumerate}
  \item Si besoin, dans la routine {\tt abon\_ini}~:
  \begin{enumerate}
   \item Ajouter un rapport isotopique pour ce nouvel isotope~:
   \begin{enumerate}
    \item Introduire sa valeur dans la liste disposée à la fin de la routine.
    \item Indiquer son nom dans les NAMELISTs {\tt nl\_rap\_iso} et
    {\tt nl\_modif\_mix} dans la partie déclarative de la routine.
   \end{enumerate}
  \end{enumerate}
  \item Si besoin, dans la routine {\tt saha},
   ajouter les potentiels d'ionisation pour ce nouvel élément
 \end{enumerate}
 \item {\embf Pour ajouter une réaction}~:
  \begin{enumerate}
   \item Dans la routine {\tt taux\_nuc}~:
   \begin{enumerate}
    \item Compléter la liste de commentaires en y indiquant le symbole de la
    réaction et son indice, Exemple~: {\tt réaction 46 : B11(p,g)C12}.
    \item Initialiser le nom de la réaction, le défaut de masse, et les charges
    des noyaux concernés, Exemple~:
    {\tt nom\_react(2)='H2(p,g)He3'} \\ {\tt nuc=H2+p-He3} ;
    {\tt qt(2)=nuc} ; {\tt izzt(2,1)=1} ; {\tt izzt(2,2)=1}.
    \item Entrer le taux de la réaction\footnote{C'est pour des raisons
    historiques que ces calculs sont
    effectués en $\ln$. Les raisons étaient d'éviter d'une part, les
    erreurs de troncature et d'autre part, les dépassements de
    capacité avec la limitation à $10^{38}$.}
    {\tt rt(i)} en $\ln$ et ne pas oublier d'y inclure les 1! ou 2! ou 3! du
    dénominateur, Exemple~: {\tt réaction 8 : C12(p,g)N13(e+ nu)C13
    z0=6, z1=1........} en recalculant, au besoin, les coefficients
    à partir des $S(0),\ S'(0),\ S"(0)$ \citep[][eq. 4-49]{l68}.
   \end{enumerate}
    \item Créer la routine de réactions thermonucléaires en s'inspirant d'une
    des routines existantes, {\tt ppcno12BeBFe.f} par exemple.
   \item Dans la routine {\tt tabul\_nuc}~:
   \begin{enumerate}
    \item Ajouter la nouvelle chaîne Exemple~:{\tt CASE('ppcno12')}

    \item Entrer les paramètres du calcul des taux,
    le nombre de réactions, les correspondances d'indices, les isotopes
    utilisés ..., Exemple~:
    {\tt nreac=30 ; ind(16)=31 ; WRITE(2,6) ; WRITE(*,6)....}
   \end{enumerate}
   \item Dans le module {\tt mod\_nuc}~:
   \begin{enumerate}
    \item Augmenter d'une unité le {\tt PARAMTER nreac\_tot}, Exemple~:
    {\tt nreac\_tot=46}
    \item Introduire par un {\tt INCLUDE} le nom de la routine de la chaîne
    de réactions, Exemple~: {\tt INCLUDE 'ppcno9.f'}
   \end{enumerate}
   \item Dans la routine générique {\tt nuc}~:
   \begin{enumerate}
    \item Rendre active et faire reconnaître la nouvelle routine.
   \end{enumerate}
   \item Tester les algorithmes ainsi modifiés en exploitant les programmes
  du sous-directory TEST {\tt test\_tabul\_reac.f} pour vérifier les taux des
  réactions et {\tt test\_jacobien\_reac\_nuc.f} pour s'assurer de l'exactitude
  des dérivées.
 \end{enumerate}
\end{itemize}

\section{Ajout d'une mixture initiale}\index{ajout de mixture}
\index{mixture}\label{sec:mix2}
Ainsi qu'il est décrit au \paragr{sec:mix}, il est possible de personnaliser
les abondances initiales à l'aide d'un fichier {\tt mixture}. Quand la
mixture initiale est d'intérêt général\footnote{Pour faire profiter la
communauté de votre travail, communiquer la routine
ainsi transformée aux responsables de la mise à jour de \cesam2k.}
il est préférable et très simple, d'en ajouter
la table des abondances dans la routine {\tt abon\_ini} de la source, en lui
donnant un nom d'au plus 20 ca\-rac\-tères.
Pour refaire ensuite le module
exécutable, il suffit d'appliquer le script {\tt rempl2k\_mod} au module
{\tt mod\_nuc}~: {\tt rempl2k\_mod mod\_nuc.}
