- Timestamp:
- 12/30/17 02:00:38 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/unstructured/caldyn_unstructured.F90
r650 r658 21 21 #define DECLARE_VERTICES INTEGER VERTICES 22 22 #define PHI_BOT(ij) Phi_bot 23 #define PHI_BOT_VAR 0.24 23 25 24 #define BINDC_(thename) BIND(C, name=#thename) … … 40 39 #define HASNAN(field) (ANY(.NOT.ABS(field)<1e20)) 41 40 41 #define START_TRACE(id,nprimal,ndual,nedge) CALL enter_trace(id, 8*llm*((nprimal)*primal_num+(ndual)*dual_num+(nedge)*edge_num) ) 42 #define STOP_TRACE CALL exit_trace() 43 42 44 !----------------------------- Non-Hydrostatic ----------------------------- 43 45 44 SUBROUTINE compute_NH_geopot(tau,dummy, m_ik, m_il, theta, W_il, Phi_il) 45 FIELD_MASS :: m_ik, theta, p_ik, A_ik, C_ik ! IN*2,LOCAL*3 46 FIELD_GEOPOT :: m_il, W_il, Phi_il, Phi_star_il, R_il, x_il, B_il, D_il ! IN,INOUT*2, LOCAL*5 47 DBL :: tau, dummy, gamma, rho_ij, X_ij, Y_ij, wil, tau2_g, g2, gm2, ml_g2, c2_mik 48 DECLARE_INDICES 46 SUBROUTINE compute_NH_geopot(tau, m_ik, m_il, theta, W_il, Phi_il) 47 FIELD_MASS :: m_ik, theta ! IN*2 48 FIELD_GEOPOT :: m_il, W_il, Phi_il, Phi_star_il ! IN,INOUT*2, LOCAL*5 49 DBL :: tau, gamma, tau2_g, tau2_g2, g2, gm2, vreff, Rd_preff 49 50 INTEGER :: iter 51 DECLARE_INDICES 52 DBL :: rho_ij, X_ij, Y_ij, wil, rho_c2_mik, c2_mik, ml_g2 53 #define COLUMN 0 54 #if COLUMN 55 DOUBLE1(llm) :: pk, Ak, Ck 56 DOUBLE1(llm+1):: Rl, Bl, Dl, xl 57 #define p_ik(l,ij) pk(l) 58 #define A_ik(l,ij) Ak(l) 59 #define C_ik(l,ij) Ck(l) 60 #define R_il(l,ij) Rl(l) 61 #define B_il(l,ij) Bl(l) 62 #define D_il(l,ij) Dl(l) 63 #define x_il(l,ij) xl(l) 64 #else 65 FIELD_MASS :: p_ik, A_ik, C_ik 66 FIELD_GEOPOT :: R_il, B_il, D_il, x_il 67 #endif 68 69 START_TRACE(id_NH_geopot, 7,0,0) 50 70 #include "../kernels_unst/compute_NH_geopot.k90" 71 STOP_TRACE 72 73 #if COLUMN 74 #undef p_ik 75 #undef A_ik 76 #undef C_ik 77 #undef R_il 78 #undef B_il 79 #undef D_il 80 #undef x_il 81 #endif 82 #undef COLUMN 51 83 END SUBROUTINE compute_NH_geopot 52 84 … … 59 91 DECLARE_EDGES 60 92 DBL :: W_el, W2_el, gPhi2, dP, divG, u2, uu 93 START_TRACE(id_slow_NH, 5,0,3) 61 94 #include "../kernels_unst/caldyn_slow_NH.k90" 95 STOP_TRACE 62 96 END SUBROUTINE compute_caldyn_slow_NH 63 97 … … 69 103 FIELD_U :: du ! OUT 70 104 DECLARE_INDICES 71 DBL :: X_ij, rho_ij, T_ij, gamma, Cvd, vreff 105 DBL :: X_ij, rho_ij, T_ij, gamma, Cvd, vreff, Rd_preff 106 #include "../kernels_unst/caldyn_mil.k90" 107 IF(tau>0) THEN ! solve implicit problem for geopotential 108 CALL compute_NH_geopot(tau, rhodz, m_il, theta, W, geopot) 109 END IF 110 START_TRACE(id_solver, 7,0,1) 72 111 #include "../kernels_unst/caldyn_solver.k90" 112 STOP_TRACE 73 113 END SUBROUTINE compute_caldyn_solver 74 114 … … 79 119 DECLARE_INDICES 80 120 DBL :: w_ij, wflux_ij 121 START_TRACE(id_vert_NH, 6,0,1) 81 122 #include "../kernels_unst/caldyn_vert_NH.k90" 123 STOP_TRACE 82 124 END SUBROUTINE compute_caldyn_vert_NH 83 125 … … 91 133 DECLARE_INDICES 92 134 DBL :: gdz, ke, uu, chi, gv, exner_ik, temp_ik, p_ik, qv, Rmix 135 START_TRACE(id_geopot, 3,0,3) 93 136 #include "../kernels_unst/compute_geopot.k90" 137 STOP_TRACE 94 138 END SUBROUTINE compute_geopot 95 139 ! … … 102 146 LOGICAL, PARAMETER :: zero=.TRUE. 103 147 DBL :: ke, uu 148 START_TRACE(id_slow_hydro, 3,0,3) 104 149 #include "../kernels_unst/caldyn_slow_hydro.k90" 150 STOP_TRACE 105 151 END SUBROUTINE compute_caldyn_slow_hydro 106 152 … … 118 164 wwuu=0. 119 165 !$OMP BARRIER 166 START_TRACE(id_vert, 5,0,3) 120 167 #include "../kernels_unst/caldyn_wflux.k90" 121 168 #include "../kernels_unst/caldyn_dmass.k90" 122 169 #include "../kernels_unst/caldyn_vert.k90" 170 STOP_TRACE 123 171 END SUBROUTINE caldyn_vert 124 172 … … 130 178 DECLARE_EDGES 131 179 DBL :: divF, du_trisk 180 START_TRACE(id_coriolis, 3,4,0) ! primal, dual, edge 132 181 #include "../kernels_unst/coriolis.k90" 182 STOP_TRACE 133 183 END SUBROUTINE 134 184 … … 139 189 DECLARE_INDICES 140 190 DBL :: m 191 START_TRACE(id_theta, 3,0,0) ! primal, dual, edge 141 192 #include "../kernels_unst/theta.k90" 193 STOP_TRACE 142 194 END SUBROUTINE 143 195 … … 150 202 DECLARE_VERTICES 151 203 DBL :: etav, hv 204 START_TRACE(id_pvort_only, 1,1,2) ! primal, dual, edge 152 205 #include "../kernels_unst/pvort_only.k90" 206 STOP_TRACE 153 207 END SUBROUTINE compute_pvort_only 154 208 … … 162 216 DECLARE_EDGES 163 217 DBL :: due 164 218 START_TRACE(id_fast, 4,0,2) ! primal, dual, edge 165 219 #include "../kernels_unst/caldyn_fast.k90" 166 220 STOP_TRACE 167 221 END SUBROUTINE compute_caldyn_fast 168 222
Note: See TracChangeset
for help on using the changeset viewer.