Ces routines sont des routines PUBLIC ou PRIVATE du module {\tt mod\_numerique},
\cfparagr{sec:modnum} ou encore {\tt mod\_exploit}, \cfparagr{sec:amexp}.
Elles relèvent de l'analyse numérique et de l'algorithmique. Certaines routines
sont originales, d'autres ont été construites en s'inspirant
des descriptions données dans des ouvrages d'analyse numérique élémentaire.
On n'en donne qu'une description sommaire.
Ces routines sont regroupées dans le sous-directory {\tt SOURCE}.

\section{Routines numériques et assimilées}\label{sec:sspn}
\subsection{Routine {\tt arb\_rom}}\index{arb\_rom.f}
Cette fonction transforme
l'entier $i\in[0,30]$ en notation arabe en
notation romaine, Exemple: $21 \Longrightarrow XXI$.
La notation romaine comporte au plus 10 caractères,
au delà, la sortie est CCC. Cette fonction est utilisée pour noter les
niveaux d'ionisation.

\subsection{Routine {\tt boite}}\index{boite.f}
Cette routine permet de dessiner
une boîte d'erreur dont on donne les coordonnées du
centre et la longueur des cotés.

\subsection{Routine {\tt box}}\index{box.f}
Cette routine permet de 
dessiner une boîte de dimensions $\pm \Delta x \times \Delta y$ autour du
point de coordonnées $(x,y)$. 

\subsection{Routine {\tt delete\_doubles}}\index{delete\_doubles.f}
Cette routine permet de supprimer les éléments succéssifs identiques
dans un tableau ALLOCATABLE ordonné par ordre croissant; si besoin
la dimension du tableau est réajustée.

\subsection{Routine {\tt difdiv}}\index{difdiv.f}
Calcul des différences divisées pour interpolation par la formule de Newton
\cf \citet{sb79}.

\subsection{Routine {\tt fermi\_dirac}}\index{fermi\_dirac.f}
Approximations analytiques des intégrales de Fermi-Dirac, reprises du package
MHD, \cfparagr{sec:mhd}.

\subsection{Routine {\tt gauss\_band}}\index{gauss\_band.f}
Routine de résolution d'un système linéaire bande, dont la
largeur de la bande est cons\-tan\-te et comportant plusieurs seconds membres.
 L'algorithme est celui de l'élimination de Gauss avec
équilibrage et pivot partiel. L'espace mémoire utilisé correspond à la
partie non identiquement nulle du système.

