Changeset 545 for XIOS/trunk/src/interface/fortran
- Timestamp:
- 12/17/14 11:14:05 (10 years ago)
- Location:
- XIOS/trunk/src/interface/fortran
- Files:
-
- 5 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/interface/fortran/context_interface.f90
r501 r545 1 1 MODULE CONTEXT_INTERFACE 2 2 USE, INTRINSIC :: ISO_C_BINDING 3 3 4 4 INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 5 5 6 6 SUBROUTINE cxios_context_handle_create(ret, idt, idt_size) BIND(C) 7 7 import C_CHAR, C_INTPTR_T, C_INT … … 10 10 INTEGER (kind = C_INT) , VALUE :: idt_size 11 11 END SUBROUTINE cxios_context_handle_create 12 12 13 SUBROUTINE cxios_context_get_current(context) BIND(C) 14 import C_INTPTR_T 15 INTEGER (kind = C_INTPTR_T) :: context 16 END SUBROUTINE cxios_context_get_current 17 13 18 SUBROUTINE cxios_context_set_current(context, withswap) BIND(C) 14 19 import C_BOOL, C_INT, C_INTPTR_T … … 25 30 26 31 END INTERFACE 27 32 28 33 END MODULE CONTEXT_INTERFACE -
XIOS/trunk/src/interface/fortran/icontext.F90
r501 r545 4 4 USE, INTRINSIC :: ISO_C_BINDING 5 5 USE CONTEXT_INTERFACE 6 USE IDATE 7 USE IDURATION 6 8 ! USE icontext_attr 7 USE IDATE8 9 9 10 10 11 TYPE txios(context) 11 12 INTEGER(kind = C_INTPTR_T) :: daddr 12 13 END TYPE txios(context) 13 14 14 15 15 16 CONTAINS ! Fonctions disponibles pour les utilisateurs. 16 17 17 18 SUBROUTINE xios(get_context_handle)(idt,ret) 18 19 IMPLICIT NONE 19 CHARACTER(len = *) , INTENT(IN) :: idt 20 CHARACTER(len = *) , INTENT(IN) :: idt 20 21 TYPE(txios(context)), INTENT(OUT):: ret 21 22 22 CALL cxios_context_handle_create(ret%daddr, idt, len(idt)) 23 CALL cxios_context_handle_create(ret%daddr, idt, len(idt)) 23 24 END SUBROUTINE xios(get_context_handle) 24 25 26 SUBROUTINE xios(get_current_context)(context) 27 IMPLICIT NONE 28 29 TYPE(txios(context)), INTENT(IN) :: context 30 31 CALL cxios_context_get_current(context%daddr) 32 33 END SUBROUTINE xios(get_current_context) 34 25 35 SUBROUTINE xios(set_current_context)(context, withswap) 26 36 IMPLICIT NONE … … 28 38 TYPE(txios(context)) , INTENT(IN) :: context 29 39 LOGICAL , OPTIONAL, INTENT(IN) :: withswap 30 LOGICAL (kind = 1) :: wswap40 LOGICAL (kind = 1) :: wswap 31 41 32 42 IF (PRESENT(withswap)) THEN … … 38 48 39 49 END SUBROUTINE xios(set_current_context) 40 50 41 51 LOGICAL FUNCTION xios(is_valid_context)(idt) 42 52 IMPLICIT NONE … … 49 59 END FUNCTION xios(is_valid_context) 50 60 51 61 52 62 END MODULE ICONTEXT -
XIOS/trunk/src/interface/fortran/idate.F90
r537 r545 2 2 MODULE IDATE 3 3 USE, INTRINSIC :: ISO_C_BINDING 4 USE DATE_INTERFACE 4 5 5 ! enum XCalendarType 6 INTEGER(kind = C_INT), PARAMETER :: D360 = 0 , ALLLEAP = 1 , NOLEAP = 2 , JULIAN = 3 , GREGORIAN = 4 6 INTERFACE OPERATOR(+) 7 MODULE PROCEDURE xios(date_add_duration) 8 END INTERFACE 7 9 8 TYPE, BIND(C) :: txios(date) 9 INTEGER(kind = C_INT) :: year, month, day, hour, minute, second 10 END TYPE txios(date) 10 INTERFACE OPERATOR(-) 11 MODULE PROCEDURE xios(date_sub_duration) 12 MODULE PROCEDURE xios(date_sub) 13 END INTERFACE 11 14 12 TYPE, BIND(C) :: txios(duration)13 REAL(kind = C_DOUBLE) :: year=0, month=0, day=0, hour=0, minute=0, second=0, timestep=014 END TYPE txios(duration)15 INTERFACE OPERATOR(==) 16 MODULE PROCEDURE xios(date_eq) 17 END INTERFACE 15 18 16 INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99 19 INTERFACE OPERATOR(/=) 20 MODULE PROCEDURE xios(date_neq) 21 END INTERFACE 17 22 18 SUBROUTINE cxios_update_calendar(step) BIND(C) 19 IMPORT C_INT 20 INTEGER (kind = C_INT), VALUE :: step 21 END SUBROUTINE cxios_update_calendar 23 INTERFACE OPERATOR(<) 24 MODULE PROCEDURE xios(date_lt) 25 END INTERFACE 22 26 27 INTERFACE OPERATOR(<=) 28 MODULE PROCEDURE xios(date_le) 23 29 END INTERFACE 24 30 31 INTERFACE OPERATOR(>) 32 MODULE PROCEDURE xios(date_gt) 33 END INTERFACE 34 35 INTERFACE OPERATOR(>=) 36 MODULE PROCEDURE xios(date_ge) 37 END INTERFACE 38 25 39 CONTAINS ! Fonctions disponibles pour les utilisateurs. 26 40 27 SUBROUTINE xios(update_calendar)(step) 28 IMPLICIT NONE 29 INTEGER, INTENT(IN):: step 30 31 IF (step < 0) THEN 32 PRINT *, "L'argument 'step' ne peut être négatif" 33 STOP 34 END IF 35 CALL cxios_update_calendar(step) 36 END SUBROUTINE xios(update_calendar) 41 FUNCTION xios(date_convert_to_seconds)(date) RESULT(res) 42 USE DATE_INTERFACE, only : txios(date) 43 IMPLICIT NONE 44 TYPE(txios(date)), INTENT(IN) :: date 45 INTEGER(kind = C_LONG_LONG) :: res 46 47 res = cxios_date_convert_to_seconds(date) 48 END FUNCTION xios(date_convert_to_seconds) 49 50 ! Addition: date + duration = date 51 52 FUNCTION xios(date_add_duration)(date, dur) RESULT(res) 53 USE DATE_INTERFACE, only : txios(date) 54 USE IDURATION, only : txios(duration) 55 IMPLICIT NONE 56 TYPE(txios(date)), INTENT(IN) :: date 57 TYPE(txios(duration)), INTENT(IN) :: dur 58 TYPE(txios(date)) :: res 59 60 res = cxios_date_add_duration(date, dur) 61 END FUNCTION xios(date_add_duration) 62 63 ! Subtraction: date - duration = date 64 65 FUNCTION xios(date_sub_duration)(date, dur) RESULT(res) 66 USE DATE_INTERFACE, only : txios(date) 67 USE IDURATION, only : txios(duration) 68 IMPLICIT NONE 69 TYPE(txios(date)), INTENT(IN) :: date 70 TYPE(txios(duration)), INTENT(IN) :: dur 71 TYPE(txios(date)) :: res 72 73 res = cxios_date_sub_duration(date, dur) 74 END FUNCTION xios(date_sub_duration) 75 76 ! Subtraction: date - date = duration 77 78 FUNCTION xios(date_sub)(date1, date2) RESULT(res) 79 USE DATE_INTERFACE, only : txios(date) 80 USE IDURATION, only : txios(duration) 81 IMPLICIT NONE 82 TYPE(txios(date)), INTENT(IN) :: date1, date2 83 TYPE(txios(duration)) :: res 84 85 res = cxios_date_sub(date1, date2) 86 END FUNCTION xios(date_sub) 87 88 FUNCTION xios(date_eq)(date1, date2) RESULT(res) 89 USE DATE_INTERFACE, only : txios(date) 90 IMPLICIT NONE 91 TYPE(txios(date)), INTENT(IN) :: date1, date2 92 LOGICAL :: res 93 94 res = cxios_date_eq(date1, date2) 95 END FUNCTION xios(date_eq) 96 97 FUNCTION xios(date_neq)(date1, date2) RESULT(res) 98 USE DATE_INTERFACE, only : txios(date) 99 IMPLICIT NONE 100 TYPE(txios(date)), INTENT(IN) :: date1, date2 101 LOGICAL :: res 102 103 res = cxios_date_neq(date1, date2) 104 END FUNCTION xios(date_neq) 105 106 FUNCTION xios(date_lt)(date1, date2) RESULT(res) 107 USE DATE_INTERFACE, only : txios(date) 108 IMPLICIT NONE 109 TYPE(txios(date)), INTENT(IN) :: date1, date2 110 LOGICAL :: res 111 112 res = cxios_date_lt(date1, date2) 113 END FUNCTION xios(date_lt) 114 115 FUNCTION xios(date_le)(date1, date2) RESULT(res) 116 USE DATE_INTERFACE, only : txios(date) 117 IMPLICIT NONE 118 TYPE(txios(date)), INTENT(IN) :: date1, date2 119 LOGICAL :: res 120 121 res = cxios_date_le(date1, date2) 122 END FUNCTION xios(date_le) 123 124 FUNCTION xios(date_gt)(date1, date2) RESULT(res) 125 USE DATE_INTERFACE, only : txios(date) 126 IMPLICIT NONE 127 TYPE(txios(date)), INTENT(IN) :: date1, date2 128 LOGICAL :: res 129 130 res = cxios_date_gt(date1, date2) 131 END FUNCTION xios(date_gt) 132 133 FUNCTION xios(date_ge)(date1, date2) RESULT(res) 134 USE DATE_INTERFACE, only : txios(date) 135 IMPLICIT NONE 136 TYPE(txios(date)), INTENT(IN) :: date1, date2 137 LOGICAL :: res 138 139 res = cxios_date_ge(date1, date2) 140 END FUNCTION xios(date_ge) 37 141 38 142 END MODULE IDATE -
XIOS/trunk/src/interface/fortran/ifield.F90
r538 r545 7 7 ! USE IFIELD_ATTR 8 8 ! USE IFIELDGROUP_ATTR 9 USE ID ATE9 USE IDURATION 10 10 11 11 TYPE txios(field) -
XIOS/trunk/src/interface/fortran/ifile.F90
r538 r545 7 7 ! USE IFILE_ATTR 8 8 ! USE IFILEGROUP_ATTR 9 USE ID ATE9 USE IDURATION 10 10 11 11 TYPE txios(file) -
XIOS/trunk/src/interface/fortran/ixios.F90
r537 r545 3 3 MODULE XIOS 4 4 5 USE icalendar, ONLY : xios(set_calendar), xios(set_timestep), xios(update_calendar) 5 6 6 7 USE icontext, ONLY : txios(context), xios(get_context_handle), xios(set_current_context), & … … 19 20 xios(setVar_logic), xios(setVar_char) 20 21 21 USE idate, ONLY : txios(date), txios(duration), xios(update_calendar) 22 USE 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(>=) 22 28 23 29 USE idomain, ONLY : txios(domain), txios(domaingroup), xios(get_domain_handle), & … … 32 38 xios(get_domaingroup_attr), xios(get_domaingroup_attr_hdl), & 33 39 xios(is_defined_domaingroup_attr), xios(is_defined_domaingroup_attr_hdl) 40 41 USE 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(*) 34 46 35 47 USE ifield, ONLY : txios(field), txios(fieldgroup), xios(get_field_handle), & … … 184 196 185 197 PUBLIC :: xios(set_current_context) 186 PUBLIC :: xios(update_calendar)187 198 PUBLIC :: xios(initialize), xios(init_server), xios(finalize), xios(context_initialize),xios(context_is_initialized), & 188 199 xios(solve_inheritance), xios(close_context_definition), xios(context_finalize), xios(send_field), & 189 200 xios(field_is_active) 190 201 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 191 215 PUBLIC :: xios(getVar) 192 216 PUBLIC :: xios(setVar)
Note: See TracChangeset
for help on using the changeset viewer.