Index: trunk/SophyaLib/NTools/datime.c
===================================================================
--- trunk/SophyaLib/NTools/datime.c	(revision 682)
+++ trunk/SophyaLib/NTools/datime.c	(revision 2808)
@@ -16,30 +16,22 @@
 
 /*       Fonctions de calcule de date et temps (Heure)       */
-/* 
-++ 
-  Module 	Dates (C)
-  Lib	LibsUtil
-  include	datime.h
-
-	Ce groupe de fonctions permettent de manipuler des dates et heures.
-	En particulier, il est possible de calculer l'ecart (en nombre de jours
-	ou de secondes separant deux dates, ou le temps sideral correspondant 
-	a une date et heure legale. Deux structures simples sont definies
-	afin de faciliter le passage des arguments entre differentes fonctions:
-	- *JMA* : Jour, Mois, Annee
- 	- *HMS* : Heure, Minutes, Secondes
-
---
-*/
-/*
-++
-  Links	Voir aussi:
- Temps Sideral, Universel (C)
---
-*/
-/*
-++
-Titre	Quelques Macros 
---
+/*! 
+  \ingroup NTools
+  \file datime.c
+  \brief Set of C functions and macros to manipulate date and time  + Sidereal time
+  and simple astronomical functions.
+
+  \warning  If possible, use class SOPHYA::TimeStamp in module BaseTools
+  for date/time computation.
+
+  Ce groupe de fonctions permettent de manipuler des dates et heures.
+  En particulier, il est possible de calculer l'ecart (en nombre de jours
+  ou de secondes separant deux dates, ou le temps sideral correspondant 
+  a une date et heure legale. Deux structures simples sont definies
+  afin de faciliter le passage des arguments entre differentes fonctions:
+  - JMA : Jour, Mois, Annee
+  - HMS : Heure, Minutes, Secondes
+
+  \sa SOPHYA::TimeStamp
 */
 
@@ -68,5 +60,9 @@
 --
 */
-
+/*!
+  \ingroup NTools
+   Decodage d'une chaine de caracteres "strg" sous forme de "hh:mm:ss 10:43:60.5"
+   en structure HMS "hms" avec gestion des signes (decodage correcte de -44:30:05.23)
+*/
 void StrtoHMS(char *s,HMS* h)
 /* On ne peut pas ecrire 1:-05:-45 pas gere et debile! (mn et sec >=0.)  cmv 12/8/97 */
@@ -101,5 +97,9 @@
 }
 
-
+/*!
+  \ingroup NTools
+  Ecrit le contenu de la structure HMS "hms" sous forme de "hh:mm:ss" dans la chaine
+  de caracteres "strg" avec gestion des signes
+*/
 void HMStoStr(HMS h,char *s)
 /* L'ecriture est forcee a h:mn:sec avec mn et sec >=0  cmv 12/8/97 */
@@ -117,4 +117,8 @@
 
 /* Nouvelle-Fonction */
+/*!
+  \ingroup NTools
+  \brief Retourne le nombre de jours dans le mois m, annee a
+*/
 int NbJourMois(int a, int m)
 /* Retourne le nombre de jours dans le mois m, annee a */
@@ -130,9 +134,11 @@
 }
 
+/*!
+  \ingroup NTools
+  Calcule le Nombre de jours ecoules depuis 0 Jan 1901. 
+  Si annee < 100  On considere annee = annee+1900  (1900-1999) 
+*/
 /* Nouvelle-Fonction */
 long JMAtoJ(JMA jma)
-/*           Calcule le Nb. de jours ecoules depuis 0 Jan 1901         */
-/*   Si annee < 100  On considere annee = annee+1900  (1900-1999)      */
-
 {
 long rc,nban;
@@ -162,7 +168,10 @@
 }
 
+/*!
+  \ingroup NTools
+  \brief retourne la date correspondant a \b j jours ecoules depuis le 0/1/1901
+*/
 /* Nouvelle-Fonction */
 JMA JtoJMA(long j)