\subsection{Routine {\tt horner}}\index{horner.f}
La subroutine {\tt horner} permet de calculer, pour $x=\alpha$,
les dérivées de tous ordres d'un polynôme ainsi que le quotient de ce
polynôme par $x-\alpha$ (algorithme de H\"orner).

\subsection{Routine {\tt intgauss}}\index{intgauss.f}
Initialisation des poids et des abscisses pour
l'intégration de Gauss de divers ordres.

\subsection{Routine {\tt matinv}}\index{matinv.f}
Programme d'inversion de matrice. Utilise l'élimination de
Gauss avec pivot total de {\tt gauss\_band}.

\subsection{Routine {\tt max\_local}}\index{max\_local.f}
Recherche des maxima de plusieurs tables dans un intervalle d'abscisses.
Cette routine est adaptée au calcul des échelles pour des tracés.

\subsection{Routine {\tt min\_max}}\index{min\_max.f}
Recherche du maximum et du minimum d'une table. Cette routine est adaptée
au calcul des échelles pour des tracés.

\subsection{Routine {\tt min\_max\_cond}}\index{min\_max\_cond.f}
Recherche du maximum et du minimum d'une table sous condition.
Cette routine est adaptée
au calcul des échelles pour des tracés.

\subsection{Routine {\tt neville}}\index{neville.f}
Algorithme de Neville pour interpolation polynômiale,
\cf \citet{sb79}.

\subsection{Routine {\tt newton}}\index{newton.f}
 Interpolation polynômiale avec dérivées, par la formule de Newton, 
\cf \citet{cd87}.

\subsection{Routine {\tt pause}}\index{pause.f}
Pause avec commentaire et poursuite/arrêt.

\subsection{Routine {\tt pgplot\_factice}}\index{pgplot\_factice.f}
Ensemble des intitulés des routines du logiciel {\tt PGPLOT} utilisées dans
\cesam2k. Ces routines permettent d'exploiter le code sans que le logiciel de
dessin soit implémenté, \cf \paragr{sec:nopgplot}. Cet ensemble est disposé à
l'extérieur du {\tt MODULE mod\_cesam}.

\subsection{Routine {\tt plot\_rota}}\index{plot\_rota.f}
Routine subordonnée de {\tt ecrit\_rota.f}, \cf \paragr{sec:ecritrota}
Routine de dessin "on line" des variables de la diffusion du moment cinétique.

\subsection{Routine {\tt polyder}}\index{polyder.f}
C'est une autre version de l'algorithme de Hörner dont les arguments
diffèrent de ceux de {\tt horner}. Pour des raisons historiques \cesam2k fait
appel aux deux versions.
%\end{document}

\subsection{Routine {\tt shell}}\index{shell.f}
Routine tri d'un tableau optimisé pour F95.

\subsection{Routine {\tt zoning}}\index{zoning.f}\label{sec:zoning}
Permet de déterminer la répartition des abscisses
de façon à ce que les incréments des ordonnées soient constants.

\section{Routines spécifiques aux B-splines}
\label{sec:ssps}
Ces routines sont originales dans leur grande majorité.
Les algorithmes utilisés sont, pour la plupart, inspirés de ceux
décrits par \citet{db78,sk81}.

\subsection{Routine {\tt bsp1ddn}}\index{bsp1ddn.f}
Généralise {\tt bsp1dn} en calculant toutes
les dérivées non identiquement nulles. Ne doit être utilisée que
si des dérivées d'ordre supérieur à l'unité sont requises car
elle demande plus de ressources que {\tt bsp1dn}.

\subsection{Routine {\tt bsp1dn}}\index{bsp1dn.f}\label{sec:bsp1dn}
Interpolation au même point de {\tt n} fonctions développées sur
une base de B-splines; calcul du développement si nécessaire.

\subsection{Routine {\tt bsp\_dis}}\index{bsp\_dis.f}
Routine de calcul des coefficients des B-splines
pour {\tt n} fonctions avec discontinuités pour interpolations ou lissage par
Bézier.

\subsection{Routine {\tt bsp\_gal}}\index{bsp\_gal.f}\label{sec:bspgal}
Routine de calcul des coefficients des B-splines
pour {\tt n} fonctions avec discontinuités pour interpolations; utilise le
formalisme intégral de Galerkin.
  
\subsection{Routine {\tt bval0}}\index{bval0.f}
Routine qui calcule la valeur de toutes les B-splines non
identiquement nulles en un point fixé, \cf \paragr{sec:bspl}.

\subsection{Routine {\tt bval1}}\index{bval1.f}
Routine qui calcule la valeur de toutes les B-splines non
identiquement nulles et leurs dérivées premières en un point fixé.
Demande plus de ressources que {\tt bval0}. 

\subsection{Routine {\tt bvald}}\index{bvald.f}\label{sec:bvald}
Routine qui calcule la valeur de toutes les B-splines non
identiquement nulles ainsi que toutes leurs dérivées en un point fixé.
Demande plus de ressources que {\tt bval1}. 

\subsection{Routine {\tt coll}}\label{sec:rcoll}\index{coll.f}
Routine qui génère les points de collocation de la
base de \citet{db78} pour l'intégration des équations
différentielles.

\subsection{Fonction {\tt colpnt}}\label{sec:colpnt}\index{colpnt.f}
Fonction calculant l'abscisse du i-ième point de collocation
dans l'intervalle $]x(l),x(l+1)[$
pour la résolution d'une équation différentielle d'ordre $r$.
{\tt colpnt} est appelée par {\tt coll}.

\subsection{Routine {\tt left\_right}}\index{left\_right.f}
Calcul des valeurs des $n$ fonctions $f$ et de leurs dérivées premières de part
en un point quelconque d'une représentation par B-Spline. De part et d'autre
d'un point du vecteur nodal ces valeurs peuvent différer, par exemple s'il y a
une discontinuité.

\subsection{Routine {\tt linf}}\index{linf.f}
Localisation d'un point dans une table d'abscisses en ordre strictement
croissant, adapté aux B-splines.

\subsection{Routine {\tt newspl}}\index{newspl.f}
Effectue un changement de base de B-splines pour {\tt n}
polynômes par morceaux.

\subsection{Routine {\tt newspl\_gal}}\index{newspl\_gal.f}
Effectue un changement de base de B-splines pour {\tt n}
polynômes par morceaux; utilise le formalisme intégral de Galerkin.

\subsection{Routine {\tt noedif}}\index{noedif.f}
Routine d'initialisation du réseau de points de table de la base de
 \citet{db78}, pour la résolution des équations différentielles par
collocation\index{noedif}.

\subsection{Routine {\tt noein}}\index{noein.f}
Détermine la séquence de n\oe uds de raccord pour une interpolation "optimale"
sui\-vant \citet{db78}.

\subsection{Routine {\tt noeu\_dis}}\index{noeu\_dis.f}
Détermine la séquence de n\oe uds de raccord
pour une interpolation "optimale" en tenant compte de discontinuités;
identique a {\tt noein} s'il n'y a pas de discontinuité.

\subsection{Routine {\tt noeud}}\index{noeud.f}
Détermine la séquence de n\oe uds de raccord pour un vecteur des multiplicités
 donné.

\subsection{Routine {\tt schu58\_n}}\index{schu58\_n.f}
Calcul des valeurs en un point de {\tt n} polynômes par morceaux à partir
 de leurs
développements sur une base de B-splines et des valeurs des B-splines non
identiquement nulles en ce point,  \cf\ \citet{sk81}.

\subsection{Routine {\tt sum\_n}}\index{sum\_n.f}
Calcule les intégrales de {\tt n} splines entre des bornes données.
Les coefficients doivent avoir été précédemment calculés par
{\tt bsp1dn} par exemple. Au premier appel, ces coefficients seront
adaptés au calcul de l'intégrale, donc modifiés.
Ils ne seront pas recalculés lors des appels ultérieurs.
S'inspire de \citet[][alg. 5.19]{sk81}.
