\section{Bugs connus}\label{sec:bug}\index{bugs}\index{difficultés}
\begin{enumerate}
 \item {\embf Erreurs à la compilation.}
  \begin{enumerate}
 \item Lors de développements, une cause fréquente de difficulté est due aux
 erreurs de calcul des dérivées, par
 rapport aux variables principales, des coefficients des équations de la structure
 interne. Pour en faciliter la détection, dans les routines {\tt static\_m13} et
 {\tt static\_m23}, la comparaison entre dérivées analytiques et dérivées numériques
 est possible sur des intervalles de points de collocation à définir en codant
 {\tt deriv=.TRUE.}.
   \item Dans des routines de provenance
    externe \eg{\tt etat\_ceff, etat\_eff, ferdir, ..}
    les variables ne sont pas déclarées, ou encore sont déclarées
    de façon implicite.
    Il y a risque d'erreur ou de ``warning'' lors de la compilation.
    {\embf Remède} : y supprimer l'option {\tt IMPLICIT NONE}.
   \item Avec le compilateur F95 de DIGITAL, on obtient un {\em "compilor internal
    error"} lors de la compilation du module {\tt mod\_etat}. La routine
    {\tt etat\_eff} est en cause. {\embf Remède} : utiliser un degré
    d'optimisation au plus égal à~2.
   \item Avec un compilateur dont la version n'est pas à jour de la
   norme F95, (comme certaines versions du compilateur {\tt ifc})
   il y a refus d'effectuer une allocation dans une routine autre que celle
  o\`u est déclarée l'allocation. {\embf Remède} : remplacer dans les routines
  concernées, les instructions
   {\tt ALLOCATABLE} par {\tt POINTER} pour les tableaux incriminés.
   Ou encore, utiliser un compilateur plus récent.
  \end{enumerate}

 \item {\embf Mauvaise convergence,} le processus itératif "tourne en rond":
 la convergence s'amorce, puis les corrections ne diminuent plus, ou
 oscillent autour d'une valeur fixe.
 {\embf Cause possible}: interpolation non dérivable de l'opacité
 \eg\ avec des opacités interpolées linéairement. {\embf Remède} : si
 l'augmentation de l'ordre
 d'interpolation des opacités est la solution théorique,
 elle est souvent im\-pra\-ti\-ca\-ble, et il y a risque
 d'oscillations à cause de pas d'interpolation trop grands, ou
 de raccords pas assez lisses entre tables; pratiquement,
 il faut se contenter d'une précision moins grande pour passer le point
 difficile. Ce type de difficulté se produit assez souvent dans l'atmosphère,
 à cause du raccord entre tables d'opacités d'origines différentes.
  Dans certaines conditions, \cesam2k {\sl "force la convergence"}.

\item {\embf Variations temporelles trop importantes} de la  \index{lnP varie trop}
pression, de la température, et de là, de l'entropie spécifique.
On obtient le message du typpe: {\tt "lnP varie trop..: diminution du pas temporel"}.
Le pas temporel est diminué sans que, pour autant, le problème disparaisse.
 {\embf Cause possible}: discontinuité
 temporelle de la composition chi\-mi\-que avec un c\oe ur convectif.
{\embf Remède} : parfois, bien que celà semble paradoxal et que
 l'on n'en comprenne pas la raison,
  il suffit de reprendre l'évolution avec un pas temporel
 plus grand pour que le point délicat soit passé;
 on peut aussi tenter d'augmenter les paramètres {\tt d\_press} et/ou {\tt d\_temp},
 des valeurs plus élevées en augmentant la robustesse dégradent
 la précision; on peut éliminer
 ces contrôles en donnant une valeur très grande ($10^{10}$ par exemple)
 aux paramètres; ils sont initialisés dans la routine
 {\tt cesam}, \cfparagr{sec:perso}. On contourne parfois la difficulté
 en utilisant l'approximation de Kippenhahn \cfparagr{sec:kipp}.
 Pour ajuster ces paramètres il est
 pratique d'utiliser la possibilité de personnaliser les réglages
 de \cesam2k \cfparagr{sec:perso}.

\item {\embf Divergence au premier pas temporel.} {\embf Cause possible}:
 pas temporel initial trop
 élevé. {\embf Remède}: diminuer le {\tt dt0} initialisé dans la routine
 {\tt cesam} suivant le type de précision requis.\index{divergence}
 Comme ci-avant il est pratique d'utiliser un fichier de réglage.

\item {\embf La localisation des limites \ZRZCs\ } sur un point de
 grille ne fonctionne pas. {\embf Cause possible}: les gradients
 $\gradrad$ et $\gradad$ ne se croisent pas \index{limites \ZRZCs}
 franchement, ou encore la limite se déplace notablement \eg,
 lors de la disparition d'un c\oe ur convectif. {\embf Remède}:
 quand les gradients sont voisins, la limite \ZRZC\ est mal définie,
 y vouloir forcer un point de grille
 exactement est illusoire et inutile, \cesam2k s'accomode de la situation
 en imposant la position obtenue après le nombre d'itérations fixé
 dans la routine {\tt cesam} suivant le type de précision
 requis. Pour ajuster ces paramètres, il est
 pratique d'utiliser la possibilité de personnaliser les réglages
  de \cesam2k, \cfparagr{sec:perso}.

\item {\embf Pour une évolution avec PMS,} en précision normale {\tt np}, une fois
le modèle initial obtenu, il n'y a pas convergence pour
le premier pas temporel.  {\embf Cause possible}: La cause de cette difficulté
mineure, n'a pas été trouvée.\index{np}
{\embf Remède}: \cesam2k divise le pas temporel par 2 et
la convergence est obtenue sans difficulté.

 \item {\embf Impossibilité de construire un modèle de \ZAMS.}
 \index{modèle de ZAMS}
 {\embf Cause possible}: utilisation d'une composition chimique trop
 éloignée de l'équilibre \eg\ celle utilisée pour les
 modèles de \PMS\ avec les abondances cosmiques de H2 et Li7.
  {\embf Remède} : adapter la composition chimique initiale. Pour ajuster
  ces paramètres, il est
 pratique d'utiliser la possibilité de personnaliser les abondances
  initiales de \cesam2k, \cfparagr{sec:perso}.

\item {\embf Pour des masses élevées $\sim 10 M_\odot$} et plus, après la
 disparition de l'hydrogène central, des ZC apparaissent, disparaissent
 nuisant à la convergence. {\embf Cause possible} : présence
 de zones semi-convectives.
  {\embf Remède}: difficulté chronique, \cesam2k ne prévoit pas de
 traitement de la semi-convection.\index{semi convection}

\item {\embf Convergence impossible} en utilisant le terme correctif de pression
turbulente
$\ddx{\ln\Pgaz}{\ln P}$ \ie\ avec une valeur strictement négative pour
l'argument {\tt cpturb} de la NAMELIST {\tt NL\_CONV}.\index{NL\_CONV}
{\embf Cause possible}: Ce problème résulte vraisemblablement d'une incohérence
de la MLT. {\embf Remède} : néant en l'état actuel.
{\bf L'utilisation de la pression turbulents est écatée dans la présente version de
\cesam2k }\index{pression turbulente}

\item {\embf Le programme {\tt lit\_osc}} du\index{lit\_osc.f}
 sous-directory {\tt EXPLOIT} de la source refuse de  lire un fichier
 d'extension {\tt .osc}.
 {\embf Cause possible}: Pour une raison inconnue, la première ligne du fichier
 {\tt mon\_modele.osc} est "repliée"
et le fichier est alors illisible. {\embf Remède}: "déplier" cette ligne
de façon à ce que la date se trouve à la fin de cette première ligne.

\item {\embf Le compilateur refuse de compiler} une routine\index{optimisation}
avec un niveau élevé d'optimisation. {\embf Cause possible}: Caprice du
compilateur.
 {\embf Remède}: utiliser un niveau de compilation moins élevé.

\item {\embf Très mauvaise convergence du calcul d'atmosphère I.}\index{atmosphère}
{\embf Cause possible}: passage d'un point anguleux de la table d'opacité, ou
modification de l'indice de grille du point d'indice
$n_\star$\footnote{où $T=T_{\rm eff}$, $R=R_*$, $M=M_*$.}.
{\embf Remède}: souvent, après quelques pas temporels, on s'écarte
des points anguleux, et ces
difficultés disparaissent. Utiliser des fonctions d'interpolation
dérivables pour les tables d'opacité.

\item {\embf Très mauvaise convergence du calcul d'atmosphère II.}
{\embf Cause possible}: condition limite sur la pression
qui ne peut être satisfaite au niveau de pécision élevé
requis par l'intégration de l'atmosphère.
{\embf Remède}: utiliser la condition limite sur la densité.

\item {\embf L'évolution s'arrête {\it "normalement"}} avant que
l'âge requis ne soit atteint. {\embf Cause possible}: signe erroné
\respt{valeur trop forte, faible}\index{NL\_TEMPS}
du paramètre {\tt log\_teff} \respt{{\tt x\_stop, t\_stop}} de la
NAMELIST {\tt nl\_temps}\index{arrêt de l'évolution}
du fichier {\tt mon\_modele.don}. {\embf Remède}: modifier ces
paramètres suivant les indications du \paragr{sec:fdon} précédent.

\item {\embf Mauvaise convergence de l'algorithme d'intégration
temporelle pour \H2}, se produit vers la fin de la \PMS,
et parfois conjointement aux sorties de table d'\opa.
{\embf Cause possible}: oscillations au moment de la mise
à l'équilibre du deutérium.\index{convergence forcée}
{\embf Remède}: \cesam2k "force la convergence"
qui, souvent au niveau de quelques $10^{-5}$, n'est pas si mauvaise.

\item {\embf Oscillations} de la quantité\index{Brunt-Väissälä}
$A=\frac1{\Gamma_1} \dsdx{\ln P}{\ln R}-\dsdx{\ln\rho}{\ln R}$ d'un fichier
{\tt mon\_modele*.osc} \cfparagr{sec:fichosc}.
Ces oscillations ont plusieurs causes. %décrites, \cfparagr{sec:estbv}.
Beaucoup d'efforts aient été consacrés à cette difficulté.
{\embf Remède}:jusqu'à présent, le moins mauvais remède consiste à supprimer
``à la main'' les couches incriminées.

Si, comme pour le Soleil actuel, dans les zones mélangées la température reste inférieure
à $0.5$MK, température d'amorçage des réactions nucléaires, il n'y a pas de modification
de composition chimique dans les zones mélangées, il est inutile de placer une
discontinuité numérique aux limites ZR/ZC.
{\embf Remède}: s'il n'y a pas d'autre raison de modification de la composition chimique,
utiliser l'option {\tt no\_discon=.TRUE.}.

Ou encore, puisque la solution avec diffusion ne comporte pas de discontinuités,
introduire un peu de diffusion turbulente par l'intermédiaire
du fichier de données~:\label{sec:bugvais}
\begin{tt}\begin{verbatim}
 /
 &NL_DIFF
 DIFFUSION=.TRUE.,
 NOM_DIFFM='diffm_0',
 NOM_DIFFT='difft_nu',
 D_TURB=10.d0,
 RE_NU=1.d0,
 NOM_FRAD='no_frad'
 /
\end{verbatim}\end{tt}
 Le coût à payer sera un effort de calcul nettement plus
important qu'avec {\tt DIFFUSION=.FALSE.}. \Lfig{fig:vais} représente le
profil de la fréquence de \bv\ obtenu pour un modèle de $10M_\odot$ de
séquence principale ($X_c=0.35$), calculé avec la procédure qui vient d'être
décrite. Au cours de l'évolution le c\oe ur convectif a régressé de
$0.22R_\star$ à $0.14R_\star$.

\item {\embf Mauvaise convergence pour la restitution de l'atmosphère.} Ce problème se
produit parfois lors de la reprise d'un modèle. La difficulté est due au fait
que l'atmosphère qui a été reprise en binaire n'est pas suffisamment proche de
celle que \cesam2k désire calculer. {\embf Remède}~: supprimer le modèle d'atmosphère
en binaire {\tt mon\_modele\_B.atm}. Pour initialiser ou reprendre le calcul, \cesam2k
utilisera l'atmosphère standard qu'il contient.

\item {\embf Mauvaise convergence, pas temporel tendant vers 0,} et/ou oscillations
de la vitesse angulaire au voisinage des limites \ZRZCs. Les causes ne sont pas
identifiées. Une conséquence est la génération d'instabilités de composition
chimique, qui se transmettant à la densité, génèrent des
coefficients très bruités pour les équations de la diffusion
du moment cinétique. Une augmention du
coefficient de diffusion turbulente {\tt d\_turb}, \cfparagr{sec:fdon}, permet,
parfois, de faire disparaître d'anomalie.

\item {\embf Profil très bruité du taux de variation du poids moléculaire moyen}
%$\Lambda$, \cfparagr{sec:varcin},
en particilier au voisinage des limites \ZRZCs. {\embf Cause possible:} instabilité
vraisemblablement due au calcul de l'énergie gravitaionnelle avec un pas temporel très
petit. {\embf Remède}~: comme décrit ci-avant, l'introduction de diffusion turbulente
permet parfois de contourner la difficulté.
%Cette anomalie n'a, en général, pas de conséquence directe sur le profil de la
%vitesse angulaire.

\end{enumerate}