-/* retourne la date correspondant a j jours ecoules depuis le 0/1/1901 */
 {
 long i;
@@ -215,9 +224,10 @@
 }
 
+/*!
+  \ingroup NTools
+  \brief Cette fonction calcule le numero de jour de la semaine (Lundi=1 .. Dimanche=7) 
+*/
 /* Nouvelle-Fonction */
 int NumJour(JMA jma)
-/*        Cette fonction calcule le numero de jour de la semaine    */
-/*        (Lundi=1 .. Dimanche=7)                                   */
-
 {
 int l;
@@ -289,9 +299,12 @@
 }
 
+/*!
+  \ingroup NTools
+  Pour "nj=dd*10+jj", calcule la date correspondant au jour
+  "jj" (1 .. 7 - Lundi .. Dimanche) du mois "mm" , annee "aa"
+  se trouvant apres (ou egal a) la date "dd/mm/aa" .
+  Si annee "aa" <= 99   ->  annee de 1901 - 1999
+*/
 JMA JApmmaatoJMA(int nj, int mm, int aa)
-/*    Pour "nj=dd*10+jj", calcule la date correspondant au jour
-      "jj" (1 .. 7 - Lundi .. Dimanche) du mois "mm" , annee "aa"
-      se trouvant apres (ou egal a) la date "dd/mm/aa" .
-      Si annee "aa" <= 99   ->  annee de 1901 - 1999       */
 {
 int i, dd, jj;
@@ -311,4 +324,9 @@
 }
 
+/*!
+  \ingroup NTools
+  Cette fonction calcule le nombre d'heures en decimales pour \b hms. 
+  Heures/Minutes/Secondes peuvent etre +/- avec toutes les combinaisons possibles
+*/
 /* Nouvelle-Fonction */
 double HMStoH(HMS hms)
@@ -321,5 +339,8 @@
 
 
-
+/*!
+  \ingroup NTools
+  \brief Conversion en secondes de la structure HMS  "hms"
+*/
 /* Nouvelle-Fonction */
 double HMStoSec(HMS hms)
@@ -330,4 +351,9 @@
 }
 
+/*!
+  \ingroup NTools
+  Calcule le nombre de secondes correspondant a "date,heure" 
+  a partir de l'origine 1er Janv 1990  0H00 ( Date entre 1930 - 2050 )
+*/
 /* Nouvelle-Fonction */
 long DatetoSec(char const* date, char const* heure)
@@ -348,4 +374,10 @@
 }
 
+/*!
+  \ingroup NTools
+  Calcule le nombre de secondes correspondant a "date,heure" 
+  a partir de l'origine 1er Janv 1990  0H00 ( Date entre 1930 - 2050 )
+  en tenant compte des decalages des heures legales.
+*/
 /* Nouvelle-Fonction */
 long DatetoSecOff(char const* date, char const* heure)
@@ -368,4 +400,8 @@
 }
 
+/*!
+  \ingroup NTools
+  \brief Conversion heures en decimales en structure HMS
+*/
 /* Nouvelle-Fonction */
 HMS HtoHMS(double h)
@@ -386,8 +422,12 @@
 }
 
+/*!
+  \ingroup NTools
+  Conversion degres decimaux en structure HMS (deg,min,sec)
+  Degres decimaux en D , M , Sec  Il y a un modulo 360.
+  la sortie est telle que -180 < deg <= 180.
+*/
 /* Nouvelle-Fonction */
 HMS DtoDMS(double h)
-/* Degres decimaux en D , M , Sec  Il y a un modulo 360  */
-/* la sortie est telle que -180 < deg <= 180. */
 {
 HMS hms;
@@ -408,4 +448,9 @@
 }
 
+/*!
+  \ingroup NTools
+  Conversion degres/heures decimaux en structure HMS (deg/heure,min,sec)
+  SANS modulo 360/24
+*/
 /* Nouvelle-Fonction */
 HMS DoubletoHMS(double h)
