\section{\cesam2k}
\index{cesam2k.out}\index{mon\_modele.don}\index{TESTS}
\index{données}\index{FORTRAN95}\index{EXPLOIT}\index{NOTICE}
\index{SCRIPTS}\index{SOURCE}\index{SUN\_STAR\_DATA}
Le principe de
l'exploitation de \cesam2k est différent de celui utilisé dans les
versions précédentes de {\sc cesam}. L'exécutable, {\tt cesam2k.out},
est créé une fois pour
toutes. C'est dans le fichier de données, {\tt mon\_modele.don}, que la
physique à utiliser est indiquée conjointement aux principaux paramètres
définissant le modèle à calculer.
Il n'y a donc plus à créer d'exécutable adapté à chaque
utilisation, comme c'était le cas avec les versions précédentes de
{\sc cesam}. Il est toutefois possible de mo\-di\-fier la plupart des options
retenues dans la source, grâce à des fichiers de ``réglage'' décrits au
\paragr{sec:perso}, qui permettent d'adapter
{\sc cesam} aux moyens de calcul dont on dispose et, dans une large mesure,
aux particularités des modèles à calculer.

\medskip
\noi \cesam2k est programmé en {\tt FORTRAN95}, ce qui permet un
dimensionnement dynamique des tableaux adapté à chaque cas particulier.
Les compilateurs suivants ont été utilisés avec succès~:
\index{compilateurs}\index{LINUX}\index{UNIX}\index{WINDOWS}
\begin{itemize}
\item sous {\sc linux}~: {\tt ifc} de INTEL, Lahey-Fujitsu {\tt lf95},
\item sous {\sc unix}~: compilateur UNIX des machines ALPHA
\item sous {\sc windows}~: Compact Visual Fortran
\end{itemize}

\index{numéro de version}\index{journal}\label{sec:journal}
La signification du numéro de version {\tt CESAM2k\_Vi.j.k} est la
suivante~:
\begin{description}
\item [i] augmente d'une unité à chaque modification du contenu des fichiers
binaires de reprise *.pms, *.rep, *.dat, \etc les indices suivants {\bf j} et
{\bf k} étant remis à 0.
\item [j] augmente d'une unité à chaque modification du contenu d'un des
fichier ASCII de
données *.don ou de personnalisation, l'indice suivant {\bf k} est remis à 0.
\item [k] augmente d'une unité à chaque modification notable.
\end{description}
Dans le sous-directory {\tt SOURCE}, le fichier "{\tt journal}" contient une
description succincte de la chronologie des aménagements effectués. 
  
\medskip
%\medskip
%\PB{Avec le compilateur {\tt lf95}, il suffit d'indiquer le nom de ce
%compilateur dans le fichier {\tt makemake}.}

