Ignore:
Timestamp:
01/26/15 14:39:26 (9 years ago)
Author:
rlacroix
Message:

Revised calendar functionalities:

  • the calendar is now configured from a specific calendar child node of the context in the XML configuration file. Example: <calendar type="Gregorian" start_date="2012-03-01 15:00:00" time_origin="2012-02-29 15:00:00" timestep="1h" />
  • the calendar type should now be configured when defining the start time and/or the time origin.
  • the start time and the time origin are now optional, 0000-01-01 00:00:00 will be used by default. It is also possible to define them partially. For example, 2015 and 2014-12 are valid dates corresponding respectively to 2015-01-01 00:00:00 and 2014-12-01 00:00:00.
  • an optional duration offset can be added to the start date and time origin. For example, it's possible to define the date 2015-01-12 12:00:00 as 2015-01-11 + 36h or 2015-01-11 12:00:00 + 1d. The duration format is the same as the time step. Being that the date is optional, it is possible to only use a duration (for example + 42s is the same as 0000-01-01 00:00:00 + 42s). An error will be raised if a duration based on the time step is used before the time step was configured. For example, the following would cause an error: <calendar type="Gregorian" start_date="+ 1ts" /> but <calendar type="Gregorian" start_date="+ 1ts" timestep="0.5h" /> would not.
  • new Fortran interface to define the calendar:
    • xios_define_calendar(type[, timestep, start_date, time_origin]) will create a calendar when none had previously been defined. Only the type argument is mandatory, the rest is optional. Calendar operations on dates and durations are possible as soon as the calendar is created (either using this procedure or directly from the XML configuration file).
    • the following getter and setter procedures are available: xios_set_timestep, xios_set_start_date, xios_set_time_origin, xios_get_calendar_type, xios_get_timestep, xios_get_start_date, xios_get_time_origin.
  • new Fortran interface to interact with the calendar: xios_update_calendar, xios_get_current_date, xios_get_year_length_in_seconds, xios_get_day_length_in_seconds.
  • new Fortran interface for date conversion: xios_date_get_second_of_year, xios_date_get_day_of_year, xios_date_get_fraction_of_year, xios_date_get_second_of_day, xios_date_get_fraction_of_day.
  • two new placeholders are available to format the file name when splitting the output (split_freq_format attribute):
    • %S the number of seconds since the time origin
    • %D the integral number of days since the time origin