@@ -875,5 +920,8 @@
 }
 
-
+/*!
+  \ingroup NTools
+  \brief Cette fonction  donne le temps sideral moyen a greenwich a 0h UT 
+*/
 /* Nouvelle-Fonction  */
 HMS GMST_at_0h_UT (JMA date)
@@ -925,5 +973,20 @@
 --
 */
-
+/*!
+  \ingroup NTools
+  Cette fonction calcule le temps sideral GMT a partir du temps
+  universel et de la date GMT.
+  \verbatim
+  Temps sideral
+  Jour Sideral = 86400 Sec. Sid.  ( = 24 H Sid. )    
+  Annee Solaire = 365 J 5H 48' 46"  =~  365.2422 J                       
+  Annee Solaire = 365.2422 Jours Solaire Moyen = 366.2422 Jours Sideraux 
+  Jour Sol. Moyem = 24 H Sol. = 24 H Sid. * (366.2422 / 365.2422)        
+  Jour Solaire Moyen = 86636.555359 Sec. Sid. = 24 H 3' 56.555359"       
+  Heure Solaire Moyen = 3609.85647 Sec. Sid.                             
+  Sec. Sol. = 1.0027379 Sec. Sid.                                        
+  Le 1er Janvier 1989 0H TU Il etait 6H 42' 30" GMT_Sideral 
+  \endverbatim
+*/
 /* Nouvelle-Fonction  */
 HMS TUtoTSid(JMA date, HMS TU)
@@ -964,4 +1027,10 @@
 }
 
+/*!
+  \ingroup NTools
+  Cette fonction calcule les temps universels a partir du temps
+  sideral GMT et de la date GMT. Selon la valeur du TS, il peut y avoir
+  une ou deux possibilites pour le TU (return code).
+*/
 /* Nouvelle-Fonction  */
 int TSidtoTU(JMA date, HMS TS, HMS *TU1, HMS *TU2)
@@ -1027,17 +1096,16 @@
 }
 
-/*
-++
-void TSidSetupLaSilla()
-	Fonction d'initialisation de conversion  de temps sideral et legal 
-	pour la ESO-Silla "SetTSolMOff() , SetTLegOff()".
-|       Longitude = 70 deg 43.8 min ouest
-|       Latitude  = 29 deg 15.4 min Sud    
-|       T Sol. Moyen - TU = -4.715333 Heures
-|       TLegal-TU : -4 Heures de Mars a Octobre, -3 Heures sinon
-|       Changement le 1er dimanche >= 8/03  8/10 a midi (12:00:00)
---
-*/
-
+/*!
+  \ingroup NTools
+  Fonction d'initialisation de conversion  de temps sideral et legal 
+  pour la ESO-Silla "SetTSolMOff() , SetTLegOff()".
+  \verbatim
+  Longitude = 70 deg 43.8 min ouest
+  Latitude  = 29 deg 15.4 min Sud    
+  T Sol. Moyen - TU = -4.715333 Heures
+  TLegal-TU : -4 Heures de Mars a Octobre, -3 Heures sinon
+  Changement le 1er dimanche >= 8/03  8/10 a midi (12:00:00)
+  \endverbatim
+*/
 /* Fonction d'initialisation de calcul de temps sideral pour la Silla */
 void TSidSetupLaSilla()
@@ -1053,12 +1121,10 @@
 
 
-/*
-++
-double ToJulianDay(JMA dateTU, HMS hmsTU);
-	Calcul du jour Julien pour une date TU.
-	Uniquement valable a partir du 15/10/1582 00:00:00.
---
-*/
-
+/*!
+  \ingroup NTools
+  Calcul du jour Julien pour une date TU.
+  Uniquement valable a partir du 15/10/1582 00:00:00.
+  
+*/
 double ToJulianDay(JMA dateTU, HMS hmsTU)
 /* Cf Fundamental astronomie, Springer Verlag 2sd ed.  cmv 4/12/98 */
