Ignore:
Timestamp:
02/10/15 14:23:02 (9 years ago)
Author:
rlacroix
Message:

Add a new user defined calendar type.

A new calendar type "user_defined" is now available. This allows the users to create a custom calendar that we can configured to be suitable for planets other than the Earth.

An user defined calendar is always defined by two mandatory attributes:

  • day_length: the duration of a day, in seconds
  • and either:
    • month_length: an array containing the duration of each month, in days (the number of elements in the array is the number of months in a year)
    • or year_length: the duration of a year, in seconds (in that case, the calendar does not have months).

If the calendar has months (i.e. month_length attribute is set) and only in that case, it is possible to define leap years in order to compensate for the duration of an astronomical year not being a multiple of the day length. The leap years are defined by two mandatory attributes:

  • leap_year_month: the month to which the extra day will be added in case of leap year, expressed as an integer number in the range [1, numberOfMonths]
  • and leap_year_drift: the fraction of a day representing the yearly drift between the calendar year and the astronomical year, expressed as a real number in the range [0, 1).

Optionally, one can define the leap_year_drift_offset attribute to set the original drift at the beginning of the time origin's year, again expressed as a real number in the range [0, 1). If leap_year_drift_offset + leap_year_drift is greater or equal to 1, then the first year will be a leap year.

For example, the following configuration creates a Gregorian-like calendar:

<calendar type="user_defined" start_date="2012-03-01 15:00:00" time_origin="2012-02-28 15:00:00 + 1d" day_length="86400" month_lengths="(1, 12) [31 28 31 30 31 30 31 31 30 31 30 31]" leap_year_month="2" leap_year_drift="0.25" leap_year_drift_offset="0.75" />

Note that dates attributes must be written differently in the configuration file when using an user defined calendar without months:

  • if the year length is greater than the day length, the input format is year-day hh:min:sec instead of year-month-day hh:min:sec
  • if the day length is greater or equal to the year length, the input format is year hh:min:sec.

In all cases, it is still possible to use the date + duration notation to build a date (with both the date and duration parts being optional).

