Ignore:
Timestamp:
12/17/14 11:14:05 (9 years ago)
Author:
rlacroix
Message:

Expose the calendar operations through the Fortran interface.

  • Add arithmetic operations on the xios_duration and xios_date types:
    • xios_duration + xios_duration = xios_duration
    • xios_duration - xios_duration = xios_duration
    • scalar * xios_duration = xios_duration * scalar = xios_duration
    • - xios_duration = xios_duration
    • xios_date + xios_duration = xios_date
    • xios_date - xios_duration = xios_date
    • xios_date - xios_date = xios_duration
  • Add comparison operations on the xios_duration and xios_date types:
    • xios_duration: ==, /=
    • xios_date: ==, /=, <, <=, >, >=
  • Add a new function "xios_date_convert_to_seconds" to convert a date into the number of seconds since the time origin of the calendar
  • Define some constant durations "xios_second", "xios_minute", "xios_hour", "xios_day", "xios_month", "xios_year" et "xios_timestep" to ease the definition of new durations (for example, 10h is just 10 * xios_hour)
  • Add a new function "xios_set_calendar" so that one can manually create the calendar attached to the current context and thus use the calendar operations before calling "xios_close_context_definition". This function can accept optional parameters so that the calendar attributes (calendar_type, start_date, time_origin and timestep) can be easily overwritten. Note that you cannot define a new calendar after one was already created (either because "xios_set_calendar" or "xios_close_context_definition" was used)
  • Readd the function "xios_set_timestep" as a simplified alias of "xios_set_context_attr(context, timestep)" for the current context
File:
1 edited

Legend:

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

    r537 r545  
    33MODULE XIOS 
    44 
     5USE icalendar, ONLY : xios(set_calendar), xios(set_timestep), xios(update_calendar) 
    56 
    67USE icontext, ONLY : txios(context), xios(get_context_handle), xios(set_current_context),    & 
     
    1920                  xios(setVar_logic), xios(setVar_char) 
    2021 
    21 USE idate, ONLY : txios(date), txios(duration), xios(update_calendar) 
     22USE idate, ONLY : txios(date), & 
     23                  xios(date_convert_to_seconds), & 
     24                  xios(date_add_duration), xios(date_sub_duration), xios(date_sub), & 
     25                  xios(date_eq), xios(date_neq), xios(date_lt), xios(date_le), xios(date_gt), xios(date_ge), & 
     26                  OPERATOR(+), OPERATOR(-), & 
     27                  OPERATOR(==), OPERATOR(/=), OPERATOR(<), OPERATOR(<=), OPERATOR(>), OPERATOR(>=) 
    2228 
    2329USE idomain, ONLY : txios(domain), txios(domaingroup), xios(get_domain_handle),  & 
     
    3238                              xios(get_domaingroup_attr), xios(get_domaingroup_attr_hdl), & 
    3339                              xios(is_defined_domaingroup_attr), xios(is_defined_domaingroup_attr_hdl) 
     40 
     41USE iduration, ONLY: txios(duration), & 
     42                     xios(year), xios(month), xios(day), xios(hour), xios(minute), xios(second), xios(timestep), & 
     43                     xios(duration_add), xios(duration_sub), xios(duration_mult), xios(duration_neg), & 
     44                     xios(duration_eq), xios(duration_neq), & 
     45                     OPERATOR(+), OPERATOR(-), OPERATOR(*) 
    3446 
    3547USE ifield, ONLY : txios(field), txios(fieldgroup), xios(get_field_handle),  & 
     
    184196 
    185197 PUBLIC :: xios(set_current_context) 
    186  PUBLIC :: xios(update_calendar) 
    187198 PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),xios(context_is_initialized), & 
    188199           xios(solve_inheritance), xios(close_context_definition), xios(context_finalize), xios(send_field),          & 
    189200           xios(field_is_active) 
    190201 
     202 PUBLIC :: xios(set_calendar), xios(set_timestep), xios(update_calendar) 
     203 
     204 PUBLIC :: xios(year), xios(month), xios(day), xios(hour), xios(minute), xios(second), xios(timestep), & 
     205           xios(duration_add), xios(duration_sub), xios(duration_mult), xios(duration_neg), & 
     206           xios(duration_eq), xios(duration_neq) 
     207 
     208 PUBLIC :: xios(date_convert_to_seconds), & 
     209           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) 
     211 
     212 PUBLIC :: OPERATOR(+), OPERATOR(-), OPERATOR(*), & 
     213           OPERATOR(==), OPERATOR(/=), OPERATOR(<), OPERATOR(<=), OPERATOR(>), OPERATOR(>=) 
     214 
    191215 PUBLIC :: xios(getVar) 
    192216 PUBLIC :: xios(setVar) 
Note: See TracChangeset for help on using the changeset viewer.