- Timestamp:
- 2011-12-11T16:00:26+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90
r2715 r3211 36 36 37 37 PUBLIC tra_zdf_exp ! routine called by step.F90 38 39 !! * Control permutation of array indices 40 # include "oce_ftrans.h90" 41 # include "dom_oce_ftrans.h90" 42 # include "domvvl_ftrans.h90" 43 # include "zdf_oce_ftrans.h90" 44 # include "zdfddm_ftrans.h90" 45 # include "trc_oce_ftrans.h90" 38 46 39 47 !! * Substitutions … … 75 83 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 76 84 USE wrk_nemo, ONLY: zwx => wrk_3d_6, zwy => wrk_3d_7 ! 3D workspace 85 86 !! DCSE_NEMO: need additional directives for renamed module variables 87 !FTRANS zwx zwy :I :I :z 77 88 ! 78 89 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 81 92 INTEGER , INTENT(in ) :: kn_zdfexp ! number of sub-time step 82 93 REAL(wp), DIMENSION( jpk ), INTENT(in ) :: p2dt ! vertical profile of tracer time-step 83 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb ! before and now tracer fields 84 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pta ! tracer trend 94 95 !! DCSE_NEMO: This style defeats ftrans 96 ! REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb ! before and now tracer fields 97 ! REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pta ! tracer trend 98 99 !FTRANS ptb pta :I :I :z : 100 REAL(wp), INTENT(in ) :: ptb(jpi,jpj,jpk,kjpt) ! before and now tracer fields 101 REAL(wp), INTENT(inout) :: pta(jpi,jpj,jpk,kjpt) ! tracer trend 85 102 ! 86 103 INTEGER :: ji, jj, jk, jn, jl ! dummy loop indices … … 116 133 DO jl = 1, kn_zdfexp 117 134 ! ! first vertical derivative 135 #if defined key_z_first 136 DO jj = 2, jpjm1 137 DO ji = 2, jpim1 ! vector opt. 138 DO jk = 2, jpk 139 #else 118 140 DO jk = 2, jpk 119 141 DO jj = 2, jpjm1 120 142 DO ji = fs_2, fs_jpim1 ! vector opt. 143 #endif 121 144 zave3r = 1.e0 / fse3w_n(ji,jj,jk) 122 145 IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN ! temperature : use of avt … … 129 152 END DO 130 153 ! 154 #if defined key_z_first 155 ! second vertical derivative ==> tracer at kt+l*2*rdt/nn_zdfexp 156 DO jj = 2, jpjm1 157 DO ji = 2, jpim1 158 DO jk = 1, jpkm1 159 #else 131 160 DO jk = 1, jpkm1 ! second vertical derivative ==> tracer at kt+l*2*rdt/nn_zdfexp 132 161 DO jj = 2, jpjm1 133 162 DO ji = fs_2, fs_jpim1 ! vector opt. 163 #endif 134 164 ze3tr = zlavmr / fse3t_n(ji,jj,jk) 135 165 zwx(ji,jj,jk) = zwx(ji,jj,jk) + p2dt(jk) * ( zwy(ji,jj,jk) - zwy(ji,jj,jk+1) ) * ze3tr … … 143 173 ! ------------------------------ 144 174 IF( lk_vvl ) THEN ! variable level thickness : leap-frog on tracer*e3t 175 #if defined key_z_first 176 DO jj = 2, jpjm1 177 DO ji = 2, jpim1 178 DO jk = 1, jpkm1 179 #else 145 180 DO jk = 1, jpkm1 146 181 DO jj = 2, jpjm1 147 182 DO ji = fs_2, fs_jpim1 ! vector opt. 183 #endif 148 184 ze3tb = fse3t_b(ji,jj,jk) / fse3t(ji,jj,jk) ! before e3t 149 185 ztra = zwx(ji,jj,jk) - ptb(ji,jj,jk,jn) + p2dt(jk) * pta(ji,jj,jk,jn) ! total trends * 2*rdt … … 153 189 END DO 154 190 ELSE ! fixed level thickness : leap-frog on tracers 191 #if defined key_z_first 192 DO jj = 2, jpjm1 193 DO ji = 2, jpim1 194 DO jk = 1, jpkm1 195 #else 155 196 DO jk = 1, jpkm1 156 197 DO jj = 2, jpjm1 157 198 DO ji = fs_2, fs_jpim1 ! vector opt. 199 #endif 158 200 pta(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt(jk) * pta(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 159 201 END DO
Note: See TracChangeset
for help on using the changeset viewer.