The Fortran interface has been updated accordingly so that xios_define_calendar can accept the new attributes necessary to define custom calendars.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/interface/fortran_attr/icalendar_wrapper_attr.F90

    r549 r550  
    1212   
    1313  SUBROUTINE xios(set_calendar_wrapper_attr)  & 
    14     ( calendar_wrapper_id, start_date, time_origin, timestep, type ) 
     14    ( calendar_wrapper_id, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     15    , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    1516     
    1617    IMPLICIT NONE 
    1718      TYPE(txios(calendar_wrapper))  :: calendar_wrapper_hdl 
    1819      CHARACTER(LEN=*), INTENT(IN) ::calendar_wrapper_id 
     20      INTEGER  , OPTIONAL, INTENT(IN) :: day_length 
     21      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift 
     22      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift_offset 
     23      INTEGER  , OPTIONAL, INTENT(IN) :: leap_year_month 
     24      INTEGER  , OPTIONAL, INTENT(IN) :: month_lengths(:) 
    1925      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: start_date 
    2026      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_origin 
    2127      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: timestep 
    2228      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
     29      INTEGER  , OPTIONAL, INTENT(IN) :: year_length 
    2330       
    2431      CALL xios(get_calendar_wrapper_handle)(calendar_wrapper_id,calendar_wrapper_hdl) 
    2532      CALL xios(set_calendar_wrapper_attr_hdl_)   & 
    26       ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
     33      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     34      , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    2735     
    2836  END SUBROUTINE xios(set_calendar_wrapper_attr) 
    2937   
    3038  SUBROUTINE xios(set_calendar_wrapper_attr_hdl)  & 
    31     ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
    32      
    33     IMPLICIT NONE 
    34       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     39    ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     40    , month_lengths, start_date, time_origin, timestep, type, year_length ) 
     41     
     42    IMPLICIT NONE 
     43      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     44      INTEGER  , OPTIONAL, INTENT(IN) :: day_length 
     45      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift 
     46      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift_offset 
     47      INTEGER  , OPTIONAL, INTENT(IN) :: leap_year_month 
     48      INTEGER  , OPTIONAL, INTENT(IN) :: month_lengths(:) 
    3549      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: start_date 
    3650      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_origin 
    3751      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: timestep 
    3852      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type 
     53      INTEGER  , OPTIONAL, INTENT(IN) :: year_length 
    3954       
    4055      CALL xios(set_calendar_wrapper_attr_hdl_)  & 
    41       ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
     56      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     57      , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    4258     
    4359  END SUBROUTINE xios(set_calendar_wrapper_attr_hdl) 
    4460   
    4561  SUBROUTINE xios(set_calendar_wrapper_attr_hdl_)   & 
    46     ( calendar_wrapper_hdl, start_date_, time_origin_, timestep_, type_ ) 
    47      
    48     IMPLICIT NONE 
    49       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     62    ( calendar_wrapper_hdl, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  & 
     63    , month_lengths_, start_date_, time_origin_, timestep_, type_, year_length_ ) 
     64     
     65    IMPLICIT NONE 
     66      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     67      INTEGER  , OPTIONAL, INTENT(IN) :: day_length_ 
     68      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift_ 
     69      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift_offset_ 
     70      INTEGER  , OPTIONAL, INTENT(IN) :: leap_year_month_ 
     71      INTEGER  , OPTIONAL, INTENT(IN) :: month_lengths_(:) 
    5072      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: start_date_ 
    5173      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_origin_ 
    5274      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: timestep_ 
    5375      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: type_ 
     76      INTEGER  , OPTIONAL, INTENT(IN) :: year_length_ 
     77       
     78      IF (PRESENT(day_length_)) THEN 
     79        CALL cxios_set_calendar_wrapper_day_length(calendar_wrapper_hdl%daddr, day_length_) 
     80      ENDIF 
     81       
     82      IF (PRESENT(leap_year_drift_)) THEN 
     83        CALL cxios_set_calendar_wrapper_leap_year_drift(calendar_wrapper_hdl%daddr, leap_year_drift_) 
     84      ENDIF 
     85       
     86      IF (PRESENT(leap_year_drift_offset_)) THEN 
     87        CALL cxios_set_calendar_wrapper_leap_year_drift_offset(calendar_wrapper_hdl%daddr, leap_year_drift_offset_) 
     88      ENDIF 
     89       
     90      IF (PRESENT(leap_year_month_)) THEN 
     91        CALL cxios_set_calendar_wrapper_leap_year_month(calendar_wrapper_hdl%daddr, leap_year_month_) 
     92      ENDIF 
     93       
     94      IF (PRESENT(month_lengths_)) THEN 
     95        CALL cxios_set_calendar_wrapper_month_lengths(calendar_wrapper_hdl%daddr, month_lengths_,size(month_lengths_,1)) 
     96      ENDIF 
    5497       
    5598      IF (PRESENT(start_date_)) THEN 
     
    69112      ENDIF 
    70113       
     114      IF (PRESENT(year_length_)) THEN 
     115        CALL cxios_set_calendar_wrapper_year_length(calendar_wrapper_hdl%daddr, year_length_) 
     116      ENDIF 
     117       
    71118       
    72119     
     
    74121   
    75122  SUBROUTINE xios(get_calendar_wrapper_attr)  & 
    76     ( calendar_wrapper_id, start_date, time_origin, timestep, type ) 
     123    ( calendar_wrapper_id, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     124    , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    77125     
    78126    IMPLICIT NONE 
    79127      TYPE(txios(calendar_wrapper))  :: calendar_wrapper_hdl 
    80128      CHARACTER(LEN=*), INTENT(IN) ::calendar_wrapper_id 
     129      INTEGER  , OPTIONAL, INTENT(OUT) :: day_length 
     130      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift 
     131      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift_offset 
     132      INTEGER  , OPTIONAL, INTENT(OUT) :: leap_year_month 
     133      INTEGER  , OPTIONAL, INTENT(OUT) :: month_lengths(:) 
    81134      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: start_date 
    82135      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_origin 
    83136      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: timestep 
    84137      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
     138      INTEGER  , OPTIONAL, INTENT(OUT) :: year_length 
    85139       
    86140      CALL xios(get_calendar_wrapper_handle)(calendar_wrapper_id,calendar_wrapper_hdl) 
    87141      CALL xios(get_calendar_wrapper_attr_hdl_)   & 
    88       ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
     142      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     143      , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    89144     
    90145  END SUBROUTINE xios(get_calendar_wrapper_attr) 
    91146   
    92147  SUBROUTINE xios(get_calendar_wrapper_attr_hdl)  & 
    93     ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
    94      
    95     IMPLICIT NONE 
    96       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     148    ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     149    , month_lengths, start_date, time_origin, timestep, type, year_length ) 
     150     
     151    IMPLICIT NONE 
     152      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     153      INTEGER  , OPTIONAL, INTENT(OUT) :: day_length 
     154      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift 
     155      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift_offset 
     156      INTEGER  , OPTIONAL, INTENT(OUT) :: leap_year_month 
     157      INTEGER  , OPTIONAL, INTENT(OUT) :: month_lengths(:) 
    97158      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: start_date 
    98159      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_origin 
    99160      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: timestep 
    100161      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type 
     162      INTEGER  , OPTIONAL, INTENT(OUT) :: year_length 
    101163       
    102164      CALL xios(get_calendar_wrapper_attr_hdl_)  & 
    103       ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
     165      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     166      , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    104167     
    105168  END SUBROUTINE xios(get_calendar_wrapper_attr_hdl) 
    106169   
    107170  SUBROUTINE xios(get_calendar_wrapper_attr_hdl_)   & 
    108     ( calendar_wrapper_hdl, start_date_, time_origin_, timestep_, type_ ) 
    109      
    110     IMPLICIT NONE 
    111       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     171    ( calendar_wrapper_hdl, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  & 
     172    , month_lengths_, start_date_, time_origin_, timestep_, type_, year_length_ ) 
     173     
     174    IMPLICIT NONE 
     175      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     176      INTEGER  , OPTIONAL, INTENT(OUT) :: day_length_ 
     177      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift_ 
     178      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift_offset_ 
     179      INTEGER  , OPTIONAL, INTENT(OUT) :: leap_year_month_ 
     180      INTEGER  , OPTIONAL, INTENT(OUT) :: month_lengths_(:) 
    112181      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: start_date_ 
    113182      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_origin_ 
    114183      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: timestep_ 
    115184      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: type_ 
     185      INTEGER  , OPTIONAL, INTENT(OUT) :: year_length_ 
     186       
     187      IF (PRESENT(day_length_)) THEN 
     188        CALL cxios_get_calendar_wrapper_day_length(calendar_wrapper_hdl%daddr, day_length_) 
     189      ENDIF 
     190       
     191      IF (PRESENT(leap_year_drift_)) THEN 
     192        CALL cxios_get_calendar_wrapper_leap_year_drift(calendar_wrapper_hdl%daddr, leap_year_drift_) 
     193      ENDIF 
     194       
     195      IF (PRESENT(leap_year_drift_offset_)) THEN 
     196        CALL cxios_get_calendar_wrapper_leap_year_drift_offset(calendar_wrapper_hdl%daddr, leap_year_drift_offset_) 
     197      ENDIF 
     198       
     199      IF (PRESENT(leap_year_month_)) THEN 
     200        CALL cxios_get_calendar_wrapper_leap_year_month(calendar_wrapper_hdl%daddr, leap_year_month_) 
     201      ENDIF 
     202       
     203      IF (PRESENT(month_lengths_)) THEN 
     204        CALL cxios_get_calendar_wrapper_month_lengths(calendar_wrapper_hdl%daddr, month_lengths_,size(month_lengths_,1)) 
     205      ENDIF 
    116206       
    117207      IF (PRESENT(start_date_)) THEN 
     
    131221      ENDIF 
    132222       
     223      IF (PRESENT(year_length_)) THEN 
     224        CALL cxios_get_calendar_wrapper_year_length(calendar_wrapper_hdl%daddr, year_length_) 
     225      ENDIF 
     226       
    133227       
    134228     
     
    136230   
    137231  SUBROUTINE xios(is_defined_calendar_wrapper_attr)  & 
    138     ( calendar_wrapper_id, start_date, time_origin, timestep, type ) 
     232    ( calendar_wrapper_id, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     233    , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    139234     
    140235    IMPLICIT NONE 
    141236      TYPE(txios(calendar_wrapper))  :: calendar_wrapper_hdl 
    142237      CHARACTER(LEN=*), INTENT(IN) ::calendar_wrapper_id 
     238      LOGICAL, OPTIONAL, INTENT(OUT) :: day_length 
     239      LOGICAL(KIND=C_BOOL) :: day_length_tmp 
     240      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_drift 
     241      LOGICAL(KIND=C_BOOL) :: leap_year_drift_tmp 
     242      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_drift_offset 
     243      LOGICAL(KIND=C_BOOL) :: leap_year_drift_offset_tmp 
     244      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_month 
     245      LOGICAL(KIND=C_BOOL) :: leap_year_month_tmp 
     246      LOGICAL, OPTIONAL, INTENT(OUT) :: month_lengths 
     247      LOGICAL(KIND=C_BOOL) :: month_lengths_tmp 
    143248      LOGICAL, OPTIONAL, INTENT(OUT) :: start_date 
    144249      LOGICAL(KIND=C_BOOL) :: start_date_tmp 
     
    149254      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    150255      LOGICAL(KIND=C_BOOL) :: type_tmp 
     256      LOGICAL, OPTIONAL, INTENT(OUT) :: year_length 
     257      LOGICAL(KIND=C_BOOL) :: year_length_tmp 
    151258       
    152259      CALL xios(get_calendar_wrapper_handle)(calendar_wrapper_id,calendar_wrapper_hdl) 
    153260      CALL xios(is_defined_calendar_wrapper_attr_hdl_)   & 
    154       ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
     261      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     262      , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    155263     
    156264  END SUBROUTINE xios(is_defined_calendar_wrapper_attr) 
    157265   
    158266  SUBROUTINE xios(is_defined_calendar_wrapper_attr_hdl)  & 
    159     ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
    160      
    161     IMPLICIT NONE 
    162       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     267    ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     268    , month_lengths, start_date, time_origin, timestep, type, year_length ) 
     269     
     270    IMPLICIT NONE 
     271      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     272      LOGICAL, OPTIONAL, INTENT(OUT) :: day_length 
     273      LOGICAL(KIND=C_BOOL) :: day_length_tmp 
     274      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_drift 
     275      LOGICAL(KIND=C_BOOL) :: leap_year_drift_tmp 
     276      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_drift_offset 
     277      LOGICAL(KIND=C_BOOL) :: leap_year_drift_offset_tmp 
     278      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_month 
     279      LOGICAL(KIND=C_BOOL) :: leap_year_month_tmp 
     280      LOGICAL, OPTIONAL, INTENT(OUT) :: month_lengths 
     281      LOGICAL(KIND=C_BOOL) :: month_lengths_tmp 
    163282      LOGICAL, OPTIONAL, INTENT(OUT) :: start_date 
    164283      LOGICAL(KIND=C_BOOL) :: start_date_tmp 
     
    169288      LOGICAL, OPTIONAL, INTENT(OUT) :: type 
    170289      LOGICAL(KIND=C_BOOL) :: type_tmp 
     290      LOGICAL, OPTIONAL, INTENT(OUT) :: year_length 
     291      LOGICAL(KIND=C_BOOL) :: year_length_tmp 
    171292       
    172293      CALL xios(is_defined_calendar_wrapper_attr_hdl_)  & 
    173       ( calendar_wrapper_hdl, start_date, time_origin, timestep, type ) 
     294      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  & 
     295      , month_lengths, start_date, time_origin, timestep, type, year_length ) 
    174296     
    175297  END SUBROUTINE xios(is_defined_calendar_wrapper_attr_hdl) 
    176298   
    177299  SUBROUTINE xios(is_defined_calendar_wrapper_attr_hdl_)   & 
    178     ( calendar_wrapper_hdl, start_date_, time_origin_, timestep_, type_ ) 
    179      
    180     IMPLICIT NONE 
    181       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     300    ( calendar_wrapper_hdl, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  & 
     301    , month_lengths_, start_date_, time_origin_, timestep_, type_, year_length_ ) 
     302     
     303    IMPLICIT NONE 
     304      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl 
     305      LOGICAL, OPTIONAL, INTENT(OUT) :: day_length_ 
     306      LOGICAL(KIND=C_BOOL) :: day_length__tmp 
     307      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_drift_ 
     308      LOGICAL(KIND=C_BOOL) :: leap_year_drift__tmp 
     309      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_drift_offset_ 
     310      LOGICAL(KIND=C_BOOL) :: leap_year_drift_offset__tmp 
     311      LOGICAL, OPTIONAL, INTENT(OUT) :: leap_year_month_ 
     312      LOGICAL(KIND=C_BOOL) :: leap_year_month__tmp 
     313      LOGICAL, OPTIONAL, INTENT(OUT) :: month_lengths_ 
     314      LOGICAL(KIND=C_BOOL) :: month_lengths__tmp 
    182315      LOGICAL, OPTIONAL, INTENT(OUT) :: start_date_ 
    183316      LOGICAL(KIND=C_BOOL) :: start_date__tmp 
     
    188321      LOGICAL, OPTIONAL, INTENT(OUT) :: type_ 
    189322      LOGICAL(KIND=C_BOOL) :: type__tmp 
     323      LOGICAL, OPTIONAL, INTENT(OUT) :: year_length_ 
     324      LOGICAL(KIND=C_BOOL) :: year_length__tmp 
     325       
     326      IF (PRESENT(day_length_)) THEN 
     327        day_length__tmp=cxios_is_defined_calendar_wrapper_day_length(calendar_wrapper_hdl%daddr) 
     328        day_length_=day_length__tmp 
     329      ENDIF 
     330       
     331      IF (PRESENT(leap_year_drift_)) THEN 
     332        leap_year_drift__tmp=cxios_is_defined_calendar_wrapper_leap_year_drift(calendar_wrapper_hdl%daddr) 
     333        leap_year_drift_=leap_year_drift__tmp 
     334      ENDIF 
     335       
     336      IF (PRESENT(leap_year_drift_offset_)) THEN 
     337        leap_year_drift_offset__tmp=cxios_is_defined_calendar_wrapper_leap_year_drift_offset(calendar_wrapper_hdl%daddr) 
     338        leap_year_drift_offset_=leap_year_drift_offset__tmp 
     339      ENDIF 
     340       
     341      IF (PRESENT(leap_year_month_)) THEN 
     342        leap_year_month__tmp=cxios_is_defined_calendar_wrapper_leap_year_month(calendar_wrapper_hdl%daddr) 
     343        leap_year_month_=leap_year_month__tmp 
     344      ENDIF 
     345       
     346      IF (PRESENT(month_lengths_)) THEN 
     347        month_lengths__tmp=cxios_is_defined_calendar_wrapper_month_lengths(calendar_wrapper_hdl%daddr) 
     348        month_lengths_=month_lengths__tmp 
     349      ENDIF 
    190350       
    191351      IF (PRESENT(start_date_)) THEN 
     
    209369      ENDIF 
    210370       
     371      IF (PRESENT(year_length_)) THEN 
     372        year_length__tmp=cxios_is_defined_calendar_wrapper_year_length(calendar_wrapper_hdl%daddr) 
     373        year_length_=year_length__tmp 
     374      ENDIF 
     375       
    211376       
    212377     
Note: See TracChangeset for help on using the changeset viewer.