Location:
XIOS/trunk/src/interface/fortran
Files:
2 added
4 edited
1 moved

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/fortran/calendar_interface.F90

    r545 r549  
     1#include "xios_fortran_prefix.hpp" 
     2 
    13MODULE CALENDAR_INTERFACE 
    24   USE, INTRINSIC :: ISO_C_BINDING 
    3       
     5 
    46   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 
    5  
    6       SUBROUTINE cxios_create_calendar() BIND(C) 
    7       END SUBROUTINE cxios_create_calendar 
    87 
    98      SUBROUTINE cxios_update_calendar(step) BIND(C) 
     
    1211      END SUBROUTINE cxios_update_calendar 
    1312 
     13      SUBROUTINE cxios_get_current_date(current_date) BIND(C) 
     14         USE IDATE 
     15         TYPE(txios(date))             :: current_date 
     16      END SUBROUTINE cxios_get_current_date 
     17 
     18      INTEGER(kind = C_INT) FUNCTION cxios_get_year_length_in_seconds(year) BIND(C) 
     19         USE ISO_C_BINDING 
     20         INTEGER(kind = C_INT), VALUE :: year 
     21      END FUNCTION cxios_get_year_length_in_seconds 
     22 
     23      INTEGER(kind = C_INT) FUNCTION cxios_get_day_length_in_seconds() BIND(C) 
     24         USE ISO_C_BINDING 
     25      END FUNCTION cxios_get_day_length_in_seconds 
     26 
    1427   END INTERFACE 
    15       
     28 
    1629END MODULE CALENDAR_INTERFACE 
  • XIOS/trunk/src/interface/fortran/date_interface.F90

    r545 r549  
    77      INTEGER(kind = C_INT) :: year, month, day, hour, minute, second 
    88   END TYPE txios(date) 
    9       
     9 
    1010   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 
    1111 
     
    7575      END FUNCTION cxios_date_ge 
    7676 
     77      INTEGER(kind = C_INT) FUNCTION cxios_date_get_second_of_year(date) BIND(C) 
     78         USE ISO_C_BINDING 
     79         IMPORT :: txios(date) 
     80         TYPE(txios(date)), VALUE :: date 
     81      END FUNCTION cxios_date_get_second_of_year 
     82 
     83      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_day_of_year(date) BIND(C) 
     84         USE ISO_C_BINDING 
     85         IMPORT :: txios(date) 
     86         TYPE(txios(date)), VALUE :: date 
     87      END FUNCTION cxios_date_get_day_of_year 
     88 
     89      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_fraction_of_year(date) BIND(C) 
     90         USE ISO_C_BINDING 
     91         IMPORT :: txios(date) 
     92         TYPE(txios(date)), VALUE :: date 
     93      END FUNCTION cxios_date_get_fraction_of_year 
     94 
     95      INTEGER(kind = C_INT) FUNCTION cxios_date_get_second_of_day(date) BIND(C) 
     96         USE ISO_C_BINDING 
     97         IMPORT :: txios(date) 
     98         TYPE(txios(date)), VALUE :: date 
     99      END FUNCTION cxios_date_get_second_of_day 
     100 
     101      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_fraction_of_day(date) BIND(C) 
     102         USE ISO_C_BINDING 
     103         IMPORT :: txios(date) 
     104         TYPE(txios(date)), VALUE :: date 
     105      END FUNCTION cxios_date_get_fraction_of_day 
     106 
    77107   END INTERFACE 
    78       
     108 
    79109END MODULE DATE_INTERFACE 
  • XIOS/trunk/src/interface/fortran/icalendar.F90

    r545 r549  
    33   USE, INTRINSIC :: ISO_C_BINDING 
    44   USE CALENDAR_INTERFACE 
     5   USE ICALENDAR_WRAPPER 
    56   USE IDATE 
    67   USE IDURATION 
     
    910   INTEGER(kind = C_INT), PARAMETER :: D360 = 0 , ALLLEAP = 1 , NOLEAP = 2 , JULIAN = 3 , GREGORIAN = 4 
    1011 
     12   INTERFACE xios(set_start_date) 
     13      MODULE PROCEDURE xios(set_start_date_date), xios(set_start_date_dur) 
     14   END INTERFACE xios(set_start_date) 
     15 
     16   INTERFACE xios(set_time_origin) 
     17      MODULE PROCEDURE xios(set_time_origin_date), xios(set_time_origin_dur) 
     18   END INTERFACE xios(set_time_origin) 
     19 
    1120   CONTAINS ! Fonctions disponibles pour les utilisateurs. 
    1221 
    13    SUBROUTINE xios(set_calendar)(calendar_type, start_date, time_origin, timestep) 
    14       USE ICONTEXT, ONLY : txios(context), xios(get_current_context) 
    15       USE icontext_attr, ONLY : xios(set_context_attr_hdl) 
    16       USE IDATE, ONLY : txios(date) 
    17       USE IDURATION, ONLY : txios(duration) 
    18       IMPLICIT NONE 
    19       CHARACTER(len = *),    OPTIONAL, INTENT(IN) :: calendar_type 
     22   SUBROUTINE xios(define_calendar)(type, timestep, start_date, time_origin) 
     23      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     24      USE icalendar_wrapper_attr, ONLY : xios(set_calendar_wrapper_attr_hdl) 
     25      USE IDURATION, ONLY : txios(duration) 
     26      USE IDATE, ONLY : txios(date) 
     27      IMPLICIT NONE 
     28      CHARACTER(len = *),              INTENT(IN) :: type 
     29      TYPE(txios(duration)), OPTIONAL, INTENT(IN) :: timestep 
    2030      TYPE(txios(date)),     OPTIONAL, INTENT(IN) :: start_date 
    2131      TYPE(txios(date)),     OPTIONAL, INTENT(IN) :: time_origin 
    22       TYPE(txios(duration)), OPTIONAL, INTENT(IN) :: timestep 
    23       TYPE(txios(context)) :: context 
    24  
    25       CALL xios(get_current_context)(context) 
    26  
    27       IF (PRESENT(calendar_type)) THEN 
    28          CALL xios(set_context_attr_hdl)(context, calendar_type=calendar_type) 
    29       END IF 
     32      TYPE(txios(calendar_wrapper)) :: calendar_wrapper 
     33 
     34      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     35 
     36      CALL xios(set_calendar_wrapper_attr_hdl)(calendar_wrapper, type=type) 
     37      IF (PRESENT(timestep)) THEN 
     38         CALL xios(set_calendar_wrapper_attr_hdl)(calendar_wrapper, timestep=timestep) 
     39      END IF 
     40 
     41      CALL xios(create_calendar)(calendar_wrapper) 
     42 
    3043      IF (PRESENT(start_date)) THEN 
    31          CALL xios(set_context_attr_hdl)(context, start_date=start_date) 
     44         CALL xios(set_start_date_hdl)(calendar_wrapper, start_date=start_date) 
    3245      END IF 
    3346      IF (PRESENT(time_origin)) THEN 
    34          CALL xios(set_context_attr_hdl)(context, time_origin=time_origin) 
    35       END IF 
    36       IF (PRESENT(time_origin)) THEN 
    37          CALL xios(set_context_attr_hdl)(context, timestep=timestep) 
    38       END IF 
    39  
    40       CALL cxios_create_calendar() 
    41    END SUBROUTINE xios(set_calendar) 
     47         CALL xios(set_time_origin_hdl)(calendar_wrapper, time_origin=time_origin) 
     48      END IF 
     49   END SUBROUTINE xios(define_calendar) 
     50 
     51   SUBROUTINE xios(get_calendar_type)(calendar_type) 
     52      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     53      USE icalendar_wrapper_attr, ONLY : xios(get_calendar_wrapper_attr_hdl) 
     54      IMPLICIT NONE 
     55      CHARACTER(len = *), INTENT(OUT) :: calendar_type 
     56      TYPE(txios(calendar_wrapper))   :: calendar_wrapper 
     57 
     58      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     59 
     60      CALL xios(get_calendar_wrapper_attr_hdl)(calendar_wrapper, type=calendar_type) 
     61   END SUBROUTINE xios(get_calendar_type) 
    4262 
    4363   SUBROUTINE xios(set_timestep)(timestep) 
    44       USE ICONTEXT, ONLY : txios(context), xios(get_current_context) 
    45       USE icontext_attr, ONLY : xios(set_context_attr_hdl) 
     64      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     65      USE icalendar_wrapper_attr, ONLY : xios(set_calendar_wrapper_attr_hdl) 
    4666      USE IDURATION, ONLY : txios(duration) 
    4767      IMPLICIT NONE 
    4868      TYPE(txios(duration)), INTENT(IN) :: timestep 
    49       TYPE(txios(context)) :: context 
    50  
    51       CALL xios(get_current_context)(context) 
    52  
    53       CALL xios(set_context_attr_hdl)(context, timestep=timestep) 
     69      TYPE(txios(calendar_wrapper))     :: calendar_wrapper 
     70 
     71      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     72 
     73      CALL xios(set_calendar_wrapper_attr_hdl)(calendar_wrapper, timestep=timestep) 
     74 
     75      CALL xios(update_calendar_timestep)(calendar_wrapper) 
    5476   END SUBROUTINE xios(set_timestep) 
    5577 
     78   SUBROUTINE xios(get_timestep)(timestep) 
     79      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     80      USE icalendar_wrapper_attr, ONLY : xios(get_calendar_wrapper_attr_hdl) 
     81      USE IDURATION, ONLY : txios(duration) 
     82      IMPLICIT NONE 
     83      TYPE(txios(duration)), INTENT(OUT) :: timestep 
     84      TYPE(txios(calendar_wrapper))      :: calendar_wrapper 
     85 
     86      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     87 
     88      CALL xios(get_calendar_wrapper_attr_hdl)(calendar_wrapper, timestep=timestep) 
     89   END SUBROUTINE xios(get_timestep) 
     90 
     91   SUBROUTINE xios(set_start_date_date)(start_date) 
     92      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     93      USE IDATE, ONLY : txios(date) 
     94      IMPLICIT NONE 
     95      TYPE(txios(date)), INTENT(IN) :: start_date 
     96      TYPE(txios(calendar_wrapper)) :: calendar_wrapper 
     97 
     98      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     99 
     100      CALL xios(set_start_date_hdl)(calendar_wrapper, start_date) 
     101   END SUBROUTINE xios(set_start_date_date) 
     102 
     103   SUBROUTINE xios(set_start_date_dur)(start_date) 
     104      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     105      USE IDURATION, ONLY : txios(duration) 
     106      USE IDATE, ONLY : txios(date) 
     107      IMPLICIT NONE 
     108      TYPE(txios(duration)), INTENT(IN) :: start_date 
     109      TYPE(txios(calendar_wrapper))     :: calendar_wrapper 
     110      TYPE(txios(date))                 :: start_date_date 
     111 
     112      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     113 
     114      start_date_date = start_date 
     115      CALL xios(set_start_date_hdl)(calendar_wrapper, start_date_date) 
     116   END SUBROUTINE xios(set_start_date_dur) 
     117 
     118   SUBROUTINE xios(get_start_date)(start_date) 
     119      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     120      USE IDATE, ONLY : txios(date) 
     121      IMPLICIT NONE 
     122      TYPE(txios(date)), INTENT(OUT) :: start_date 
     123      TYPE(txios(calendar_wrapper))  :: calendar_wrapper 
     124 
     125      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     126 
     127      CALL xios(get_start_date_hdl)(calendar_wrapper, start_date) 
     128   END SUBROUTINE xios(get_start_date) 
     129 
     130   SUBROUTINE xios(set_time_origin_date)(time_origin) 
     131      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     132      USE IDATE, ONLY : txios(date) 
     133      IMPLICIT NONE 
     134      TYPE(txios(date)), INTENT(IN) :: time_origin 
     135      TYPE(txios(calendar_wrapper)) :: calendar_wrapper 
     136 
     137      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     138 
     139      CALL xios(set_time_origin_hdl)(calendar_wrapper, time_origin) 
     140   END SUBROUTINE xios(set_time_origin_date) 
     141 
     142   SUBROUTINE xios(set_time_origin_dur)(time_origin) 
     143      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     144      USE IDURATION, ONLY : txios(duration) 
     145      USE IDATE, ONLY : txios(date) 
     146      IMPLICIT NONE 
     147      TYPE(txios(duration)), INTENT(IN) :: time_origin 
     148      TYPE(txios(calendar_wrapper))     :: calendar_wrapper 
     149      TYPE(txios(date))                 :: time_origin_date 
     150 
     151      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     152 
     153      time_origin_date = time_origin 
     154      CALL xios(set_time_origin_hdl)(calendar_wrapper, time_origin_date) 
     155   END SUBROUTINE xios(set_time_origin_dur) 
     156 
     157   SUBROUTINE xios(get_time_origin)(time_origin) 
     158      USE ICALENDAR_WRAPPER, ONLY : txios(calendar_wrapper), xios(get_default_calendar_wrapper_handle) 
     159      USE IDATE, ONLY : txios(date) 
     160      IMPLICIT NONE 
     161      TYPE(txios(date)), INTENT(OUT) :: time_origin 
     162      TYPE(txios(calendar_wrapper))  :: calendar_wrapper 
     163 
     164      CALL xios(get_default_calendar_wrapper_handle)(calendar_wrapper) 
     165 
     166      CALL xios(get_time_origin_hdl)(calendar_wrapper, time_origin) 
     167   END SUBROUTINE xios(get_time_origin) 
     168 
    56169   SUBROUTINE xios(update_calendar)(step) 
    57170      IMPLICIT NONE 
    58171      INTEGER, INTENT(IN) :: step 
    59        
     172 
    60173      IF (step < 0) THEN 
    61174         PRINT *, "L'argument 'step' ne peut être négatif" 
     
    65178   END SUBROUTINE xios(update_calendar) 
    66179 
     180   SUBROUTINE xios(get_current_date)(current_date) 
     181      USE IDATE, ONLY : txios(date) 
     182      IMPLICIT NONE 
     183      TYPE(txios(date)), INTENT(OUT) :: current_date 
     184 
     185      CALL cxios_get_current_date(current_date) 
     186   END SUBROUTINE xios(get_current_date) 
     187 
     188   FUNCTION xios(get_year_length_in_seconds)(year) RESULT(res) 
     189      IMPLICIT NONE 
     190      INTEGER(kind = C_INT), INTENT(IN) :: year 
     191      INTEGER(kind = C_INT) :: res 
     192 
     193      res = cxios_get_year_length_in_seconds(year) 
     194   END FUNCTION xios(get_year_length_in_seconds) 
     195 
     196   FUNCTION xios(get_day_length_in_seconds)() RESULT(res) 
     197      IMPLICIT NONE 
     198      INTEGER(kind = C_INT) :: res 
     199 
     200      res = cxios_get_day_length_in_seconds() 
     201   END FUNCTION xios(get_day_length_in_seconds) 
     202 
    67203END MODULE ICALENDAR 
  • XIOS/trunk/src/interface/fortran/idate.F90

    r545 r549  
    3737   END INTERFACE 
    3838 
     39   INTERFACE ASSIGNMENT(=) 
     40      MODULE PROCEDURE xios(date_assign_duration) 
     41   END INTERFACE 
     42 
    3943   CONTAINS ! Fonctions disponibles pour les utilisateurs. 
    4044 
     
    140144   END FUNCTION xios(date_ge) 
    141145 
     146   SUBROUTINE xios(date_assign_duration)(date, dur) 
     147      USE DATE_INTERFACE, only : txios(date) 
     148      USE IDURATION, only : txios(duration) 
     149      IMPLICIT NONE 
     150      TYPE(txios(date)), INTENT(OUT) :: date 
     151      TYPE(txios(duration)), INTENT(IN) :: dur 
     152 
     153      date = txios(date)(0, 1, 1, 0, 0, 0) + dur 
     154   END SUBROUTINE xios(date_assign_duration) 
     155 
     156   FUNCTION xios(date_get_second_of_year)(date) RESULT(res) 
     157      USE DATE_INTERFACE, only : txios(date) 
     158      IMPLICIT NONE 
     159      TYPE(txios(date)), INTENT(OUT) :: date 
     160      INTEGER(kind = C_INT) :: res 
     161 
     162      res = cxios_date_get_second_of_year(date) 
     163   END FUNCTION xios(date_get_second_of_year) 
     164 
     165   FUNCTION xios(date_get_day_of_year)(date) RESULT(res) 
     166      USE DATE_INTERFACE, only : txios(date) 
     167      IMPLICIT NONE 
     168      TYPE(txios(date)), INTENT(OUT) :: date 
     169      REAL(kind = C_DOUBLE) :: res 
     170 
     171      res = cxios_date_get_day_of_year(date) 
     172   END FUNCTION xios(date_get_day_of_year) 
     173 
     174   FUNCTION xios(date_get_fraction_of_year)(date) RESULT(res) 
     175      USE DATE_INTERFACE, only : txios(date) 
     176      IMPLICIT NONE 
     177      TYPE(txios(date)), INTENT(OUT) :: date 
     178      REAL(kind = C_DOUBLE) :: res 
     179 
     180      res = cxios_date_get_fraction_of_year(date) 
     181   END FUNCTION xios(date_get_fraction_of_year) 
     182 
     183   FUNCTION xios(date_get_second_of_day)(date) RESULT(res) 
     184      USE DATE_INTERFACE, only : txios(date) 
     185      IMPLICIT NONE 
     186      TYPE(txios(date)), INTENT(OUT) :: date 
     187      INTEGER(kind = C_INT) :: res 
     188 
     189      res = cxios_date_get_second_of_day(date) 
     190   END FUNCTION xios(date_get_second_of_day) 
     191 
     192   FUNCTION xios(date_get_fraction_of_day)(date) RESULT(res) 
     193      USE DATE_INTERFACE, only : txios(date) 
     194      IMPLICIT NONE 
     195      TYPE(txios(date)), INTENT(OUT) :: date 
     196      REAL(kind = C_DOUBLE) :: res 
     197 
     198      res = cxios_date_get_fraction_of_day(date) 
     199   END FUNCTION xios(date_get_fraction_of_day) 
     200 
    142201END MODULE IDATE 
  • XIOS/trunk/src/interface/fortran/ixios.F90

    r545 r549  
    33MODULE XIOS 
    44 
    5 USE icalendar, ONLY : xios(set_calendar), xios(set_timestep), xios(update_calendar) 
     5USE icalendar, ONLY : xios(define_calendar), xios(set_timestep), xios(set_start_date), xios(set_time_origin), & 
     6                      xios(get_calendar_type), xios(get_timestep), xios(get_start_date), xios(get_time_origin), & 
     7                      xios(update_calendar), xios(get_current_date), & 
     8                      xios(get_year_length_in_seconds), xios(get_day_length_in_seconds) 
    69 
    710USE icontext, ONLY : txios(context), xios(get_context_handle), xios(set_current_context),    & 
     
    2427                  xios(date_add_duration), xios(date_sub_duration), xios(date_sub), & 
    2528                  xios(date_eq), xios(date_neq), xios(date_lt), xios(date_le), xios(date_gt), xios(date_ge), & 
     29                  xios(date_get_second_of_year), xios(date_get_day_of_year), xios(date_get_fraction_of_year), & 
     30                  xios(date_get_second_of_day), xios(date_get_fraction_of_day), & 
    2631                  OPERATOR(+), OPERATOR(-), & 
    27                   OPERATOR(==), OPERATOR(/=), OPERATOR(<), OPERATOR(<=), OPERATOR(>), OPERATOR(>=) 
     32                  OPERATOR(==), OPERATOR(/=), OPERATOR(<), OPERATOR(<=), OPERATOR(>), OPERATOR(>=), & 
     33                  ASSIGNMENT(=) 
    2834 
    2935USE idomain, ONLY : txios(domain), txios(domaingroup), xios(get_domain_handle),  & 
     
    200206           xios(field_is_active) 
    201207 
    202  PUBLIC :: xios(set_calendar), xios(set_timestep), xios(update_calendar) 
     208 PUBLIC :: xios(define_calendar), xios(set_timestep), xios(set_start_date), xios(set_time_origin), & 
     209           xios(get_calendar_type), xios(get_timestep), xios(get_start_date), xios(get_time_origin), & 
     210           xios(update_calendar), xios(get_current_date), & 
     211           xios(get_year_length_in_seconds), xios(get_day_length_in_seconds) 
    203212 
    204213 PUBLIC :: xios(year), xios(month), xios(day), xios(hour), xios(minute), xios(second), xios(timestep), & 
     
    208217 PUBLIC :: xios(date_convert_to_seconds), & 
    209218           xios(date_add_duration), xios(date_sub_duration), xios(date_sub), & 
    210            xios(date_eq), xios(date_neq), xios(date_lt), xios(date_le), xios(date_gt), xios(date_ge) 
     219           xios(date_eq), xios(date_neq), xios(date_lt), xios(date_le), xios(date_gt), xios(date_ge), & 
     220           xios(date_get_second_of_year), xios(date_get_day_of_year), xios(date_get_fraction_of_year), & 
     221           xios(date_get_second_of_day), xios(date_get_fraction_of_day) 
    211222 
    212223 PUBLIC :: OPERATOR(+), OPERATOR(-), OPERATOR(*), & 
    213            OPERATOR(==), OPERATOR(/=), OPERATOR(<), OPERATOR(<=), OPERATOR(>), OPERATOR(>=) 
     224           OPERATOR(==), OPERATOR(/=), OPERATOR(<), OPERATOR(<=), OPERATOR(>), OPERATOR(>=), & 
     225           ASSIGNMENT(=) 
    214226 
    215227 PUBLIC :: xios(getVar) 
Note: See TracChangeset for help on using the changeset viewer.