\PB{Le compilateur {\tt ifc} de INTEL\footnote{Contrairement aux idées reçues,
ce compilateur n'est pas gratuit, cf. son contrat de licence.} n'a intégré les
recommandations 1998 de la norme, qu'après mars 2004. Des difficultés de
compilation peuvent apparaître avec les versions antérieures, \cf\
\paragr{sec:ifc}.}

%Sous LINUX, il est possible de se procurer la source de PGPLOT compilée à
%l'adresse WEB:  
%ce qui évite bien des tracas.

\medskip\index{PGPLOT}
\PB{\cesam2k utilise le logiciel de dessin PGPLOT dont le fichier de
configuration n'est pas prévu pour le compilateur {\tt ifc}.
Thierry Corbard, Observatoire de la Côte d'Azur, a construit
les procédures nécessaires que l'on trouvera dans le sous-directory
{\tt SCRIPTS}.}

\section{Contenu de la distribution}\label{sec:distri}
Le package {\tt CESAM2k}\footnote{2k pour ``2000''.} contient les
sous-directory~:
\begin{itemize}
 \item {\tt EXPLOIT}~: ensemble de programmes et d'exemples de fichiers
  pour l'exploitation.
 \item {\tt NOTICE}~: sources {\LaTeX} et fichiers postcript de la notice
 d'utilisation et de
 l'aide-mémoire.\index{NOTICE}\index{aide mémoire}
 \item {\tt SCRIPTS}~: procédures UNIX/LINUX pour
 l'installation et l'exploitation avec le shell {\tt csh}.
 \item {\tt SOURCE}~: ensemble des routines, modules et programmes
 de la source.
 \item {\tt SUN\_STAR\_DATA}~: données physiques, tables d'EOS par exemple.
 \item {\tt TESTS}~: programmes de test\footnote{Certains de ces programmes
 sont à adapter à la présente version de \cesam2k.}.
\end{itemize}

\medskip
Dans le sous-directory {\tt SOURCE}, un fichier nommé {\tt journal} 
recense les divers aménagements effectués à partir du 01/05/05.
 
%\subsection{Avertissement}
%La notice générale décrivant les algorithmes de \cesam2k est indisponible
%car en cours d'élaboration. Des informations, hélas incomplètes,
%sur la physique et les méthodes numériques utilisées peuvent être trouvées
%dans la notice de {\sc cesam4}.

\section{Installation}\label{sec:impl}
\index{exe2k}\index{cshrc}\index{PGPLOT}\index{UNIX}\index{LINUX}
\index{C-shell}\index{genere\_cesam2k}
\index{des\_r.f}\index{des.f}\index{mod\_cesam.f}
On décrit l'installation sous UNIX/LINUX en utilisant le C-shell.

\medskip\index{POINTER}\index{ALLOCATABLE}\index{compilation}
\PB{Avec un compilateur dont la version n'est pas à jour de la
   norme F95, (comme certaines versions du compilateur d'INTEL)
   il y aura refus d'effectuer une allocation dans une routine
    autre que celle
  où est déclarée l'allocation. Il y a lieu de remplacer dans les routines
  concernées, les instructions
   {\tt ALLOCATABLE} par {\tt POINTER} pour les tableaux incriminés
   \cf\paragr{sec:ifc}.}

\begin{itemize}
 \item Détarer la distribution~:
 
  \centerline{\tt tar -xzvf CESAM2k.tar.gz}
  Le sous-directory {\tt CESAM2k} est créé. Il contient 6
  sous-directory tarés et compressés~:
 \begin{tt}\begin{verbatim}
 SOURCE.tar.gz
 EXPLOIT.tar.gz
 SUN_STAR_DATA.tar.gz
 SCRIPTS.tar.gz
 TESTS.tar.gz
 NOTICE.tar.gz
 \end{verbatim}\end{tt}
 Il convient de les détarer au fur et à mesure des besoins.
 Cette disposition permet de placer ces sous-directory
 aux endroits les mieux adaptés et ainsi de faciliter les mises à jour qui,
 la plupart du temps, n'affectent que le seul sous-directory {\tt SOURCE}. 
 
 \item Dans le sous-directory {\tt SCRIPT}, adapter au compilateur F95
  utilisé, les paramètres des
  procédures de compilation {\tt compile2k} et d'exécution {\tt exe2k};
  y indiquer aussi les chemins de la source et des bibliothèques.  
  Rendre les procédures exécutables~: {\tt chmod 700 *}.
 \item Pour une utilisation avec le shell {\tt csh} ou {\tt tcsh}, dans
 le fichier {\tt .cshrc} ajouter les chemins de la bibliothèque
  et des exécutables, par exemple~:\par
  {\tt set mypath=(.... $\sim$/CESAM2k/SOURCE $\sim$/CESAM2k/EXPLOIT
  .....)}\par
  {\tt set path=(. $\sim$ $\sim$/SCRIPTS \$path \$mypath) .....)}.
  
  Avec le shell {\tt bash}, dans le fichier {\tt .bashrc}, ces instructions
  deviennent~:
  
  \noi{\tt export
  
  \nopagebreak
\noi PATH="\$PATH:~/CESAM2k/SCRIPTS:~/CESAM2k/EXPLOIT:~/CESAM2k/SOURCE" }
 \index{bashrc}
 \item Si ce n'est déjà fait, installer le logiciel de
  dessin {\tt PGPLOT}\footnote{Avec son mode d'emploi, le logiciel
  {\tt PGPLOT} est téléchargeable via {\tt anonymous ftp} à l'adresse
  {\tt http://astro.caltech.edu/$\sim$tpj/pgplot/}.}, et indiquer le chemin
  de sa bibliothèque dans le fichier {\tt .cshrc}~:
  
  {\tt LD\_LIBRARY\_PATH **** :/usr/lib/pgplot}

  et définir la variable d'environnement\footnote{Une de ces
  instructions est peut être redondante. L'avis d'experts est accepté.}~:
  
  {\tt setenv PGPLOT\_DIR /usr/lib/pgplot}.
  
  On donne au \paragr{sec:pgifc}
  un supplément d'informations concernant l'installation de ce logiciel.
  \par 
  A défaut, de ce logiciel de dessin, dans le sous-directory {\tt SOURCE}~:
 \begin{itemize}
  \item Supprimer {\tt boite}, {\tt box}, {\tt des\_r},
   {\tt des\_m} de la liste des
  {\tt INCLUDE} du module {\tt mod\_numerique}. 
  \item Dans la subroutine {\tt des}, ne conserver que  
   {\tt CASE ('no\_des')} et, éventuellement, {\tt CASE DEFAULT}.
  \item Dans la subroutine {\tt sortie}, supprimer {\tt CALL pgend}.
 \end{itemize}

%\medskip
\PB{La liste de ces corrections n'est peut être pas complète.}

\end{itemize}

\section{Adaptation de la source}\label{sec:adsce}\index{des\_m.f}
\index{des\_r.f}
Avant de créer le module exécutable, il convient d'adapter certains
paramètres libres de la source à l'installation dont on dispose.
\begin{itemize}
 \item Dans la routine {\tt des\_m}, ligne 105, adapter le nom du "device"~:
 {\tt device='/xw'}, éventuellement coder  {\tt device='?'} de façon à
 obtenir la liste des devices disponibles.
 \item Faire de même dans la routine {\tt des\_r}, ligne 89.
\end{itemize}
Dans les routines {\tt des\_m} et {\tt des\_r} il conviendra, par la suite,
d'adapter la hauteur et la largeur des cadres, de façon à optimiser leur
centrage dans la fenêtre dont on dispose, ou encore de personnaliser le
dessin \cf\paragr{sec:device}.

\section{Création du module exécutable}\label{sec:mexec}
\index{list\_cesam}\index{object module}\index{libcesam2k.a}
Se placer dans le sous-directory {\tt SOURCE}, y lancer la
procédure\footnote{Dans la suite le symbole $<==$ indique une instruction à
saisir.} {\tt genere\_cesam2k}.\\
Après la compilation, on obtient la liste des "{\tt object module}"
de la bibliothèque {\tt libcesam2k.a} et le menu d'entrée de {\sc cesam}~:

\begin{tt}\begin{verbatim}
 mod_kind.o
 mod_numerique.o
 mod_donnees.o
 mod_variables.o
 mod_etat.o
 mod_opa.o
 mod_conv.o
 mod_atm.o
 mod_nuc.o
 mod_bp_for_alecian.o
 mod_evol.o
 mod_static.o
 mod_cesam.o
 mod_exploit.o
 Encountered 0 errors, 0 warnings in file cesam2k-dbg.f.

CESAM speaks a bit of english if you include in
the working directory a file named langue with the statements :
&NL_LANGUE
langue='english'
/
cf. aide_mem2k, chapter Personnalisation

Pour arrêter : taper 0 puis RETURN
Pour poursuivre une évolution : taper 1 puis RETURN
Pour initialiser un modèle de ZAMS : taper 2 puis RETURN
Pour initialiser un modèle de PMS : taper 3 puis RETURN
 ARRET
\end{verbatim}\end{tt}

\noi Suivant l'installation et les paramètres de compilation retenus,
la création de la bibliothèque et du module exécutable nécessitent de
l'ordre de 3 à 10 minutes.

\noi De façon similaire, on peut créer un exécutable
de debug avec la procédure {\tt genere\_cesam2k-dbg} du sous-directory
{\tt SCRIPTS}. 

\subsection{Utilisation d'un MAKEFILE}\label{sec:make}
Il est évidemment possible d'exploiter \cesam2k via un {\tt MAKEFILE}.
Th. Corbard a construit celui donné en exemple au \paragr{sec:makefile}.
Pour l'utiliser, après avoir adapté les options de compilation, déplacer le
fichier Makefile du sous-directoruy {\tt EXPLOIT} le sous-directory
{\tt SOURCE}. Adapter les arguments au compilateur utilisé et les divers
chemins. Enfin, saisir la commande
{\tt make}, automatiquement le module exécutable {\tt cesam2k.out} sera créé. 

\subsection{Fonctions des modules} 
\index{mod\_atm.f}\index{mod\_kind.f}\index{kind}
\index{mod\_numerique.f}\index{mod\_donnees.f}
\index{mod\_variables.f}\index{mod\_exploit.f}\index{mod\_cesam.f}
\index{mod\_static.f}\index{mod\_numerique.f}\index{mod\_evol.f}
\index{mod\_nuc.f}\index{mod\_conv.f}\index{mod\_opa.f}\index{mod\_etat.f}
Les modules de \cesam2k ont les fonctionalités suivantes~:
\begin{itemize}
 \item Module {\tt mod\_kind}~: regroupe les types des variables.
 \item Module {\tt mod\_numerique}~: regroupe les routines purement numériques.
 \item Module {\tt mod\_donnees}~: regroupe l'ensemble des quantités fixes au
 cours de l'évolution.
 \item Module {\tt mod\_variables}~: regroupe l'ensemble des quantités
 variables au cours de l'évolution.
 \item Module {\tt mod\_etat}~: regroupe les routines concernant l'équation
 d'état.
 \item Module {\tt mod\_opa}~: regroupe les routines concernant le calcul de
 l'opacité.
 \item Module {\tt mod\_conv}~: regroupe les routines concernant la convection.
 \item Module {\tt mod\_atm}~: regroupe les routines de restitution de
 l'atmosphère.
 \item Module {\tt mod\_nuc}~: regroupe les routines concernant les réactions
 thermonucléaires. 
 \item Module {\tt mod\_bp\_for\_alecian}~: regroupe les routines concernant le
 calcul des accélérations radiatives, suivant le formalisme de G.Alécian.
 \item Module {\tt mod\_evol}~: regroupe les routines concernant l'évolution
 temporelle de la composition chimique.
 \item Module {\tt mod\_static}~: regroupe les routines concernées par
 la résolution de l'équilibre quasi-statique.
 \item Module {\tt mod\_cesam}~: regroupe les routines concernant la gestion du
 calcul.
 \item Module {\tt mod\_exploit}~: regroupe des routines concernées par
 l'exploitation des résultats. 
\end{itemize}
On trouvera \paragr{fig:org} un organigramme général du code.
Chaque routine {\tt PRIVATE} et/ou {\tt PUBLIC} est
introduite sous la forme d'{\tt INCLUDE} dans son module d'appartenance,
ce dernier étant indiqué dans les commentaires du début de la routine.

\begin{figure}[ht]
\includegraphics[width=0.9\textwidth]{Orga-gene.eps}
\caption{Schéma de l'organigramme général de \cesam2k.
Le programme {\tt cesam2k}, compilé une fois pour toutes, fait appel à la
routine {\tt cesam} qui constitue en fait, le programme principal. Dans
{\tt cesam}, après des initialisations, on sépare le traitement
des 3 possibilités~: poursuite d'une évolution, initialisation sur la
ZAMS homogène, initialisation d'une PMS. Le calcul se poursuit par des
opérations de gestion de l'évolution, listing, création de fichiers de
sortie, dessin, etc... Est ensuite fait appel à {\tt resout}, où
 les équations de l'équilibre quasi-statique sont résolues en
 alternance avec celles de l'évolution du moment cinétique et
 de la composition chi\-mi\-que.
 Ces dernières sont résolues séparément dans {\tt evol}.
 Une fois la convergence obtenue, il y a retour vers les
 algorithmes de gestion de l'évolution de {\tt cesam} et, de là,
 poursuite de
 l'évolution ou retour à {\tt cesam} pour sortie. Les routines d'analyse
 numérique et de physique sont sollicitées à différents niveaux de calcul. 
}\label{fig:org}
\end{figure}
