source: XIOS/trunk/src/interface/fortran_attr/calendar_wrapper_interface_attr.F90 @ 549

Last change on this file since 549 was 549, checked in by rlacroix, 6 years ago

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
File size: 4.6 KB
Line 
1! * ************************************************************************** *
2! *               Interface auto generated - do not modify                     *
3! * ************************************************************************** *
4#include "../fortran/xios_fortran_prefix.hpp"
5
6MODULE calendar_wrapper_interface_attr
7  USE, INTRINSIC :: ISO_C_BINDING
8 
9  INTERFACE ! Do not call directly / interface FORTRAN 2003 <-> C99
10   
11   
12    SUBROUTINE cxios_set_calendar_wrapper_start_date(calendar_wrapper_hdl, start_date, start_date_size) BIND(C)
13      USE ISO_C_BINDING
14      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
15      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: start_date
16      INTEGER  (kind = C_INT)     , VALUE        :: start_date_size
17    END SUBROUTINE cxios_set_calendar_wrapper_start_date
18   
19    SUBROUTINE cxios_get_calendar_wrapper_start_date(calendar_wrapper_hdl, start_date, start_date_size) BIND(C)
20      USE ISO_C_BINDING
21      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
22      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: start_date
23      INTEGER  (kind = C_INT)     , VALUE        :: start_date_size
24    END SUBROUTINE cxios_get_calendar_wrapper_start_date
25   
26    FUNCTION cxios_is_defined_calendar_wrapper_start_date(calendar_wrapper_hdl ) BIND(C)
27      USE ISO_C_BINDING
28      LOGICAL(kind=C_BOOL) :: cxios_is_defined_calendar_wrapper_start_date
29      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
30    END FUNCTION cxios_is_defined_calendar_wrapper_start_date
31   
32   
33    SUBROUTINE cxios_set_calendar_wrapper_time_origin(calendar_wrapper_hdl, time_origin, time_origin_size) BIND(C)
34      USE ISO_C_BINDING
35      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
36      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: time_origin
37      INTEGER  (kind = C_INT)     , VALUE        :: time_origin_size
38    END SUBROUTINE cxios_set_calendar_wrapper_time_origin
39   
40    SUBROUTINE cxios_get_calendar_wrapper_time_origin(calendar_wrapper_hdl, time_origin, time_origin_size) BIND(C)
41      USE ISO_C_BINDING
42      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
43      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: time_origin
44      INTEGER  (kind = C_INT)     , VALUE        :: time_origin_size
45    END SUBROUTINE cxios_get_calendar_wrapper_time_origin
46   
47    FUNCTION cxios_is_defined_calendar_wrapper_time_origin(calendar_wrapper_hdl ) BIND(C)
48      USE ISO_C_BINDING
49      LOGICAL(kind=C_BOOL) :: cxios_is_defined_calendar_wrapper_time_origin
50      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
51    END FUNCTION cxios_is_defined_calendar_wrapper_time_origin
52   
53   
54    SUBROUTINE cxios_set_calendar_wrapper_timestep(calendar_wrapper_hdl, timestep) BIND(C)
55      USE ISO_C_BINDING
56      USE IDURATION
57      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
58      TYPE(txios(duration)), VALUE :: timestep
59    END SUBROUTINE cxios_set_calendar_wrapper_timestep
60   
61    SUBROUTINE cxios_get_calendar_wrapper_timestep(calendar_wrapper_hdl, timestep) BIND(C)
62      USE ISO_C_BINDING
63      USE IDURATION
64      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
65      TYPE(txios(duration)) :: timestep
66    END SUBROUTINE cxios_get_calendar_wrapper_timestep
67   
68    FUNCTION cxios_is_defined_calendar_wrapper_timestep(calendar_wrapper_hdl ) BIND(C)
69      USE ISO_C_BINDING
70      LOGICAL(kind=C_BOOL) :: cxios_is_defined_calendar_wrapper_timestep
71      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
72    END FUNCTION cxios_is_defined_calendar_wrapper_timestep
73   
74   
75    SUBROUTINE cxios_set_calendar_wrapper_type(calendar_wrapper_hdl, type, type_size) BIND(C)
76      USE ISO_C_BINDING
77      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
78      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
79      INTEGER  (kind = C_INT)     , VALUE        :: type_size
80    END SUBROUTINE cxios_set_calendar_wrapper_type
81   
82    SUBROUTINE cxios_get_calendar_wrapper_type(calendar_wrapper_hdl, type, type_size) BIND(C)
83      USE ISO_C_BINDING
84      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
85      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: type
86      INTEGER  (kind = C_INT)     , VALUE        :: type_size
87    END SUBROUTINE cxios_get_calendar_wrapper_type
88   
89    FUNCTION cxios_is_defined_calendar_wrapper_type(calendar_wrapper_hdl ) BIND(C)
90      USE ISO_C_BINDING
91      LOGICAL(kind=C_BOOL) :: cxios_is_defined_calendar_wrapper_type
92      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
93    END FUNCTION cxios_is_defined_calendar_wrapper_type
94   
95   
96    END INTERFACE
97 
98END MODULE calendar_wrapper_interface_attr
Note: See TracBrowser for help on using the repository browser.