@@ -1074,12 +1140,9 @@
 }
 
-/*
-++
-int FromJulianDay(double JD,JMA* dateTU, HMS* hmsTU);
-	Calcul de la date date et l'heure TU a partir d'un jour Julien.
-	Retourne 0 si succes.
---
-*/
-
+/*!
+  \ingroup NTools
+  Calcul de la date date et l'heure TU a partir d'un jour Julien.
+  Retourne 0 si succes.
+*/
 int FromJulianDay(double JD,JMA* dateTU, HMS* hmsTU)
 /* Cf Fundamental astronomie, Springer Verlag 2sd ed.  cmv 4/12/98 */
@@ -1115,12 +1178,9 @@
 
 
-/*
-++
-double StrgtoDegDec(char *strg)
-	Cette fonction renvoie la valeur decimale en heures
-	d'un angle specifie sous forme de [-][+]dd:mm:ss.
---
-*/
-
+/*!
+  \ingroup NTools
+  Cette fonction renvoie la valeur decimale en heures
+  d'un angle specifie sous forme de [-][+]dd:mm:ss.
+*/
 double StrgtoDegDec(char *strg)
 /*         cmv 4/12/98 */
@@ -1143,10 +1203,8 @@
 }
 
-/*
-++
-char * DegDectoStrg(double deg, char *strg)
-	Cette fonction ecrit une valeur en degre decimal sous 
-	forme de [-]dd:mm:ss.
---
+/*!
+  \ingroup NTools
+  Cette fonction ecrit une valeur en degre decimal sous 
+  forme de [-]dd:mm:ss.
 */
 
@@ -1172,10 +1230,9 @@
 }
 
-/*
-++
-double EccEarth(JMA dateTU)
-	Valeur de l'eccentricite de l'orbite terrestre
-	a la date TU ``dateTU''.
---
+/*!
+  \ingroup NTools
+  Valeur de l'eccentricite de l'orbite terrestre
+  a la date TU ``dateTU''.
+  Cf Fundamental astronomie, Springer Verlag 2sd ed p477 table E10
 */
 double EccEarth(JMA dateTU)
@@ -1191,10 +1248,8 @@
 }
 
-/*
-++
-double ObliqEarth(JMA dateTU)
-	Valeur de l'obliquite de l'orbite terrestre
-	a la date TU ``dateTU'' (en degres decimaux).
---
+/*!
+  \ingroup NTools
+  Valeur de l'obliquite de l'orbite terrestre
+  a la date TU ``dateTU'' (en degres decimaux).
 */
 double ObliqEarth(JMA dateTU)
@@ -1209,10 +1264,8 @@
 }
 
-/*
-++
-double LongEcPerihelie(JMA dateTU)
-	Retourne la Longitude Ecliptique du perihelie de
-	l'orbite terrestre a la date TU ``dateTU'' (en degres decimaux).
---
+/*! 
+  \ingroup NTools
+  Retourne la Longitude Ecliptique du perihelie de
+  l'orbite terrestre a la date TU ``dateTU'' (en degres decimaux).
 */
 double LongEcPerihelie(JMA dateTU)
@@ -1229,12 +1282,10 @@
 }
 
-/*
-++
-void EquatToEclip(double a,double d,double* l,double *b,JMA dateTU);
-	Renvoie les coordonnees ecliptiques ``l,b'' a partir de
-	coordonnees equatoriales ``a,d'' a la date TU ``dateTU''.
-	La date permet de corriger la variation annuelle
-	de l'obliquite terrestre.
---
+/*!
+  \ingroup NTools
+  Renvoie les coordonnees ecliptiques \b (l,b) a partir de
+  coordonnees equatoriales \b (a,d) a la date TU \b dateTU.
+  La date permet de corriger la variation annuelle
+  de l'obliquite terrestre.
 */
 void EquatToEclip(double a,double d,double* l,double *b,JMA dateTU)
