New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5600 for branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/TOOLS/SIREN/src/date.f90 – NEMO

Ignore:
Timestamp:
2015-07-15T17:46:12+02:00 (9 years ago)
Author:
andrewryan
Message:

merged in latest version of trunk alongside changes to SAO_SRC to be compatible with latest OBS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/TOOLS/SIREN/src/date.f90

    r4213 r5600  
    77! DESCRIPTION: 
    88!> @brief This module provide the calculation of Julian dates, and 
    9 !> do many manipulations with dates.<br/> 
    10 !> Actually we use Modified Julian Dates, with origin the  
    11 !> 17 Nov 1858 at 00:00:00 
    12 ! 
     9!> do many manipulations with dates. 
     10!> 
    1311!> @details 
     12!> Actually we use Modified Julian Dates, with   
     13!> 17 Nov 1858 at 00:00:00 as origin.<br/> 
     14!> 
    1415!>   define type TDATE:<br/> 
    15 !>   TYPE(TDATE) :: tl_date1<br/> 
     16!> @code 
     17!>   TYPE(TDATE) :: tl_date1 
     18!> @endcode 
    1619!>   default date is 17 Nov 1858 at 00:00:00<br/> 
    1720!> 
    1821!>   to intialise date : <br/> 
    19 !>   - from date of the day at 12:00:00 : tl_date1=date_today()<br/> 
    20 !>   - from date and time of the day    : tl_date1=date_now()<br/> 
    21 !>   - from julian day                  : tl_date1=date_init(1.)<br/>   
    22 !>   - from year month day              : tl_date1=date_init(2012,12,10)<br/> 
     22!>   - from date of the day at 12:00:00 :  
     23!> @code 
     24!> tl_date1=date_today() 
     25!> @endcode 
     26!>   - from date and time of the day    :  
     27!> @code 
     28!> tl_date1=date_now() 
     29!> @endcode 
     30!>   - from julian day                  :  
     31!> @code 
     32!> tl_date1=date_init(dd_jd) 
     33!> @endcode 
     34!>      - dd_jd julian day (double precision)  
     35!>   - from number of second since julian day origin   :  
     36!> @code 
     37!> tl_date1=date_init(kd_nsec) 
     38!> @endcode 
     39!>      - kd_nsec number of second (integer 8)  
     40!>   - from year month day              :  
     41!> @code 
     42!> tl_date1=date_init(2012,12,10) 
     43!> @endcode 
     44!>   - from string character formatted date  :  
     45!> @code 
     46!> tl_date1=date_init(cd_fmtdate) 
     47!> @endcode 
     48!>      - cd_fmtdate date in format YYYY-MM-DD hh:mm:ss 
    2349!> 
    2450!>   to print date in format YYYY-MM-DD hh:mm:ss<br/> 
    2551!>   CHARACTER(LEN=lc) :: cl_date<br/> 
    26 !>   cl_date=date_print(tl_date1)<br/> 
    27 !>   PRINT *, TRIM(cl_date)<br/> 
    28 !> 
    29 !>   to print day if the week:<br/> 
    30 !>   PRINT *,"dow ", tl_date1\%i_dow<br/> 
     52!> @code 
     53!>   cl_date=date_print(tl_date1) 
     54!>   PRINT *, TRIM(cl_date) 
     55!> @endcode 
     56!>     
     57!>   to print date in another format (only year, month, day): 
     58!> @code 
     59!>   cl_date=date_print(tl_date1, cd_fmt) 
     60!>   PRINT *, TRIM(cl_date) 
     61!> @endcode 
     62!>       - cd_fmt ouput format (ex: cd_fmt="('y',i0.4,'m',i0.2,'d',i0.2)" )  
     63!> 
     64!>   to print day of the week:<br/> 
     65!> @code 
     66!>   PRINT *,"dow ", tl_date1\%i_dow 
     67!> @endcode 
    3168!>   to print last day of the month:<br/> 
    32 !>   PRINT *,"last day ", tl_date1\%i_lday<br/> 
     69!> @code 
     70!>   PRINT *,"last day ", tl_date1\%i_lday 
     71!> @endcode 
     72!> 
    3373!>   to know if year is a leap year:<br/> 
    34 !>   LOGICAL :: ll_isleap<br/> 
    35 !>   ll_isleap=date_leapyear(tl_date1)<br/> 
    36 !> 
    37 !>   to compute difference between to dates:<br/> 
    38 !>   tl_date2=date_init(2010,12,10)<br/> 
    39 !>   print *,"diff ",tl_date1-tl_date2<br/> 
     74!> @code 
     75!>   ll_isleap=date_leapyear(tl_date1) 
     76!> @endcode 
     77!>    - ll_isleap is logical 
     78!> 
     79!>   to compute number of days between two dates:<br/> 
     80!> @code 
     81!>   tl_date2=date_init(2010,12,10) 
     82!>   dl_diff=tl_date1-tl_date2 
     83!> @endcode 
     84!>    - dl_diff is the number of days between date1 and date2 (double precision) 
    4085!> 
    4186!>   to add or substract nday to a date:<br/> 
    42 !>   tl_date2=tl_date1+2.<br/> 
    43 !>   print *,"add ",trim(date_print(tl_date2))<br/> 
    44 !>   tl_date2=tl_date1-2.6<br/> 
    45 !>   print *,"sub ",trim(date_print(tl_date2))<br/> 
     87!> @code 
     88!>   tl_date2=tl_date1+2. 
     89!>   tl_date2=tl_date1-2.6 
     90!> @endcode 
     91!>    - number of day (double precision) 
    4692!> 
    4793!>   to print julian day:<br/> 
    48 !>   print *," julian day",tl_date1\%r_jd<br/> 
     94!> @code 
     95!>   PRINT *," julian day",tl_date1\%r_jd 
     96!> @endcode 
    4997!> 
    5098!>   to print CNES julian day (origin 1950-01-01 00:00:00)<br/> 
    51 !>   print *," CNES julian day",tl_date1\%r_jc<br/> 
     99!> @code 
     100!>   PRINT *," CNES julian day",tl_date1\%r_jc 
     101!> @endcode 
    52102!> 
    53103!>   to create pseudo julian day with origin date_now:<br/> 
    54 !>   tl_date1=date_init(2012,12,10,td_dateo=date_now())<br/> 
    55 !>   print *," new julian day",tl_date1\%r_jc<br/> 
    56 !>   Note that you erase CNES julian day when doing so<br/>  
     104!> @code 
     105!>   tl_date1=date_init(2012,12,10,td_dateo=date_now()) 
     106!> @endcode 
     107!>   @note you erase CNES julian day when doing so<br/>  
    57108!> 
    58109!>   to print julian day in seconds:<br/> 
    59 !>   print *, tl_date1\%k_jdsec<br/> 
     110!> @code 
     111!>   PRINT *, tl_date1\%k_jdsec 
     112!> @endcode 
    60113!>   to print CNES or new julian day in seconds:<br/> 
    61 !>   print *, tl_date1\%k_jcsec<br/> 
    62 !> 
    63 !> @author 
    64 !> J.Paul 
     114!> @code 
     115!>   PRINT *, tl_date1\%k_jcsec 
     116!> @endcode 
     117!> 
     118!> @author J.Paul 
    65119! REVISION HISTORY: 
    66 !> @date Nov, 2013 - Initial Version 
     120!> @date November, 2013 - Initial Version 
    67121! 
    68122!> @note This module is based on Perderabo's date calculator (ksh) 
    69123!> @note Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     124!> 
    70125!> @todo 
    71 !> - check if real(sp), integer(i8) is enough 
    72126!> - see calendar.f90 and select Gregorian, NoLeap, or D360 calendar 
    73 !> - add suffix to number 
    74 !> - add log message 
    75127!---------------------------------------------------------------------- 
    76128MODULE date 
     
    78130   USE kind                            ! F90 kind parameter 
    79131   USE fct                             ! basic useful function 
    80    USE logger                             ! log file manager 
     132   USE logger                          ! log file manager 
    81133   IMPLICIT NONE 
    82    PRIVATE 
    83134   ! NOTE_avoid_public_variables_if_possible 
    84135 
    85136   ! type and variable 
    86    PUBLIC :: TDATE              ! date structure 
     137   PUBLIC :: TDATE              !< date structure 
     138 
     139   PRIVATE :: cm_fmtdate        !< date and time format 
     140   PRIVATE :: im_secbyday       !< number of second by day 
    87141 
    88142   ! function and subroutine 
    89    PUBLIC :: OPERATOR(-)        ! substract two dates or n days to a date 
    90    PUBLIC :: OPERATOR(+)        ! add n days to a date 
    91    PUBLIC :: date_init          ! initiazed date structure form julian day or year month day 
    92    PUBLIC :: date_now           ! return the date and time 
    93    PUBLIC :: date_today         ! return the date of the day at 12:00:00 
    94    PUBLIC :: date_print         ! print the date with format YYYY-MM-DD hh:mm:ss 
    95    PUBLIC :: date_leapyear      ! check if year is a leap year 
    96  
    97    PRIVATE :: date__init_fmtdate ! initiazed date structure from character YYYY-MM-DD hh:mm:ss 
    98    PRIVATE :: date__init_jd      ! initiazed date structure from julian day 
    99    PRIVATE :: date__init_nsec    ! initiazed date structure from number of second since origin of julian day 
    100    PRIVATE :: date__init_ymd     ! initiazed date structure from year month day 
     143   PUBLIC :: date_today         !< return the date of the day at 12:00:00 
     144   PUBLIC :: date_now           !< return the date and time 
     145   PUBLIC :: date_init          !< initialized date structure form julian day or year month day 
     146   PUBLIC :: date_print         !< print the date with format YYYY-MM-DD hh:mm:ss 
     147   PUBLIC :: date_leapyear      !< check if year is a leap year 
     148   PUBLIC :: OPERATOR(-)        !< substract two dates or n days to a date 
     149   PUBLIC :: OPERATOR(+)        !< add n days to a date 
     150 
     151   PRIVATE :: date__init_fmtdate ! initialized date structure from character YYYY-MM-DD hh:mm:ss 
     152   PRIVATE :: date__init_jd      ! initialized date structure from julian day 
     153   PRIVATE :: date__init_nsec    ! initialized date structure from number of second since origin of julian day 
     154   PRIVATE :: date__init_ymd     ! initialized date structure from year month day 
    101155   PRIVATE :: date__addnday      ! add nday to a date 
    102156   PRIVATE :: date__subnday      ! substract nday to a date 
    103    PRIVATE :: date__diffdate     ! compute number of day between two dates  
     157   PRIVATE :: date__diffdate     ! compute number of days between two dates  
    104158   PRIVATE :: date__lastday      ! compute last day of the month 
    105159   PRIVATE :: date__ymd2jd       ! compute julian day from year month day 
     
    115169   PRIVATE :: date__sec2jd       ! convert seconds since julian day origin in julian day 
    116170 
    117    !> @struct TDATE 
    118    TYPE TDATE 
     171   TYPE TDATE !< date structure 
    119172      INTEGER(i4) :: i_year  = 1858   !< year 
    120173      INTEGER(i4) :: i_month = 11     !< month 
    121174      INTEGER(i4) :: i_day   = 17     !< day 
    122       INTEGER(i4) :: i_hms   = 0      !< fraction of the day 
    123175      INTEGER(i4) :: i_hour  = 0      !< hour 
    124176      INTEGER(i4) :: i_min   = 0      !< min 
     
    126178      INTEGER(i4) :: i_dow   = 0      !< day of week 
    127179      INTEGER(i4) :: i_lday  = 0      !< last day of the month 
    128       REAL(sp)    :: r_jd = 0         !< julian day (origin : 1858/11/17 00:00:00) 
    129       REAL(sp)    :: r_jc = 0         !< CNES julian day or pseudo julian day with new date origin     
     180      REAL(dp)    :: d_jd = 0         !< julian day (origin : 1858/11/17 00:00:00) 
     181      REAL(dp)    :: d_jc = 0         !< CNES julian day or pseudo julian day with new date origin     
    130182      INTEGER(i8) :: k_jdsec  = 0     !< number of seconds since julian day origin 
    131183      INTEGER(i8) :: k_jcsec  = 0     !< number of seconds since CNES or pseudo julian day origin 
     
    133185 
    134186   !  module variable    
    135    CHARACTER(LEN=lc), PARAMETER :: cm_fmtdate = &  !< date format 
     187   CHARACTER(LEN=lc), PARAMETER :: cm_fmtdate = &  !< date and time format 
    136188   &  "(i0.4,'-',i0.2,'-',i0.2,1x,i0.2,':',i0.2,':',i0.2)" 
    137189 
     
    139191 
    140192   INTERFACE date_init 
    141       MODULE PROCEDURE date__init_jd    ! initiazed date structure from julian day 
    142       MODULE PROCEDURE date__init_nsec  ! initiazed date structure from number of second since origin of julian day 
    143       MODULE PROCEDURE date__init_ymd   ! initiazed date structure from year month day 
    144       MODULE PROCEDURE date__init_fmtdate   ! initiazed date structure from character YYYY-MM-DD hh:mm:ss 
     193      MODULE PROCEDURE date__init_jd    ! initialized date structure from julian day 
     194      MODULE PROCEDURE date__init_nsec  ! initialized date structure from number of second since origin of julian day 
     195      MODULE PROCEDURE date__init_ymd   ! initialized date structure from year month day 
     196      MODULE PROCEDURE date__init_fmtdate   ! initialized date structure from character YYYY-MM-DD hh:mm:ss 
    145197   END INTERFACE date_init 
    146198 
     
    156208CONTAINS 
    157209   !------------------------------------------------------------------- 
    158    !> @brief This function print the date with  
    159    !> format YYYY/MM/DD hh:mm:ss 
    160    !> 
    161    !> @author J.Paul 
    162    !> - Nov, 2013- Initial Version 
    163    ! 
    164    !> @param[in] td_date : date strutcutre 
     210   !> @brief This function print the date and time with  
     211   !> format YYYY/MM/DD hh:mm:ss. 
     212   !> @details 
     213   !> Optionally, you could specify output format. However it will be only apply 
     214   !> to year, month, day. 
     215   !> 
     216   !> @author J.Paul 
     217   !> @date November, 2013 - Initial Version 
     218   ! 
     219   !> @param[in] td_date   date strutcutre 
     220   !> @param[in] cd_fmt    ouput format (only for year,month,day) 
    165221   !> @return date in format YYYY-MM-DD hh:mm:ss 
    166222   !------------------------------------------------------------------- 
    167    ! @code 
    168    CHARACTER(LEN=lc) FUNCTION date_print(td_date) 
    169       IMPLICIT NONE 
    170       ! Argument    
    171       TYPE(TDATE), INTENT(IN) :: td_date 
    172       !---------------------------------------------------------------- 
    173  
    174       WRITE(date_print,cm_fmtdate) & 
    175       &    td_date%i_year,td_date%i_month,td_date%i_day, & 
    176       &    td_date%i_hour,td_date%i_min,td_date%i_sec 
     223   CHARACTER(LEN=lc) FUNCTION date_print(td_date, cd_fmt) 
     224      IMPLICIT NONE 
     225      ! Argument    
     226      TYPE(TDATE)     , INTENT(IN) :: td_date 
     227      CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: cd_fmt 
     228      !---------------------------------------------------------------- 
     229 
     230      IF( PRESENT(cd_fmt) )THEN 
     231         WRITE(date_print,TRIM(cd_fmt)) & 
     232         &    td_date%i_year,td_date%i_month,td_date%i_day 
     233      ELSE 
     234         WRITE(date_print,cm_fmtdate) & 
     235         &    td_date%i_year,td_date%i_month,td_date%i_day, & 
     236         &    td_date%i_hour,td_date%i_min,td_date%i_sec 
     237      ENDIF 
    177238 
    178239   END FUNCTION date_print 
    179    ! @endcode 
    180240   !------------------------------------------------------------------- 
    181241   !> @brief This function check if year is a leap year. 
    182242   !> 
    183243   !> @author J.Paul 
    184    !> - Nov, 2013- Initial Version 
    185    ! 
    186    !> @param[in] td_date : date strutcutre 
     244   !> @date November, 2013 - Initial Version 
     245   ! 
     246   !> @param[in] td_date   date strutcutre 
    187247   !> @return true if year is leap year 
    188248   !------------------------------------------------------------------- 
    189    ! @code 
    190249   LOGICAL FUNCTION date_leapyear(td_date) 
    191250      IMPLICIT NONE 
     
    206265 
    207266   END FUNCTION date_leapyear 
    208    ! @endcode 
    209    !------------------------------------------------------------------- 
    210    !> @brief This function return the date and time  
    211    !> 
    212    !> @author J.Paul 
    213    !> - Nov, 2013- Initial Version 
    214    ! 
    215    !> @return date and time of the day in a date structure 
    216    !------------------------------------------------------------------- 
    217    ! @code 
     267   !------------------------------------------------------------------- 
     268   !> @brief This function return the current date and time. 
     269   !> 
     270   !> @author J.Paul 
     271   !> @date November, 2013 - Initial Version 
     272   ! 
     273   !> @return current date and time in a date structure 
     274   !------------------------------------------------------------------- 
    218275   TYPE(TDATE) FUNCTION date_now() 
    219276      IMPLICIT NONE 
     
    228285 
    229286   END FUNCTION date_now 
    230    ! @endcode 
    231    !------------------------------------------------------------------- 
    232    !> @brief This function return the date of the day at 12:00:00  
    233    !> 
    234    !> @author J.Paul 
    235    !> - Nov, 2013- Initial Version 
     287   !------------------------------------------------------------------- 
     288   !> @brief This function return the date of the day at 12:00:00. 
     289   !> 
     290   !> @author J.Paul 
     291   !> @date November, 2013 - Initial Version 
    236292   ! 
    237293   !> @return date of the day at 12:00:00 in a date structure 
    238294   !------------------------------------------------------------------- 
    239    ! @code 
    240295   TYPE(TDATE) FUNCTION date_today() 
    241296      IMPLICIT NONE 
     
    249304 
    250305   END FUNCTION date_today 
    251    ! @endcode 
    252    !------------------------------------------------------------------- 
    253    !> @brief This function initiazed date structure from a character  
    254    !> date with format YYYY-MM-DD hh:mm:ss 
    255    !> 
    256    !> @author J.Paul 
    257    !> - Nov, 2013- Initial Version 
    258    ! 
    259    !> @param[in] cd_date : date in format YYYY-MM-DD hh:mm:ss 
    260    !> @param[in] td_dateo : new date origin for pseudo julian day 
     306   !------------------------------------------------------------------- 
     307   !> @brief This function initialized date structure from a character  
     308   !> date with format YYYY-MM-DD hh:mm:ss.<br/> 
     309   !> @details 
     310   !> Optionaly create pseudo julian day with new origin.<br/> 
     311   !> julian day origin is 17 Nov 1858 at 00:00:00 
     312   !> 
     313   !> @author J.Paul 
     314   !> @date November, 2013 - Initial Version 
     315   ! 
     316   !> @param[in] cd_date   date in format YYYY-MM-DD hh:mm:ss 
     317   !> @param[in] td_dateo  new date origin for pseudo julian day 
    261318   !> @return date structure 
    262319   !------------------------------------------------------------------- 
    263    ! @code 
    264    TYPE(TDATE) FUNCTION date__init_fmtdate(cd_date, td_dateo) 
    265       IMPLICIT NONE 
    266       ! Argument    
    267       CHARACTER(LEN=*), INTENT(IN)  :: cd_date 
     320   TYPE(TDATE) FUNCTION date__init_fmtdate(cd_datetime, td_dateo) 
     321      IMPLICIT NONE 
     322      ! Argument    
     323      CHARACTER(LEN=*), INTENT(IN)  :: cd_datetime 
    268324      TYPE(TDATE),      INTENT(IN), OPTIONAL :: td_dateo 
    269325 
    270326      ! local variable 
     327      CHARACTER(LEN=lc) :: cl_datetime 
    271328      CHARACTER(LEN=lc) :: cl_date 
     329      CHARACTER(LEN=lc) :: cl_time 
    272330      CHARACTER(LEN=lc) :: cl_year 
    273331      CHARACTER(LEN=lc) :: cl_month 
     
    285343      !---------------------------------------------------------------- 
    286344 
    287       cl_date=TRIM(ADJUSTL(cd_date)) 
    288  
    289       cl_year=cl_date(1:4) 
     345      cl_datetime=TRIM(ADJUSTL(cd_datetime)) 
     346 
     347      cl_date=fct_split(cl_datetime,1,' ') 
     348      cl_time=fct_split(cl_datetime,2,' ') 
     349 
     350      cl_year = fct_split(cl_date,1,'-') 
    290351      READ(cl_year,*) il_year 
    291       cl_month=cl_date(6:7) 
     352      cl_month= fct_split(cl_date,2,'-') 
    292353      READ(cl_month, *) il_month 
    293       cl_day=cl_date(9:10) 
     354      cl_day  = fct_split(cl_date,3,'-') 
    294355      READ(cl_day, *) il_day 
    295       cl_hour=cl_date(12:13) 
     356      cl_hour = fct_split(cl_time,1,':') 
    296357      READ(cl_hour, *) il_hour 
    297       cl_min=cl_date(15:16) 
     358      cl_min  = fct_split(cl_time,2,':') 
    298359      READ(cl_min, *) il_min 
    299       cl_sec=cl_date(18:19) 
     360      cl_sec  = fct_split(cl_time,3,':') 
    300361      READ(cl_sec, *) il_sec 
    301362 
     
    304365 
    305366   END FUNCTION date__init_fmtdate 
    306    ! @endcode    
    307    !------------------------------------------------------------------- 
    308    !> @brief This function initiazed date structure from julian day<br/> 
    309    !> optionaly create pseudo julian day with new origin<br/> 
     367   !------------------------------------------------------------------- 
     368   !> @brief This function initialized date structure from julian day.<br/> 
     369   !> @details 
     370   !> Optionaly create pseudo julian day with new origin.<br/> 
    310371   !> julian day origin is 17 Nov 1858 at 00:00:00 
    311372   !> 
    312373   !> @author J.Paul 
    313    !> - Nov, 2013- Initial Version 
    314    ! 
    315    !> @param[in] rd_jd : julian day 
    316    !> @param[in] td_dateo : new date origin for pseudo julian day 
     374   !> @date November, 2013 - Initial Version 
     375   ! 
     376   !> @param[in] dd_jd    julian day 
     377   !> @param[in] td_dateo new date origin for pseudo julian day 
    317378   ! 
    318379   !> @return date structure of julian day 
    319380   !------------------------------------------------------------------- 
    320    ! @code 
    321    TYPE(TDATE) FUNCTION date__init_jd(rd_jd, td_dateo) 
     381   TYPE(TDATE) FUNCTION date__init_jd(dd_jd, td_dateo) 
    322382      IMPLICIT NONE 
    323383      !Argument 
    324       REAL(sp),    INTENT(IN)  :: rd_jd 
     384      REAL(dp),    INTENT(IN)  :: dd_jd 
    325385      TYPE(TDATE), INTENT(IN), OPTIONAL :: td_dateo 
    326386      !---------------------------------------------------------------- 
     
    329389 
    330390         ! pseudo julian day with origin dateo 
    331          date__init_jd%r_jc=rd_jd 
    332          date__init_jd%k_jcsec=date__jd2sec(rd_jd) 
     391         date__init_jd%d_jc=dd_jd 
     392         date__init_jd%k_jcsec=date__jd2sec(dd_jd) 
    333393 
    334394         ! convert to truly julian day 
    335395         CALL date__jc2jd(date__init_jd, td_dateo) 
    336396      ELSE 
    337          date__init_jd%r_jd=rd_jd 
    338          date__init_jd%k_jdsec=date__jd2sec(rd_jd) 
     397         date__init_jd%d_jd=dd_jd 
     398         date__init_jd%k_jdsec=date__jd2sec(dd_jd) 
    339399 
    340400         ! compute CNES julian day 
     
    355415 
    356416   END FUNCTION date__init_jd 
    357    ! @endcode 
    358    !------------------------------------------------------------------- 
    359    !> @brief This function initiazed date structure from number of  
    360    !> second since julian day origin<br/> 
    361    !> optionaly create pseudo julian day with new origin 
    362    !> 
    363    !> @author J.Paul 
    364    !> - Nov, 2013- Initial Version 
    365    ! 
    366    !> @param[in] rd_jd : julian day 
    367    !> @param[in] td_dateo : new date origin for pseudo julian day 
     417   !------------------------------------------------------------------- 
     418   !> @brief This function initialized date structure from number of  
     419   !> second since julian day origin.<br/> 
     420   !> @details 
     421   !> Optionaly create pseudo julian day with new origin. 
     422   !> 
     423   !> @author J.Paul 
     424   !> @date November, 2013 - Initial Version 
     425   ! 
     426   !> @param[in] kd_nsec   number of second since julian day origin 
     427   !> @param[in] td_dateo new date origin for pseudo julian day 
    368428   ! 
    369429   !> @return date structure of julian day 
    370430   !------------------------------------------------------------------- 
    371    ! @code 
    372431   TYPE(TDATE) FUNCTION date__init_nsec(kd_nsec, td_dateo) 
    373432      IMPLICIT NONE 
     
    383442 
    384443   END FUNCTION date__init_nsec 
    385    ! @endcode    
    386    !------------------------------------------------------------------- 
    387    !> @brief This function initiazed date structure form year month day 
    388    !> and optionnaly hour min sec<br/> 
    389    !> optionaly create pseudo julian day with new origin 
    390    ! 
    391    !> @author J.Paul 
    392    !> - Nov, 2013- Initial Version 
    393    ! 
     444   !------------------------------------------------------------------- 
     445   !> @brief This function initialized date structure form year month day 
     446   !> and optionnaly hour min sec.<br/> 
     447   !> @details 
     448   !> Optionaly create pseudo julian day with new origin. 
     449   !> 
     450   !> @author J.Paul 
     451   !> @date November, 2013 - Initial Version 
     452   !> 
    394453   !> @param[in] id_year 
    395454   !> @param[in] id_month 
     
    398457   !> @param[in] id_min 
    399458   !> @param[in] id_sec 
    400    !> @param[in] td_dateo : new date origin for pseudo julian day 
     459   !> @param[in] td_dateo new date origin for pseudo julian day 
    401460   ! 
    402461   !> @return date structure of year month day 
    403462   !------------------------------------------------------------------- 
    404    ! @code 
    405463   TYPE(TDATE) FUNCTION date__init_ymd(id_year, id_month, id_day,  & 
    406464   &                                   id_hour, id_min, id_sec, & 
     
    450508 
    451509   END FUNCTION date__init_ymd 
    452    ! @endcode 
    453    !------------------------------------------------------------------- 
    454    !> @brief This function compute number of day between two dates<br/>  
     510   !------------------------------------------------------------------- 
     511   !> @brief This function compute number of day between two dates:  
    455512   !> nday= date1 - date2 
    456513   ! 
    457514   !> @author J.Paul 
    458    !> - Nov, 2013- Initial Version 
    459    ! 
    460    !> @param[in] td_date1 : first date strutcutre 
    461    !> @param[in] td_date2 : second date strutcutre 
     515   !> @date November, 2013 - Initial Version 
     516   ! 
     517   !> @param[in] td_date1 first date strutcutre 
     518   !> @param[in] td_date2 second date strutcutre 
    462519   !> @return nday 
    463520   !------------------------------------------------------------------- 
    464    ! @code 
    465    REAL(sp) FUNCTION date__diffdate(td_date1, td_date2) 
     521   REAL(dp) FUNCTION date__diffdate(td_date1, td_date2) 
    466522      IMPLICIT NONE 
    467523        
     
    475531      CALL date__check(td_date2)    
    476532 
    477       date__diffdate = td_date1%r_jd - td_date2%r_jd 
     533      date__diffdate = td_date1%d_jd - td_date2%d_jd 
    478534 
    479535   END FUNCTION date__diffdate 
    480    ! @endcode 
    481    !------------------------------------------------------------------- 
    482    !> @brief This function substract nday to a date  
     536   !------------------------------------------------------------------- 
     537   !> @brief This function substract nday to a date: 
    483538   !> date2 = date1 - nday 
    484539   !> 
    485540   !> @author J.Paul 
    486    !> - Nov, 2013- Initial Version 
    487    ! 
    488    !> @param[in] td_date : date strutcutre 
    489    !> @param[in] rd_nday : number of day 
     541   !> @date November, 2013 - Initial Version 
     542   ! 
     543   !> @param[in] td_date   date strutcutre 
     544   !> @param[in] dd_nday  number of day 
    490545   !> @return date strutcutre of date - nday 
    491546   !------------------------------------------------------------------- 
    492    ! @code 
    493    TYPE(TDATE) FUNCTION date__subnday(td_date, rd_nday) 
     547   TYPE(TDATE) FUNCTION date__subnday(td_date, dd_nday) 
    494548      IMPLICIT NONE 
    495549      !Argument 
    496550      TYPE(TDATE), INTENT(IN) :: td_date 
    497       REAL(sp),    INTENT(IN) :: rd_nday 
     551      REAL(dp),    INTENT(IN) :: dd_nday 
    498552      !---------------------------------------------------------------- 
    499553 
     
    501555      CALL date__check(td_date)    
    502556 
    503       date__subnday=date__init_jd(td_date%r_jd-rd_nday) 
     557      date__subnday=date__init_jd(td_date%d_jd-dd_nday) 
    504558 
    505559   END FUNCTION date__subnday 
    506    ! @endcode 
    507    !------------------------------------------------------------------- 
    508    !> @brief This function add nday to a date   
     560   !------------------------------------------------------------------- 
     561   !> @brief This function add nday to a date: 
    509562   !> date2 = date1 + nday 
    510563   !> 
    511564   !> @author J.Paul 
    512    !> - Nov, 2013- Initial Version 
    513    ! 
    514    !> @param[in] td_date : date strutcutre 
    515    !> @param[in] rd_nday : number of day 
     565   !> @date November, 2013 - Initial Version 
     566   ! 
     567   !> @param[in] td_date   date strutcutre 
     568   !> @param[in] dd_nday  number of day 
    516569   !> @return date strutcutre of date + nday 
    517570   !------------------------------------------------------------------- 
    518    ! @code 
    519    TYPE(TDATE) FUNCTION date__addnday(td_date, rd_nday) 
     571   TYPE(TDATE) FUNCTION date__addnday(td_date, dd_nday) 
    520572      IMPLICIT NONE 
    521573      !Argument 
    522574      TYPE(TDATE), INTENT(IN) :: td_date 
    523       REAL(sp),    INTENT(IN) :: rd_nday 
     575      REAL(dp),    INTENT(IN) :: dd_nday 
    524576      !---------------------------------------------------------------- 
    525577 
     
    527579      CALL date__check(td_date)    
    528580 
    529       date__addnday=date__init_jd(td_date%r_jd+rd_nday) 
     581      date__addnday=date__init_jd(td_date%d_jd+dd_nday) 
    530582 
    531583   END FUNCTION date__addnday 
    532    ! @endcode 
    533584   !------------------------------------------------------------------- 
    534585   !> @brief This subroutine compute last day of the month 
    535586   ! 
    536587   !> @author J.Paul 
    537    !> - Nov, 2013- Initial Version 
    538    ! 
    539    !> @param[inout] td_date : date strutcutre 
    540    !------------------------------------------------------------------- 
    541    ! @code 
     588   !> @date November, 2013 - Initial Version 
     589   ! 
     590   !> @param[in] td_date  date strutcutre 
     591   !> @return last day of the month 
     592   !------------------------------------------------------------------- 
    542593   INTEGER(i4) FUNCTION date__lastday(td_date) 
    543594      IMPLICIT NONE 
     
    562613 
    563614   END FUNCTION date__lastday 
    564    ! @endcode    
    565    !------------------------------------------------------------------- 
    566    !> @brief This subroutine compute julian day from year month day 
    567    !> 
    568    !> @author J.Paul 
    569    !> - Nov, 2013- Initial Version 
    570    ! 
    571    !> @param[inout] td_date : date strutcutre 
    572    !> @return julian day in the date strutcutre 
    573    !------------------------------------------------------------------- 
    574    ! @code 
     615   !------------------------------------------------------------------- 
     616   !> @brief This subroutine compute julian day from year month day , and fill 
     617   !> input date strutcutre. 
     618   !> 
     619   !> @author J.Paul 
     620   !> @date November, 2013 - Initial Version 
     621   ! 
     622   !> @param[inout] td_date   date strutcutre 
     623   !------------------------------------------------------------------- 
    575624   SUBROUTINE date__ymd2jd(td_date) 
    576625      IMPLICIT NONE 
     
    579628 
    580629      ! local variable 
    581       REAL(sp) :: rl_standard_jd 
    582       REAL(sp) :: rl_frac 
    583       !---------------------------------------------------------------- 
    584  
    585       rl_standard_jd= td_date%i_day - 32075                               &  
     630      REAL(dp) :: dl_standard_jd 
     631      REAL(dp) :: dl_frac 
     632      !---------------------------------------------------------------- 
     633 
     634      dl_standard_jd= td_date%i_day - 32075                               &  
    586635          & + 1461 * (td_date%i_year + 4800 - (14 - td_date%i_month)/12)/4  & 
    587636          & + 367 * (td_date%i_month - 2 + (14 - td_date%i_month)/12*12)/12 & 
    588637          & - 3 * ((td_date%i_year + 4900 - (14 - td_date%i_month)/12)/100)/4 
    589638       
    590       td_date%r_jd = rl_standard_jd-2400001 ! origin : 17 nov 1858 h00m00s00 
     639      td_date%d_jd = dl_standard_jd-2400001 ! origin : 17 nov 1858 h00m00s00 
    591640 
    592641      ! compute fraction of day 
    593       rl_frac=date__hms2jd(td_date) 
    594  
    595       td_date%r_jd = td_date%r_jd + rl_frac 
    596  
    597       td_date%k_jdsec = date__jd2sec( td_date%r_jd )  
     642      dl_frac=date__hms2jd(td_date) 
     643 
     644      td_date%d_jd = td_date%d_jd + dl_frac 
     645 
     646      td_date%k_jdsec = date__jd2sec( td_date%d_jd )  
    598647 
    599648   END SUBROUTINE date__ymd2jd 
    600    ! @endcode    
    601    !------------------------------------------------------------------- 
    602    !> @brief This subroutine compute year month day from julian day 
    603    !> 
    604    !> @author J.Paul 
    605    !> - Nov, 2013- Initial Version 
    606    ! 
    607    !> @param[inout] td_date : date strutcutre 
    608    !> @return year month day in the date strutcutre 
    609    !------------------------------------------------------------------- 
    610    ! @code 
     649   !------------------------------------------------------------------- 
     650   !> @brief This subroutine compute year month day from julian day, and fill 
     651   !> input date strutcutre. 
     652   !> 
     653   !> @author J.Paul 
     654   !> @date November, 2013 - Initial Version 
     655   ! 
     656   !> @param[inout] td_date   date strutcutre 
     657   !------------------------------------------------------------------- 
    611658   SUBROUTINE date__jd2ymd(td_date) 
    612659      IMPLICIT NONE 
     
    615662 
    616663      ! local variable 
    617       REAL(sp) :: rl_frac 
    618664      INTEGER(i4) :: il_standard_jd 
    619665      INTEGER(i4) :: il_temp1 
     
    624670      CALL date__check(td_date)    
    625671 
    626       il_standard_jd=INT( td_date%r_jd+2400001, i4 ) 
    627       rl_frac=(td_date%r_jd+2400001)-il_standard_jd 
     672      il_standard_jd=INT( td_date%d_jd+2400001, i4 ) 
    628673 
    629674      il_temp1=il_standard_jd + 68569 
     
    645690 
    646691   END SUBROUTINE date__jd2ymd 
    647    ! @endcode 
    648692   !------------------------------------------------------------------- 
    649693   !> @brief This subroutine compute julian day from pseudo julian day  
    650    !> with new date origin<br/> 
    651    !> 
    652    !> @author J.Paul 
    653    !> - Nov, 2013- Initial Version 
    654    ! 
    655    !> @param[inout] td_date : date 
    656    !> @return julian day inside input date structure 
    657    !------------------------------------------------------------------- 
    658    ! @code 
     694   !> with new date origin, and fill input date strutcutre. 
     695   !> 
     696   !> @author J.Paul 
     697   !> @date November, 2013 - Initial Version 
     698   ! 
     699   !> @param[inout] td_date   date 
     700   !> @param[in]    td_dateo  new date origin for pseudo julian day 
     701   !------------------------------------------------------------------- 
    659702   SUBROUTINE date__jc2jd(td_date, td_dateo) 
    660703      IMPLICIT NONE 
     
    665708      ! local variable 
    666709      TYPE(TDATE) :: tl_date 
    667       REAL(sp)    :: rl_nday 
     710      REAL(dp)    :: dl_nday 
    668711      !---------------------------------------------------------------- 
    669712      ! origin julian day 
    670713      tl_date=date_init(1858,11,17) 
    671714 
    672       rl_nday=td_dateo-tl_date 
     715      dl_nday=td_dateo-tl_date 
    673716 
    674717      ! compute julian day 
    675       td_date%r_jd = td_date%r_jc + rl_nday 
     718      td_date%d_jd = td_date%d_jc + dl_nday 
    676719      ! compute number of second since julian day origin 
    677       td_date%k_jdsec = date__jd2sec(td_date%r_jd) 
     720      td_date%k_jdsec = date__jd2sec(td_date%d_jd) 
    678721 
    679722   END SUBROUTINE date__jc2jd 
    680    ! @endcode    
    681    !------------------------------------------------------------------- 
    682    !> @brief This subroutine compute pseudo julian day with new date origin<br/> 
    683    !>  default new origin is CNES julian day origin: 1950/01/01 
    684    !> 
    685    !> @author J.Paul 
    686    !> - Nov, 2013- Initial Version 
    687    ! 
    688    !> @param[inout] td_date : date 
    689    !> @param[in] td_dateo : new origin date 
    690    !> @return pseudo julian day inside input date structure 
    691    !------------------------------------------------------------------- 
    692    ! @code 
     723   !------------------------------------------------------------------- 
     724   !> @brief This subroutine compute pseudo julian day with new date origin, and 
     725   !> fill input date structure.<br/> 
     726   !>  default new origin is CNES julian day origin: 1950-01-01 00:00:00 
     727   !> 
     728   !> @author J.Paul 
     729   !> @date November, 2013 - Initial Version 
     730   ! 
     731   !> @param[inout] td_date   date 
     732   !> @param[in] td_dateo     new origin date 
     733   !------------------------------------------------------------------- 
    693734   SUBROUTINE date__jd2jc(td_date, td_dateo) 
    694735      IMPLICIT NONE 
     
    701742      !---------------------------------------------------------------- 
    702743      IF( PRESENT(td_dateo) )THEN 
    703          td_date%r_jc=td_date%r_jd-td_dateo%r_jd 
     744         td_date%d_jc=td_date%d_jd-td_dateo%d_jd 
    704745      ELSE 
    705746         ! CNES julian day origin 
     
    710751         CALL date__ymd2jd(tl_dateo) 
    711752 
    712          td_date%r_jc = td_date%r_jd-tl_dateo%r_jd 
    713       ENDIF 
    714  
    715       td_date%k_jcsec = date__jd2sec(td_date%r_jc) 
     753         td_date%d_jc = td_date%d_jd-tl_dateo%d_jd 
     754      ENDIF 
     755 
     756      td_date%k_jcsec = date__jd2sec(td_date%d_jc) 
    716757 
    717758   END SUBROUTINE date__jd2jc 
    718    ! @endcode    
    719    !------------------------------------------------------------------- 
    720    !> @brief This subroutine compute the day of week from julian day<br/> 
     759   !------------------------------------------------------------------- 
     760   !> @brief This subroutine compute the day of week from julian day, and fill 
     761   !> input date structure.<br/> 
    721762   !>  days   : Sunday Monday Tuesday Wednesday Thursday Friday Saturday<br/> 
    722763   !>  numday : 0      1      2       3         4        5      6<br/> 
    723764   !> 
    724765   !> @author J.Paul 
    725    !> - Nov, 2013- Initial Version 
    726    ! 
    727    !> @param[inout] td_date : date strutcutre 
    728    !> @return day of week inside input date structure  
    729    !------------------------------------------------------------------- 
    730    ! @code 
     766   !> @date November, 2013 - Initial Version 
     767   ! 
     768   !> @param[inout] td_date   date strutcutre 
     769   !------------------------------------------------------------------- 
    731770   SUBROUTINE date__jd2dow(td_date) 
    732771      IMPLICIT NONE 
     
    735774      !---------------------------------------------------------------- 
    736775 
    737       td_date%i_dow=MOD((INT(AINT(td_date%r_jd))+3),7) 
     776      td_date%i_dow=MOD((INT(AINT(td_date%d_jd))+3),7) 
    738777 
    739778   END SUBROUTINE date__jd2dow 
    740    ! @endcode    
    741779   !------------------------------------------------------------------- 
    742780   !> @brief This function compute fraction of a day from  
    743    !> hour, minute, second  
    744    !> 
    745    !> @author J.Paul 
    746    !> - Nov, 2013- Initial Version 
    747    ! 
    748    !> @param[in] td_date : date strutcutre 
     781   !> hour, minute, second.  
     782   !> 
     783   !> @author J.Paul 
     784   !> @date November, 2013 - Initial Version 
     785   ! 
     786   !> @param[in] td_date   date strutcutre 
    749787   !> @return fraction of the day 
    750788   !------------------------------------------------------------------- 
    751    ! @code 
    752    REAL(sp) FUNCTION date__hms2jd(td_date) 
     789   REAL(dp) FUNCTION date__hms2jd(td_date) 
    753790      IMPLICIT NONE 
    754791      ! Argument    
     
    757794 
    758795      !  compute real seconds 
    759       date__hms2jd = REAL( td_date%i_sec, sp )    
     796      date__hms2jd = REAL( td_date%i_sec, dp )    
    760797      !  compute real minutes 
    761       date__hms2jd = REAL( td_date%i_min, sp ) + date__hms2jd/60.0 
     798      date__hms2jd = REAL( td_date%i_min, dp ) + date__hms2jd/60.0 
    762799      !  compute real hours 
    763       date__hms2jd = REAL( td_date%i_hour, sp ) + date__hms2jd/60.0 
     800      date__hms2jd = REAL( td_date%i_hour, dp ) + date__hms2jd/60.0 
    764801      !  julian fraction of a day 
    765802      date__hms2jd = date__hms2jd/24.0 
    766803 
    767804   END FUNCTION date__hms2jd 
    768    ! @endcode  
    769    !------------------------------------------------------------------- 
    770    !> @brief This function compute hour, minute, second from julian  
    771    !> fraction 
    772    !> 
    773    !> @author J.Paul 
    774    !> - Nov, 2013- Initial Version 
    775    ! 
    776    !> @param[in] td_date : date strutcutre 
    777    !> @return date strutcutre 
    778    !------------------------------------------------------------------- 
    779    ! @code 
     805   !------------------------------------------------------------------- 
     806   !> @brief This subroutine compute hour, minute, second from julian  
     807   !> fraction, and fill date structure. 
     808   !> 
     809   !> @author J.Paul 
     810   !> @date November, 2013 - Initial Version 
     811   ! 
     812   !> @param[inout] td_date   date strutcutre 
     813   !------------------------------------------------------------------- 
    780814   SUBROUTINE date__jd2hms(td_date) 
    781815      IMPLICIT NONE 
     
    784818 
    785819      !local variable 
    786       REAL(sp) :: rl_fract 
    787       !---------------------------------------------------------------- 
    788  
    789       rl_fract=(td_date%r_jd)-AINT(td_date%r_jd) 
     820      REAL(dp) :: dl_fract 
     821      !---------------------------------------------------------------- 
     822 
     823      dl_fract=(td_date%d_jd)-AINT(td_date%d_jd) 
    790824      !  compute hour 
    791       td_date%i_hour = INT( rl_fract * 24.0, i4 ) 
    792       rl_fract = ( rl_fract - REAL( td_date%i_hour, sp ) / 24.0) * 24.0 
     825      td_date%i_hour = INT( dl_fract * 24.0, i4 ) 
     826      dl_fract = ( dl_fract - REAL( td_date%i_hour, dp ) / 24.0) * 24.0 
    793827      !  compute minute 
    794       td_date%i_min = INT( rl_fract * 60.0, i4 ) 
    795       rl_fract = ( rl_fract - REAL( td_date%i_min, sp ) / 60.0) * 60.0 
     828      td_date%i_min = INT( dl_fract * 60.0, i4 ) 
     829      dl_fract = ( dl_fract - REAL( td_date%i_min, dp ) / 60.0) * 60.0 
    796830      !  compute second 
    797       td_date%i_sec = NINT( rl_fract * 60.0, i4 ) 
     831      td_date%i_sec = NINT( dl_fract * 60.0, i4 ) 
    798832 
    799833   END SUBROUTINE date__jd2hms 
    800    ! @endcode    
    801834   !------------------------------------------------------------------- 
    802835   !> @brief This subroutine check date express in date structure 
    803836   !> 
    804837   !> @author J.Paul 
    805    !> - Nov, 2013- Initial Version 
    806    ! 
    807    !> @param[in] td_date : date strutcutre 
    808    !------------------------------------------------------------------- 
    809    ! @code 
     838   !> @date November, 2013 - Initial Version 
     839   ! 
     840   !> @param[in] td_date   date strutcutre 
     841   !------------------------------------------------------------------- 
    810842   SUBROUTINE date__check(td_date) 
    811843      IMPLICIT NONE 
     
    819851      !---------------------------------------------------------------- 
    820852 
     853      ! init 
     854      il_status=0 
     855 
    821856      ! check year 
    822857      IF( td_date%i_year < 1858_i4 .OR. td_date%i_year > 39999_i4 )THEN 
     858         il_status=il_status+1 
    823859         WRITE(cl_msg,*) "year ",td_date%i_year," out of range" 
    824860         CALL logger_error(cl_msg) 
    825          CALL fct_err(il_status) 
    826861      ENDIF 
    827862      ! check month 
    828863      IF( td_date%i_month < 1_i4 .OR. td_date%i_month > 12_i4 )THEN 
     864         il_status=il_status+1 
    829865         WRITE(cl_msg,*) "month ",td_date%i_month," out of range" 
    830866         CALL logger_error(cl_msg) 
    831          CALL fct_err(il_status) 
    832867      ENDIF 
    833868      ! check day 
    834869      il_lastday=date__lastday(td_date) 
    835870      IF( td_date%i_day < 1_i4 .OR. td_date%i_day > il_lastday )THEN 
     871         il_status=il_status+1 
    836872         WRITE(cl_msg,*) "day ",td_date%i_day," out of range" 
    837873         CALL logger_error(cl_msg) 
    838          CALL fct_err(il_status) 
    839874      ENDIF 
    840875      ! check hour 
    841876      IF( td_date%i_hour < 0_i4 .OR. td_date%i_hour > 23_i4 )THEN 
     877         il_status=il_status+1 
    842878         WRITE(cl_msg,*) "hour ",td_date%i_hour," out of range" 
    843879         CALL logger_error(cl_msg) 
    844          CALL fct_err(il_status) 
    845880      ENDIF 
    846881      ! check minutes 
    847882      IF( td_date%i_min < 0_i4 .OR. td_date%i_min > 59_i4 )THEN 
     883         il_status=il_status+1 
    848884         WRITE(cl_msg,*) "minutes ",td_date%i_min," out of range" 
    849885         CALL logger_error(cl_msg) 
    850          CALL fct_err(il_status) 
    851886      ENDIF    
    852887      ! check seconds 
    853888      IF( td_date%i_sec < 0_i4 .OR. td_date%i_sec > 59_i4 )THEN 
     889         il_status=il_status+1 
    854890         WRITE(cl_msg,*) "seconds ",td_date%i_sec," out of range" 
    855891         CALL logger_error(cl_msg) 
    856          CALL fct_err(il_status) 
    857892      ENDIF 
    858893 
    859894      ! check julian day 
    860       IF( td_date%r_jd < 0_sp .OR. td_date%r_jd > 782028_sp )THEN 
    861          WRITE(cl_msg,*) "julian day ",td_date%r_jd," out of range" 
     895      IF( td_date%d_jd < 0_sp .OR. td_date%d_jd > 782028_sp )THEN 
     896         il_status=il_status+1 
     897         WRITE(cl_msg,*) "julian day ",td_date%d_jd," out of range" 
    862898         CALL logger_error(cl_msg) 
    863          CALL fct_err(il_status) 
     899      ENDIF 
     900 
     901      IF( il_status/= 0 )THEN 
     902         WRITE(cl_msg,*) " date error" 
     903         CALL logger_fatal(cl_msg) 
    864904      ENDIF 
    865905 
    866906   END SUBROUTINE date__check 
    867    ! @endcode    
    868    !------------------------------------------------------------------- 
    869    !> @brief This subroutine adjust date 
    870    !> 
    871    !> @author J.Paul 
    872    !> - Nov, 2013- Initial Version 
    873    ! 
    874    !> @param[inout] td_date : date strutcutre 
    875    !------------------------------------------------------------------- 
    876    ! @code 
     907   !------------------------------------------------------------------- 
     908   !> @brief This subroutine adjust date (correct hour, minutes, and seconds 
     909   !> value if need be) 
     910   !> 
     911   !> @author J.Paul 
     912   !> @date November, 2013 - Initial Version 
     913   ! 
     914   !> @param[inout] td_date   date strutcutre 
     915   !------------------------------------------------------------------- 
    877916   SUBROUTINE date__adjust(td_date) 
    878917      IMPLICIT NONE 
     
    893932      IF( td_date%i_hour == 24 )THEN 
    894933         td_date%i_hour=0 
    895          td_date=date__addnday(td_date,1._sp) 
     934         td_date=date__addnday(td_date,1._dp) 
    896935      ENDIF 
    897936 
    898937   END SUBROUTINE date__adjust 
    899    ! @endcode    
    900938   !------------------------------------------------------------------- 
    901939   !> @brief This function convert julian day in seconds 
    902    !> since julian day origin 
    903    !> @author J.Paul 
    904    !> - Nov, 2013- Initial Version 
    905    ! 
    906    !> @param[in] td_date : date strutcutre 
     940   !> since julian day origin. 
     941   !> @author J.Paul 
     942   !> @date November, 2013 - Initial Version 
     943   ! 
     944   !> @param[in] td_date   date strutcutre 
    907945   !> @return number of seconds since julian day origin 
    908946   !------------------------------------------------------------------- 
    909    ! @code 
    910    INTEGER(i8) FUNCTION date__jd2sec(rd_jul) 
    911       IMPLICIT NONE 
    912       ! Argument    
    913       REAL(sp), INTENT(IN) :: rd_jul 
    914       !---------------------------------------------------------------- 
    915  
    916       date__jd2sec = NINT( rd_jul * im_secbyday, i8 ) 
     947   INTEGER(i8) FUNCTION date__jd2sec(dd_jul) 
     948      IMPLICIT NONE 
     949      ! Argument    
     950      REAL(dp), INTENT(IN) :: dd_jul 
     951      !---------------------------------------------------------------- 
     952 
     953      date__jd2sec = NINT( dd_jul * im_secbyday, i8 ) 
    917954 
    918955   END FUNCTION date__jd2sec 
    919    ! @endcode    
    920956   !------------------------------------------------------------------- 
    921957   !> @brief This function convert seconds since julian day origin in  
    922    !> julian day 
    923    !> @author J.Paul 
    924    !> - Nov, 2013- Initial Version 
    925    ! 
    926    !> @param[in] td_date : date strutcutre 
    927    !> @return number of seconds since julian day origin 
    928    !------------------------------------------------------------------- 
    929    ! @code 
    930    REAL(sp) FUNCTION date__sec2jd(kd_nsec) 
     958   !> julian day. 
     959   !> @author J.Paul 
     960   !> @date November, 2013 - Initial Version 
     961   ! 
     962   !> @param[in] kd_nsec   number of second since julian day origin 
     963   !> @return julian day 
     964   !------------------------------------------------------------------- 
     965   REAL(dp) FUNCTION date__sec2jd(kd_nsec) 
    931966      IMPLICIT NONE 
    932967      ! Argument    
     
    934969      !---------------------------------------------------------------- 
    935970 
    936       date__sec2jd = REAL( REAL( kd_nsec , sp ) / im_secbyday, sp ) 
     971      date__sec2jd = REAL( REAL( kd_nsec , dp ) / im_secbyday, dp ) 
    937972 
    938973   END FUNCTION date__sec2jd 
    939    ! @endcode    
    940974END MODULE date 
    941975 
Note: See TracChangeset for help on using the changeset viewer.