\section{Création de la bibliothèque avec {\tt ifc}}\index{compilateur ifc}
\index{ALLOCATABLE}\index{POINTER}\label{sec:ifc}
 La Norme F95, telle qu'elle a été définie en 1996, est implémentée de façon
 stricte dans le compilateur\footnote{Diagnostique, commentaires et remèdes
 selon B.Pichon.} {\tt ifc}.
Depuis, on s'est aperçu d'une limitation "idiote" de cette Norme,
interdisant de mettre un tableau  {\tt ALLOCATABLE} alors que~:\par
\centerline{\tt REAL(kind=dp), INTENT(out), POINTER, DIMENSION(:)}
\noi était autorisé. Dans certains contextes, {\tt POINTER} et {\tt ALLOCATABLE}
sont synonymes. Quelques temps plus tard, un Technical Report
qui ``corrigeait''  et autorisait cette limitation est paru.
Les compilateurs de Compaq/Digital (stations Unix, PC Windows)
Lahey-Fujitsu (Linux, Windows) ont été corrigés; INTEL semble n'avoir
effectué la correction que dans la dernière version de {\tt ifc}.
    
\medskip
\noi{\embf Remède~:}
Remplacer {\tt ALLOCATABLE} par  {\tt POINTER}, chaque fois
 que le compilateur manifeste.
Par la suite, avec le compilateur {\tt ifc} à jour, tout rentrera
dans l'ordre. Actuellement la Norme Fortran 2003 différencie
{\tt ALLOCATABLE} et {\tt POINTER}.

Les corrections à apporter sont les suivantes~:
\begin{tt}\begin{enumerate}
\item {\rm Routine}  {\tt tabul\_nuc.f} {\rm transformer~:}	
\begin{verbatim}
REAL (kind=dp), INTENT(out), ALLOCATABLE, DIMENSION(:,:) :: taux_reac
REAL (kind=dp), INTENT(out), ALLOCATABLE, DIMENSION(:) ::ar,q0,temp,ttemp
INTEGER, INTENT(out) :: i3al, knot_temp, m_temp, n_temp
CHARACTER (len=20), INTENT(out), ALLOCATABLE, DIMENSION(:) :: nom_reac
\end{verbatim}

{\rm en~:}
\begin{verbatim}
REAL (kind=dp), POINTER, DIMENSION(:,:) :: taux_reac
REAL (kind=dp), POINTER, DIMENSION(:):: ar, q0, temp, ttemp
INTEGER, INTENT(out) :: i3al, knot_temp, m_temp, n_temp
CHARACTER (len=20), POINTER, DIMENSION(:) :: nom_reac
\end{verbatim}

\item {\rm Routine}  {\tt tabul\_nuc}, {\rm transformer~:}
\begin{verbatim}
REAL (kind=dp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: decrx,dzetax,taux_reac
REAL (kind=dp), ALLOCATABLE, SAVE, DIMENSION(:) :: ar, datx, dbidx,
1 dc1x, decro, decrt, dfx, df12x, dkx, dnex, dr, dzstarx, ecran,
2 lambda, mz1z2, q0, temp, ttemp, tx, z1z2		
REAL (kind=dp), SAVE, DIMENSION(2) :: zeta, dzetat, dzetaro	
REAL (kind=dp), SAVE :: cte1, cte2, cte3, cte4, cte5, cte6, cte7,
1 cte8, cte9, cte10
REAL (kind=dp) :: zstar, ne, c1, f12, at, k, bid, bid1, df,
1 e0, eps, beta, dnero, dc1ro, df12t, df12ro, datt, datro, dkt,
2 dkro, dbidt, dbidro, dft, dfro	
INTEGER, SAVE :: i3al, knot_temp, l=1, m_temp, n_temp	
INTEGER :: i, j	
CHARACTER (len=20), ALLOCATABLE, DIMENSION(:) :: nom_reac
\end{verbatim}

{\rm en~:}
\begin{verbatim}
REAL (kind=dp), POINTER, SAVE, DIMENSION(:,:) :: decrx,dzetax,taux_reac
REAL (kind=dp), POINTER, SAVE, DIMENSION(:) :: ar, datx, dbidx,
1 dc1x, decro, decrt, dfx, df12x, dkx, dnex, dr, dzstarx, ecran,
2 lambda, mz1z2, q0, temp, ttemp, tx, z1z2		
REAL (kind=dp), SAVE, DIMENSION(2) :: zeta, dzetat, dzetaro	
REAL (kind=dp), SAVE :: cte1, cte2, cte3, cte4, cte5, cte6, cte7,
1 cte8, cte9, cte10
REAL (kind=dp) :: zstar, ne, c1, f12, at, k, bid, bid1, df,
1 e0, eps, beta, dnero, dc1ro, df12t, df12ro, datt, datro, dkt,
2 dkro, dbidt, dbidro, dft, dfro	
INTEGER, SAVE :: i3al, knot_temp, l=1, m_temp, n_temp	
INTEGER :: i, j	
CHARACTER (len=20), POINTER, DIMENSION(:) :: nom_reac
\end{verbatim}

\item {\rm Routine},  {\tt mod\_donnees} {\rm transformer~:}
\begin{verbatim}
CHARACTER (len=4), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:) :: nom_elem
\end{verbatim}
{\rm en~:}
\begin{verbatim}
CHARACTER (len=4), SAVE, PUBLIC, POINTER, DIMENSION(:) :: nom_elem
\end{verbatim}	
\end{enumerate}\end{tt}

