Changeset 2808 in Sophya for trunk/SophyaLib/NTools/datime.c


Ignore:
Timestamp:
Jun 14, 2005, 1:25:05 PM (20 years ago)
Author:
ansari
Message:

MAJ documentation - Reza 14/6/2005

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/datime.c

    r682 r2808  
    1616
    1717/*       Fonctions de calcule de date et temps (Heure)       */
    18 /*
    19 ++
    20   Module        Dates (C)
    21   Lib   LibsUtil
    22   include       datime.h
    23 
    24         Ce groupe de fonctions permettent de manipuler des dates et heures.
    25         En particulier, il est possible de calculer l'ecart (en nombre de jours
    26         ou de secondes separant deux dates, ou le temps sideral correspondant
    27         a une date et heure legale. Deux structures simples sont definies
    28         afin de faciliter le passage des arguments entre differentes fonctions:
    29         - *JMA* : Jour, Mois, Annee
    30         - *HMS* : Heure, Minutes, Secondes
    31 
    32 --
    33 */
    34 /*
    35 ++
    36   Links Voir aussi:
    37  Temps Sideral, Universel (C)
    38 --
    39 */
    40 /*
    41 ++
    42 Titre   Quelques Macros
    43 --
     18/*!
     19  \ingroup NTools
     20  \file datime.c
     21  \brief Set of C functions and macros to manipulate date and time  + Sidereal time
     22  and simple astronomical functions.
     23
     24  \warning  If possible, use class SOPHYA::TimeStamp in module BaseTools
     25  for date/time computation.
     26
     27  Ce groupe de fonctions permettent de manipuler des dates et heures.
     28  En particulier, il est possible de calculer l'ecart (en nombre de jours
     29  ou de secondes separant deux dates, ou le temps sideral correspondant
     30  a une date et heure legale. Deux structures simples sont definies
     31  afin de faciliter le passage des arguments entre differentes fonctions:
     32  - JMA : Jour, Mois, Annee
     33  - HMS : Heure, Minutes, Secondes
     34
     35  \sa SOPHYA::TimeStamp
    4436*/
    4537
     
    6860--
    6961*/
    70 
     62/*!
     63  \ingroup NTools
     64   Decodage d'une chaine de caracteres "strg" sous forme de "hh:mm:ss 10:43:60.5"
     65   en structure HMS "hms" avec gestion des signes (decodage correcte de -44:30:05.23)
     66*/
    7167void StrtoHMS(char *s,HMS* h)
    7268/* On ne peut pas ecrire 1:-05:-45 pas gere et debile! (mn et sec >=0.)  cmv 12/8/97 */
     
    10197}
    10298
    103 
     99/*!
     100  \ingroup NTools
     101  Ecrit le contenu de la structure HMS "hms" sous forme de "hh:mm:ss" dans la chaine
     102  de caracteres "strg" avec gestion des signes
     103*/
    104104void HMStoStr(HMS h,char *s)
    105105/* L'ecriture est forcee a h:mn:sec avec mn et sec >=0  cmv 12/8/97 */
     
    117117
    118118/* Nouvelle-Fonction */
     119/*!
     120  \ingroup NTools
     121  \brief Retourne le nombre de jours dans le mois m, annee a
     122*/
    119123int NbJourMois(int a, int m)
    120124/* Retourne le nombre de jours dans le mois m, annee a */
     
    130134}
    131135
     136/*!
     137  \ingroup NTools
     138  Calcule le Nombre de jours ecoules depuis 0 Jan 1901.
     139  Si annee < 100  On considere annee = annee+1900  (1900-1999)
     140*/
    132141/* Nouvelle-Fonction */
    133142long JMAtoJ(JMA jma)
    134 /*           Calcule le Nb. de jours ecoules depuis 0 Jan 1901         */
    135 /*   Si annee < 100  On considere annee = annee+1900  (1900-1999)      */
    136 
    137143{
    138144long rc,nban;
     
    162168}
    163169
     170/*!
     171  \ingroup NTools
     172  \brief retourne la date correspondant a \b j jours ecoules depuis le 0/1/1901
     173*/
    164174/* Nouvelle-Fonction */
    165175JMA JtoJMA(long j)
    166 /* retourne la date correspondant a j jours ecoules depuis le 0/1/1901 */
    167176{
    168177long i;
     
    215224}
    216225
     226/*!
     227  \ingroup NTools
     228  \brief Cette fonction calcule le numero de jour de la semaine (Lundi=1 .. Dimanche=7)
     229*/
    217230/* Nouvelle-Fonction */
    218231int NumJour(JMA jma)
    219 /*        Cette fonction calcule le numero de jour de la semaine    */
    220 /*        (Lundi=1 .. Dimanche=7)                                   */
    221 
    222232{
    223233int l;
     
    289299}
    290300
     301/*!
     302  \ingroup NTools
     303  Pour "nj=dd*10+jj", calcule la date correspondant au jour
     304  "jj" (1 .. 7 - Lundi .. Dimanche) du mois "mm" , annee "aa"
     305  se trouvant apres (ou egal a) la date "dd/mm/aa" .
     306  Si annee "aa" <= 99   ->  annee de 1901 - 1999
     307*/
    291308JMA JApmmaatoJMA(int nj, int mm, int aa)
    292 /*    Pour "nj=dd*10+jj", calcule la date correspondant au jour
    293       "jj" (1 .. 7 - Lundi .. Dimanche) du mois "mm" , annee "aa"
    294       se trouvant apres (ou egal a) la date "dd/mm/aa" .
    295       Si annee "aa" <= 99   ->  annee de 1901 - 1999       */
    296309{
    297310int i, dd, jj;
     
    311324}
    312325
     326/*!
     327  \ingroup NTools
     328  Cette fonction calcule le nombre d'heures en decimales pour \b hms.
     329  Heures/Minutes/Secondes peuvent etre +/- avec toutes les combinaisons possibles
     330*/
    313331/* Nouvelle-Fonction */
    314332double HMStoH(HMS hms)
     
    321339
    322340
    323 
     341/*!
     342  \ingroup NTools
     343  \brief Conversion en secondes de la structure HMS  "hms"
     344*/
    324345/* Nouvelle-Fonction */
    325346double HMStoSec(HMS hms)
     
    330351}
    331352
     353/*!
     354  \ingroup NTools
     355  Calcule le nombre de secondes correspondant a "date,heure"
     356  a partir de l'origine 1er Janv 1990  0H00 ( Date entre 1930 - 2050 )
     357*/
    332358/* Nouvelle-Fonction */
    333359long DatetoSec(char const* date, char const* heure)
     
    348374}
    349375
     376/*!
     377  \ingroup NTools
     378  Calcule le nombre de secondes correspondant a "date,heure"
     379  a partir de l'origine 1er Janv 1990  0H00 ( Date entre 1930 - 2050 )
     380  en tenant compte des decalages des heures legales.
     381*/
    350382/* Nouvelle-Fonction */
    351383long DatetoSecOff(char const* date, char const* heure)
     
    368400}
    369401
     402/*!
     403  \ingroup NTools
     404  \brief Conversion heures en decimales en structure HMS
     405*/
    370406/* Nouvelle-Fonction */
    371407HMS HtoHMS(double h)
     
    386422}
    387423
     424/*!
     425  \ingroup NTools
     426  Conversion degres decimaux en structure HMS (deg,min,sec)
     427  Degres decimaux en D , M , Sec  Il y a un modulo 360.
     428  la sortie est telle que -180 < deg <= 180.
     429*/
    388430/* Nouvelle-Fonction */
    389431HMS DtoDMS(double h)
    390 /* Degres decimaux en D , M , Sec  Il y a un modulo 360  */
    391 /* la sortie est telle que -180 < deg <= 180. */
    392432{
    393433HMS hms;
     
    408448}
    409449
     450/*!
     451  \ingroup NTools
     452  Conversion degres/heures decimaux en structure HMS (deg/heure,min,sec)
     453  SANS modulo 360/24
     454*/
    410455/* Nouvelle-Fonction */
    411456HMS DoubletoHMS(double h)
     
    875920}
    876921
    877 
     922/*!
     923  \ingroup NTools
     924  \brief Cette fonction  donne le temps sideral moyen a greenwich a 0h UT
     925*/
    878926/* Nouvelle-Fonction  */
    879927HMS GMST_at_0h_UT (JMA date)
     
    925973--
    926974*/
    927 
     975/*!
     976  \ingroup NTools
     977  Cette fonction calcule le temps sideral GMT a partir du temps
     978  universel et de la date GMT.
     979  \verbatim
     980  Temps sideral
     981  Jour Sideral = 86400 Sec. Sid.  ( = 24 H Sid. )   
     982  Annee Solaire = 365 J 5H 48' 46"  =~  365.2422 J                       
     983  Annee Solaire = 365.2422 Jours Solaire Moyen = 366.2422 Jours Sideraux
     984  Jour Sol. Moyem = 24 H Sol. = 24 H Sid. * (366.2422 / 365.2422)       
     985  Jour Solaire Moyen = 86636.555359 Sec. Sid. = 24 H 3' 56.555359"       
     986  Heure Solaire Moyen = 3609.85647 Sec. Sid.                             
     987  Sec. Sol. = 1.0027379 Sec. Sid.                                       
     988  Le 1er Janvier 1989 0H TU Il etait 6H 42' 30" GMT_Sideral
     989  \endverbatim
     990*/
    928991/* Nouvelle-Fonction  */
    929992HMS TUtoTSid(JMA date, HMS TU)
     
    9641027}
    9651028
     1029/*!
     1030  \ingroup NTools
     1031  Cette fonction calcule les temps universels a partir du temps
     1032  sideral GMT et de la date GMT. Selon la valeur du TS, il peut y avoir
     1033  une ou deux possibilites pour le TU (return code).
     1034*/
    9661035/* Nouvelle-Fonction  */
    9671036int TSidtoTU(JMA date, HMS TS, HMS *TU1, HMS *TU2)
     
    10271096}
    10281097
    1029 /*
    1030 ++
    1031 void TSidSetupLaSilla()
    1032         Fonction d'initialisation de conversion  de temps sideral et legal
    1033         pour la ESO-Silla "SetTSolMOff() , SetTLegOff()".
    1034 |       Longitude = 70 deg 43.8 min ouest
    1035 |       Latitude  = 29 deg 15.4 min Sud   
    1036 |       T Sol. Moyen - TU = -4.715333 Heures
    1037 |       TLegal-TU : -4 Heures de Mars a Octobre, -3 Heures sinon
    1038 |       Changement le 1er dimanche >= 8/03  8/10 a midi (12:00:00)
    1039 --
    1040 */
    1041 
     1098/*!
     1099  \ingroup NTools
     1100  Fonction d'initialisation de conversion  de temps sideral et legal
     1101  pour la ESO-Silla "SetTSolMOff() , SetTLegOff()".
     1102  \verbatim
     1103  Longitude = 70 deg 43.8 min ouest
     1104  Latitude  = 29 deg 15.4 min Sud   
     1105  T Sol. Moyen - TU = -4.715333 Heures
     1106  TLegal-TU : -4 Heures de Mars a Octobre, -3 Heures sinon
     1107  Changement le 1er dimanche >= 8/03  8/10 a midi (12:00:00)
     1108  \endverbatim
     1109*/
    10421110/* Fonction d'initialisation de calcul de temps sideral pour la Silla */
    10431111void TSidSetupLaSilla()
     
    10531121
    10541122
    1055 /*
    1056 ++
    1057 double ToJulianDay(JMA dateTU, HMS hmsTU);
    1058         Calcul du jour Julien pour une date TU.
    1059         Uniquement valable a partir du 15/10/1582 00:00:00.
    1060 --
    1061 */
    1062 
     1123/*!
     1124  \ingroup NTools
     1125  Calcul du jour Julien pour une date TU.
     1126  Uniquement valable a partir du 15/10/1582 00:00:00.
     1127 
     1128*/
    10631129double ToJulianDay(JMA dateTU, HMS hmsTU)
    10641130/* Cf Fundamental astronomie, Springer Verlag 2sd ed.  cmv 4/12/98 */
     
    10741140}
    10751141
    1076 /*
    1077 ++
    1078 int FromJulianDay(double JD,JMA* dateTU, HMS* hmsTU);
    1079         Calcul de la date date et l'heure TU a partir d'un jour Julien.
    1080         Retourne 0 si succes.
    1081 --
    1082 */
    1083 
     1142/*!
     1143  \ingroup NTools
     1144  Calcul de la date date et l'heure TU a partir d'un jour Julien.
     1145  Retourne 0 si succes.
     1146*/
    10841147int FromJulianDay(double JD,JMA* dateTU, HMS* hmsTU)
    10851148/* Cf Fundamental astronomie, Springer Verlag 2sd ed.  cmv 4/12/98 */
     
    11151178
    11161179
    1117 /*
    1118 ++
    1119 double StrgtoDegDec(char *strg)
    1120         Cette fonction renvoie la valeur decimale en heures
    1121         d'un angle specifie sous forme de [-][+]dd:mm:ss.
    1122 --
    1123 */
    1124 
     1180/*!
     1181  \ingroup NTools
     1182  Cette fonction renvoie la valeur decimale en heures
     1183  d'un angle specifie sous forme de [-][+]dd:mm:ss.
     1184*/
    11251185double StrgtoDegDec(char *strg)
    11261186/*         cmv 4/12/98 */
     
    11431203}
    11441204
    1145 /*
    1146 ++
    1147 char * DegDectoStrg(double deg, char *strg)
    1148         Cette fonction ecrit une valeur en degre decimal sous
    1149         forme de [-]dd:mm:ss.
    1150 --
     1205/*!
     1206  \ingroup NTools
     1207  Cette fonction ecrit une valeur en degre decimal sous
     1208  forme de [-]dd:mm:ss.
    11511209*/
    11521210
     
    11721230}
    11731231
    1174 /*
    1175 ++
    1176 double EccEarth(JMA dateTU)
    1177         Valeur de l'eccentricite de l'orbite terrestre
    1178         a la date TU ``dateTU''.
    1179 --
     1232/*!
     1233  \ingroup NTools
     1234  Valeur de l'eccentricite de l'orbite terrestre
     1235  a la date TU ``dateTU''.
     1236  Cf Fundamental astronomie, Springer Verlag 2sd ed p477 table E10
    11801237*/
    11811238double EccEarth(JMA dateTU)
     
    11911248}
    11921249
    1193 /*
    1194 ++
    1195 double ObliqEarth(JMA dateTU)
    1196         Valeur de l'obliquite de l'orbite terrestre
    1197         a la date TU ``dateTU'' (en degres decimaux).
    1198 --
     1250/*!
     1251  \ingroup NTools
     1252  Valeur de l'obliquite de l'orbite terrestre
     1253  a la date TU ``dateTU'' (en degres decimaux).
    11991254*/
    12001255double ObliqEarth(JMA dateTU)
     
    12091264}
    12101265
    1211 /*
    1212 ++
    1213 double LongEcPerihelie(JMA dateTU)
    1214         Retourne la Longitude Ecliptique du perihelie de
    1215         l'orbite terrestre a la date TU ``dateTU'' (en degres decimaux).
    1216 --
     1266/*!
     1267  \ingroup NTools
     1268  Retourne la Longitude Ecliptique du perihelie de
     1269  l'orbite terrestre a la date TU ``dateTU'' (en degres decimaux).
    12171270*/
    12181271double LongEcPerihelie(JMA dateTU)
     
    12291282}
    12301283
    1231 /*
    1232 ++
    1233 void EquatToEclip(double a,double d,double* l,double *b,JMA dateTU);
    1234         Renvoie les coordonnees ecliptiques ``l,b'' a partir de
    1235         coordonnees equatoriales ``a,d'' a la date TU ``dateTU''.
    1236         La date permet de corriger la variation annuelle
    1237         de l'obliquite terrestre.
    1238 --
     1284/*!
     1285  \ingroup NTools
     1286  Renvoie les coordonnees ecliptiques \b (l,b) a partir de
     1287  coordonnees equatoriales \b (a,d) a la date TU \b dateTU.
     1288  La date permet de corriger la variation annuelle
     1289  de l'obliquite terrestre.
    12391290*/
    12401291void EquatToEclip(double a,double d,double* l,double *b,JMA dateTU)
Note: See TracChangeset for help on using the changeset viewer.