- Timestamp:
- 04/09/18 15:22:10 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/unstructured/data_unstructured.F90
r683 r688 5 5 SAVE 6 6 7 #define BINDC_(thename) BIND(C, name=#thename) 8 #define BINDC(thename) BINDC_(dynamico_ ## thename) 9 10 #define DBL REAL(C_DOUBLE) 11 #define DOUBLE1(m) DBL, DIMENSION(m) 12 #define DOUBLE2(m,n) DBL, DIMENSION(m,n) 13 #define DOUBLE3(m,n,p) DBL, DIMENSION(m,n,p) 14 #define DOUBLE4(m,n,p,q) DBL, DIMENSION(m,n,p,q) 15 #define INDEX INTEGER(C_INT) 7 #include "unstructured.h90" 16 8 17 9 INTEGER, PARAMETER :: eta_mass=1, eta_lag=2, & … … 34 26 ! circulation is positive when going from down to up 35 27 36 DBL, BIND(C) :: elapsed, g, ptop, cpp, cppv, Rd, Rv, preff, Treff, &37 38 DBL:: kappa39 DOUBLE1(max_nb_stage), BIND(C) :: tauj ! diagonal of fast Butcher tableau40 DOUBLE2(max_nb_stage,max_nb_stage), BIND(C) :: cslj, cflj ! slow and fast modified Butcher tableaus41 DOUBLE1(:), ALLOCATABLE :: le_de, fv, Av, Ai42 DOUBLE2(:,:), ALLOCATABLE :: Riv2, wee, ap,bp, mass_bl, mass_dak, mass_dbk28 TIME, BIND(C) :: elapsed 29 NUM, BIND(C) :: g, ptop, cpp, cppv, Rd, Rv, preff, Treff, pbot, Phi_bot, rho_bot 30 NUM :: kappa 31 NUM1(max_nb_stage), BIND(C) :: tauj ! diagonal of fast Butcher tableau 32 NUM2(max_nb_stage,max_nb_stage), BIND(C) :: cslj, cflj ! slow and fast modified Butcher tableaus 33 NUM1(:), ALLOCATABLE :: le_de, fv, Av, Ai 34 NUM2(:,:), ALLOCATABLE :: Riv2, wee, ap,bp, mass_bl, mass_dak, mass_dbk 43 35 44 36 INTEGER(C_INT), BIND(C) :: comm_icosa … … 47 39 id_pvort_only=3, id_slow_hydro=4, id_fast=5, id_coriolis=6, id_theta=7, id_geopot=8, id_vert=9, & 48 40 id_solver=10, id_slow_NH=11, id_NH_geopot=12, id_vert_NH=13, id_update=14, nb_routines=14 49 DBL, PRIVATE :: start_time, time_spent(nb_routines) ! time spent in each kernel41 TIME, PRIVATE :: start_time, time_spent(nb_routines) ! time spent in each kernel 50 42 INTEGER, PRIVATE :: current_id, nb_calls(nb_routines) 51 43 INTEGER(KIND=8), PRIVATE :: bytes(nb_routines) ! bytes read or written by each kernel … … 61 53 num(:), & ! number of cells to send to / receive from other MPI ranks 62 54 cells(:) ! local indices of cells to send/receive 63 DBL, ALLOCATABLE :: buf2(:,:)55 NUM, ALLOCATABLE :: buf2(:,:) 64 56 END TYPE Halo_transfer 65 57 TYPE(Halo_transfer), TARGET :: send_info(transfer_max), recv_info(transfer_max) … … 79 71 SUBROUTINE print_trace() 80 72 INTEGER :: id 81 DBL:: total_spent73 TIME :: total_spent 82 74 !$OMP MASTER 83 75 total_spent=SUM(time_spent) … … 106 98 107 99 SUBROUTINE exit_trace() 108 DBL:: elapsed100 TIME :: elapsed 109 101 !$OMP MASTER 110 102 elapsed = OMP_GET_WTIME()-start_time … … 180 172 END SUBROUTINE init_mesh 181 173 174 ! Input arrays to init_metric and init_hybrid are declared DBL 175 ! => always float64 on the Python side 176 ! They are copied to Fortran arrays of type NUM (float or double) 177 182 178 SUBROUTINE init_metric(Ai_, Av_, fv_, le_de_, Riv2_, wee_) BINDC(init_metric) 183 DOUBLE1(primal_num) :: Ai_ 184 DOUBLE1(dual_num) :: Av_, fv_ 185 DOUBLE1(edge_num) :: le_de_ 186 DOUBLE2(max_dual_deg,dual_num) :: Riv2_ 187 DOUBLE2(max_trisk_deg,edge_num) :: wee_ 179 DBL :: Ai_(primal_num), Av_(dual_num), fv_(dual_num), le_de_(edge_num), & 180 Riv2_(max_dual_deg,dual_num), wee_(max_trisk_deg,edge_num) 188 181 PRINT *, 'init_metric ...' 189 182 ALLOC1(Ai,primal_num) … … 235 228 ! 236 229 SUBROUTINE init_hybrid(bl,dak,dbk) BINDC(init_hybrid) 237 D OUBLE2(llm+1, primal_num) :: bl238 DOUBLE2(llm, primal_num) :: dak,dbk230 DBL :: bl(llm+1, primal_num), & 231 dak(llm, primal_num), dbk(llm, primal_num) 239 232 PRINT *, 'Setting hybrid coefficients ...' 240 233 ALLOC2(mass_bl, llm+1, primal_num)
Note: See TracChangeset
for help on using the changeset viewer.