\section{Installation de PGPLOT}\label{sec:pgplot}
\index{ifc}\index{compilateur INTEL}\index{compilateur ifc}
\index{PGPLOT}
\subsection{Installation intégrale avec {\tt ifc}} \label{sec:pgifc}
Thierry Corbard, Observatoire de la Côte d'Azur, a construit le fichier de
con\-fi\-gu\-ra\-tion {\tt ifc\_gcc.conf} de PGPLOT avec LINUX pour le
compilateur F90 {\tt ifc} de INTEL.
Pour créer la source de PGPLOT en utilisant ce compilateur~:
\begin{enumerate}
\item Se placer dans le sous-directory {\tt /usr/local/src/pgplot/sys\_linux}
 de la source de PGPLOT.
\begin{enumerate}
\item Y inclure le fichier de configuration~: {\tt ifc\_gcc.conf},
que l'on trouvera dans le sous-directory {\tt SCRIPTS}.
\item Y créer le sous-directory {\tt ifc\_src}~: {\tt mkdir ifc\_src.}
\item Y inclure le fichier
{\tt ifc\_src/grgenv.f}, que l'on trouvera dans le sous-directory {\tt SCRIPTS}.
\end{enumerate}
\item Exécuter~:\\
{\tt /usr/local/src/pgplot/makemake /usr/local/src/pgplot~linux~ifc\_gcc}
\end{enumerate}

\subsection{Installations sans larme}\index{PGPLOT}\index{cshrc}\index{RPM}
\index{Mandrake}\index{SuSE}\index{RedHat}
Sous LINUX avec les distribution dérivées de RedHat, Mandrake et SuSE en
particulier, il est possible d'installer PGPLOT sans trop de difficultés
en procédant de la façon suivante~:
\begin{enumerate}
 \item Avec un moteur de recherche, Google par exemple, rechercher
 {\tt pgplot rpm}.
 \item Parmi les sites détectés, choisir celui qui propose de télécharger une
 version récente correspondant au processeur et au système
 d'exploitation utilisés. Par exemple,
 {\tt pgplot-5.2.2-1.i686.rpm} est satisfaisant pour un Pentium4 sous
 Mandrake\footnote{On trouvera ce logiciel dans le sous-directory {\tt SCRIPTS}
 de la distribution.}.
 \item Télécharger ce logiciel. A l'issue du téléchargement, se placer dans le
 directory où s'est effectué le téléchargement. Cliquer sur le nom du logiciel
 téléchargé, acquérir les droits du super-utilisateur, les logiciels
 s'installent. 
 \item Le système place les deux bibliothèques par\-ta\-gea\-bles
 {\tt libpgplot.so.5.2.0} et {\tt libpgplot.so.5} dans le directory
 {\tt /usr/lib} et y crée le sous-directory {\tt pgplot}. Il contient les 3
 fichiers~:
 \begin{tt}
 grexec.f,\quad rgb.txt,\quad grfont.dat.
 \end{tt}
 \item Créer dans le sous-directory {\tt pgplot} deux liens vers les
 bibliothèques partageables~:
 \begin{tt}
 ln -s /usr/lib/libpgplot.so.5 libpgplot.so,
 
 \noi ln -s /usr/lib/libpgplot.so.5.0 libpgplot.so.0
 \end{tt}
 \item Dans le fichier {\tt .cshrc} ajouter~: 
 \begin{enumerate}
  \item Le chemin de {\tt PGPLOT} 
  {\tt LD\_LIBRARY\_PATH **** :/usr/lib/pgplot}.
  \item La variable d'environnement {\tt setenv PGPLOT\_DIR /usr/lib/pgplot}.
 \end{enumerate}
\end{enumerate} 

 \medskip
 \index{Debian}\index{Gnome}\index{Kubuntu}
 Avec les distributions DEBIAN, GNOME ou  KUNBUTU, le logiciel s'intalle
 automatiquement avec {\tt apt-get -install pgplot5}\footnote{Vérifier que {\tt
 PGPLOT5} est bien dans la liste des SOURCEs de {\tt apt-get}
  (voir man {\tt apt-get}).}.
 Toutefois, certains
 logiciels, de traitement d'image par exemple, peuvent ne pas avoir été
 installés. Pour ce faire, la difficulté est d'en connaître les
identificateurs, ceux-ci  étant acquis, leur installation est immédiate avec 
 {\tt apt-get}. La localisation de la bibliothèque {\tt libpgplot} s'obtient
 assez facilement, avec un {\tt find} par exemple.  

\subsection{\cesam2k sans {\tt PGPLOT}}\index{PGPLOT}\index{pgplot\_factice}
\label{sec:nopgplot}
Il est possible d'utiliser \cesam2k sans {\tt PGPLOT}. Pour ce faire, avant la
formation du module exécutable décommenter la dernière ligne du module {\tt
MOD\_CESAM}. Le fichier {\tt pgplot\_factice.f} contient des émulations des
routines de {\tt PGPLOT}. Evidemment, coder {\tt NOM\_DES='no\_des'} et 
{\tt NOM\_DES\_ROT='no\_des'} dans les fichiers de données;
il ne faut pas non plus chercher à linker avec la bibliothèque de {\tt PGPLOT}; 
il convient aussi de ne pas indiquer de chemin à cette bibliothèque dans le
fichier {\tt cshrc}, ou ses équivalents.


