Changeset 14219 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/lib_fortran_generic.h90
- Timestamp:
- 2020-12-18T18:52:57+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/lib_fortran_generic.h90
r13226 r14219 1 #if defined SINGLE_PRECISION 2 # define TYPE REAL(sp) 3 #else 4 # define TYPE REAL(dp) 5 #endif 6 1 7 #if defined GLOBSUM_CODE 2 8 ! ! FUNCTION FUNCTION_GLOBSUM ! 3 9 # if defined DIM_1d 4 # define ARRAY_TYPE(i,j,k) REAL(wp), INTENT(in ) :: ARRAY_IN(i,j,k)10 # define ARRAY_TYPE(i,j,k) TYPE , INTENT(in ) :: ARRAY_IN(i,j,k) 5 11 # define ARRAY_IN(i,j,k) ptab(i) 6 12 # define ARRAY2_IN(i,j,k) ptab2(i) … … 10 16 # endif 11 17 # if defined DIM_2d 12 # define ARRAY_TYPE(i,j,k) REAL(wp), INTENT(in ) :: ARRAY_IN(i,j,k)18 # define ARRAY_TYPE(i,j,k) TYPE , INTENT(in ) :: ARRAY_IN(i,j,k) 13 19 # define ARRAY_IN(i,j,k) ptab(i,j) 14 20 # define ARRAY2_IN(i,j,k) ptab2(i,j) … … 17 23 # endif 18 24 # if defined DIM_3d 19 # define ARRAY_TYPE(i,j,k) REAL(wp), INTENT(in ) :: ARRAY_IN(i,j,k)25 # define ARRAY_TYPE(i,j,k) TYPE , INTENT(in ) :: ARRAY_IN(i,j,k) 20 26 # define ARRAY_IN(i,j,k) ptab(i,j,k) 21 27 # define ARRAY2_IN(i,j,k) ptab2(i,j,k) … … 34 40 CHARACTER(len=*), INTENT(in ) :: cdname ! name of the calling subroutine 35 41 ARRAY_TYPE(:,:,:) ! array on which operation is applied 36 REAL(wp):: FUNCTION_GLOBSUM42 TYPE :: FUNCTION_GLOBSUM 37 43 ! 38 44 !!----------------------------------------------------------------------- 39 !40 REAL(wp) :: FUNCTION_GLOB_OP ! global sum41 45 !! 42 46 COMPLEX(dp):: ctmp 43 REAL(wp):: ztmp47 TYPE :: ztmp 44 48 INTEGER :: ji, jj, jk ! dummy loop indices 45 49 INTEGER :: ipi, ipj, ipk ! dimensions … … 65 69 END FUNCTION FUNCTION_GLOBSUM 66 70 71 #undef TYPE 67 72 #undef ARRAY_TYPE 68 73 #undef ARRAY2_TYPE … … 77 82 ! ! FUNCTION FUNCTION_GLOBMINMAX ! 78 83 # if defined DIM_2d 79 # define ARRAY_TYPE(i,j,k) REAL(wp), INTENT(in ) :: ARRAY_IN(i,j,k)84 # define ARRAY_TYPE(i,j,k) TYPE , INTENT(in ) :: ARRAY_IN(i,j,k) 80 85 # define ARRAY_IN(i,j,k) ptab(i,j) 81 86 # define ARRAY2_IN(i,j,k) ptab2(i,j) … … 83 88 # endif 84 89 # if defined DIM_3d 85 # define ARRAY_TYPE(i,j,k) REAL(wp), INTENT(in ) :: ARRAY_IN(i,j,k)90 # define ARRAY_TYPE(i,j,k) TYPE , INTENT(in ) :: ARRAY_IN(i,j,k) 86 91 # define ARRAY_IN(i,j,k) ptab(i,j,k) 87 92 # define ARRAY2_IN(i,j,k) ptab2(i,j,k) … … 103 108 CHARACTER(len=*), INTENT(in ) :: cdname ! name of the calling subroutine 104 109 ARRAY_TYPE(:,:,:) ! array on which operation is applied 105 REAL(wp):: FUNCTION_GLOBMINMAX110 TYPE :: FUNCTION_GLOBMINMAX 106 111 ! 107 112 !!----------------------------------------------------------------------- 108 113 ! 109 REAL(wp) :: FUNCTION_GLOB_OP ! global sum110 114 !! 111 115 COMPLEX(dp):: ctmp … … 129 133 END FUNCTION FUNCTION_GLOBMINMAX 130 134 135 #undef TYPE 131 136 #undef ARRAY_TYPE 132 137 #undef ARRAY2_TYPE
Note: See TracChangeset
for help on using the changeset viewer.