source: XIOS/trunk/src/interface/fortran_attr/icontext_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
  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 4.2 KB
Line 
1! * ************************************************************************** *
2! *               Interface auto generated - do not modify                     *
3! * ************************************************************************** *
4#include "xios_fortran_prefix.hpp"
5
6MODULE icontext_attr
7  USE, INTRINSIC :: ISO_C_BINDING
8  USE icontext
9  USE context_interface_attr
10 
11CONTAINS
12 
13  SUBROUTINE xios(set_context_attr)  &
14    ( context_id, output_dir )
15   
16    IMPLICIT NONE
17      TYPE(txios(context))  :: context_hdl
18      CHARACTER(LEN=*), INTENT(IN) ::context_id
19      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_dir
20     
21      CALL xios(get_context_handle)(context_id,context_hdl)
22      CALL xios(set_context_attr_hdl_)   &
23      ( context_hdl, output_dir )
24   
25  END SUBROUTINE xios(set_context_attr)
26 
27  SUBROUTINE xios(set_context_attr_hdl)  &
28    ( context_hdl, output_dir )
29   
30    IMPLICIT NONE
31      TYPE(txios(context)) , INTENT(IN) :: context_hdl
32      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_dir
33     
34      CALL xios(set_context_attr_hdl_)  &
35      ( context_hdl, output_dir )
36   
37  END SUBROUTINE xios(set_context_attr_hdl)
38 
39  SUBROUTINE xios(set_context_attr_hdl_)   &
40    ( context_hdl, output_dir_ )
41   
42    IMPLICIT NONE
43      TYPE(txios(context)) , INTENT(IN) :: context_hdl
44      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: output_dir_
45     
46      IF (PRESENT(output_dir_)) THEN
47        CALL cxios_set_context_output_dir(context_hdl%daddr, output_dir_, len(output_dir_))
48      ENDIF
49     
50     
51   
52  END SUBROUTINE xios(set_context_attr_hdl_)
53 
54  SUBROUTINE xios(get_context_attr)  &
55    ( context_id, output_dir )
56   
57    IMPLICIT NONE
58      TYPE(txios(context))  :: context_hdl
59      CHARACTER(LEN=*), INTENT(IN) ::context_id
60      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_dir
61     
62      CALL xios(get_context_handle)(context_id,context_hdl)
63      CALL xios(get_context_attr_hdl_)   &
64      ( context_hdl, output_dir )
65   
66  END SUBROUTINE xios(get_context_attr)
67 
68  SUBROUTINE xios(get_context_attr_hdl)  &
69    ( context_hdl, output_dir )
70   
71    IMPLICIT NONE
72      TYPE(txios(context)) , INTENT(IN) :: context_hdl
73      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_dir
74     
75      CALL xios(get_context_attr_hdl_)  &
76      ( context_hdl, output_dir )
77   
78  END SUBROUTINE xios(get_context_attr_hdl)
79 
80  SUBROUTINE xios(get_context_attr_hdl_)   &
81    ( context_hdl, output_dir_ )
82   
83    IMPLICIT NONE
84      TYPE(txios(context)) , INTENT(IN) :: context_hdl
85      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: output_dir_
86     
87      IF (PRESENT(output_dir_)) THEN
88        CALL cxios_get_context_output_dir(context_hdl%daddr, output_dir_, len(output_dir_))
89      ENDIF
90     
91     
92   
93  END SUBROUTINE xios(get_context_attr_hdl_)
94 
95  SUBROUTINE xios(is_defined_context_attr)  &
96    ( context_id, output_dir )
97   
98    IMPLICIT NONE
99      TYPE(txios(context))  :: context_hdl
100      CHARACTER(LEN=*), INTENT(IN) ::context_id
101      LOGICAL, OPTIONAL, INTENT(OUT) :: output_dir
102      LOGICAL(KIND=C_BOOL) :: output_dir_tmp
103     
104      CALL xios(get_context_handle)(context_id,context_hdl)
105      CALL xios(is_defined_context_attr_hdl_)   &
106      ( context_hdl, output_dir )
107   
108  END SUBROUTINE xios(is_defined_context_attr)
109 
110  SUBROUTINE xios(is_defined_context_attr_hdl)  &
111    ( context_hdl, output_dir )
112   
113    IMPLICIT NONE
114      TYPE(txios(context)) , INTENT(IN) :: context_hdl
115      LOGICAL, OPTIONAL, INTENT(OUT) :: output_dir
116      LOGICAL(KIND=C_BOOL) :: output_dir_tmp
117     
118      CALL xios(is_defined_context_attr_hdl_)  &
119      ( context_hdl, output_dir )
120   
121  END SUBROUTINE xios(is_defined_context_attr_hdl)
122 
123  SUBROUTINE xios(is_defined_context_attr_hdl_)   &
124    ( context_hdl, output_dir_ )
125   
126    IMPLICIT NONE
127      TYPE(txios(context)) , INTENT(IN) :: context_hdl
128      LOGICAL, OPTIONAL, INTENT(OUT) :: output_dir_
129      LOGICAL(KIND=C_BOOL) :: output_dir__tmp
130     
131      IF (PRESENT(output_dir_)) THEN
132        output_dir__tmp=cxios_is_defined_context_output_dir(context_hdl%daddr)
133        output_dir_=output_dir__tmp
134      ENDIF
135     
136     
137   
138  END SUBROUTINE xios(is_defined_context_attr_hdl_)
139 
140END MODULE icontext_attr
Note: See TracBrowser for help on using the repository browser.