Changeset 2027 for branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF
- Timestamp:
- 2010-07-29T13:33:05+02:00 (14 years ago)
- Location:
- branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF/zdfbfr.F90
r1708 r2027 26 26 PRIVATE 27 27 28 PUBLIC zdf_bfr ! called by step.F90 28 PUBLIC zdf_bfr ! called by step.F90 29 PUBLIC zdf_bfr_init ! called by opa.F90 29 30 30 31 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: bfrua , bfrva !: Bottom friction coefficients set in zdfbfr … … 73 74 REAL(wp) :: zvu, zuv, zecu, zecv ! temporary scalars 74 75 !!---------------------------------------------------------------------- 75 76 77 IF( kt == nit000 ) CALL zdf_bfr_init ! initialisation78 76 79 77 IF( nn_bfr == 2 ) THEN ! quadratic botton friction -
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF/zdfddm.F90
r1601 r2027 24 24 PRIVATE 25 25 26 PUBLIC zdf_ddm ! called by step.F90 26 PUBLIC zdf_ddm ! called by step.F90 27 PUBLIC zdf_ddm_init ! called by opa.F90 27 28 28 29 LOGICAL , PUBLIC, PARAMETER :: lk_zdfddm = .TRUE. !: double diffusive mixing flag … … 85 86 REAL(wp), DIMENSION(jpi,jpj) :: zmsks, zmskf, zmskd1, zmskd2, zmskd3 ! 2D workspace 86 87 !!---------------------------------------------------------------------- 87 88 IF ( kt == nit000 ) CALL zdf_ddm_init ! Initialization (first time-step only)89 88 90 89 ! ! =============== -
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF/zdfkpp.F90
r2000 r2027 28 28 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 29 29 USE prtctl ! Print control 30 USE trdmod ! momentum/tracers trends 30 USE trdmod_oce ! ocean trends definition 31 USE trdtra ! tracers trends 31 32 32 33 IMPLICIT NONE 33 34 PRIVATE 34 35 35 PUBLIC zdf_kpp ! routine called by step.F90 36 PUBLIC tra_kpp ! routine called by step.F90 36 PUBLIC zdf_kpp ! routine called by step.F90 37 PUBLIC zdf_kpp_init ! routine called by opa.F90 38 PUBLIC tra_kpp ! routine called by step.F90 39 #if defined key_top 40 PUBLIC trc_kpp ! routine called by trcstp.F90 41 #endif 37 42 38 43 LOGICAL , PUBLIC, PARAMETER :: lk_zdfkpp = .TRUE. !: KPP vertical mixing flag … … 1237 1242 !! 1238 1243 !! ** Purpose : compute and add to the tracer trend the non-local 1239 !! tracer flux1244 !! tracer flux 1240 1245 !! 1241 1246 !! ** Method : ??? 1242 1247 !! 1243 1248 !! history : 1244 !! 9.0 ! 05-11 (G. Madec) Original code 1249 !! 1.0 ! 2005-11 (G. Madec) Original code 1250 !! 3.3 ! 2010-06 (C. Ethe) Merge TRA-TRC 1245 1251 !!---------------------------------------------------------------------- 1246 1252 !! * Modules used 1247 USE oce, ONLY : ztrdt => ua, & ! use ua as 3D workspace 1248 ztrds => va ! use va as 3D workspace 1253 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt, ztrds ! 3D workspace 1249 1254 !!---------------------------------------------------------------------- 1250 1255 INTEGER, INTENT(in) :: kt … … 1252 1257 1253 1258 IF( kt == nit000 ) THEN 1254 IF(lwp) WRITE(numout,*) 1259 IF(lwp) WRITE(numout,*) 1255 1260 IF(lwp) WRITE(numout,*) 'tra_kpp : KPP non-local tracer fluxes' 1256 1261 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 1257 1262 ENDIF 1258 1263 1259 1260 ! Save ta and sa trends 1261 IF( l_trdtra ) THEN 1262 ztrdt(:,:,:) = ta(:,:,:) 1263 ztrds(:,:,:) = sa(:,:,:) 1264 IF( l_trdtra ) THEN !* Save ta and sa trends 1265 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 1266 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsa(:,:,:,jp_sal) 1264 1267 ENDIF 1265 1268 1266 1269 ! add non-local temperature and salinity flux ( in convective case only) 1267 1270 DO jk = 1, jpkm1 1268 DO jj = 2, jpjm1 1271 DO jj = 2, jpjm1 1269 1272 DO ji = fs_2, fs_jpim1 1270 t a(ji,jj,jk) = ta(ji,jj,jk)&1271 & - ( ghats(ji,jj,jk ) * avt(ji,jj,jk ) &1272 & - ghats(ji,jj,jk+1) * avt(ji,jj,jk+1) ) * wt0(ji,jj) / fse3t(ji,jj,jk)1273 sa(ji,jj,jk) = sa(ji,jj,jk)&1274 & - ( ghats(ji,jj,jk ) * fsavs(ji,jj,jk ) &1275 & - ghats(ji,jj,jk+1) * fsavs(ji,jj,jk+1) ) * ws0(ji,jj) / fse3t(ji,jj,jk)1273 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) & 1274 & - ( ghats(ji,jj,jk ) * avt (ji,jj,jk ) & 1275 & - ghats(ji,jj,jk+1) * avt (ji,jj,jk+1) ) * wt0(ji,jj) / fse3t(ji,jj,jk) 1276 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) & 1277 & - ( ghats(ji,jj,jk ) * fsavs(ji,jj,jk ) & 1278 & - ghats(ji,jj,jk+1) * fsavs(ji,jj,jk+1) ) * ws0(ji,jj) / fse3t(ji,jj,jk) 1276 1279 END DO 1277 1280 END DO … … 1280 1283 ! save the non-local tracer flux trends for diagnostic 1281 1284 IF( l_trdtra ) THEN 1282 ztrdt(:,:,:) = t a(:,:,:) - ztrdt(:,:,:)1283 ztrds(:,:,:) = sa(:,:,:) - ztrds(:,:,:)1285 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 1286 ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 1284 1287 !!bug gm jpttdzdf ==> jpttkpp 1285 CALL trd_mod(ztrdt, ztrds, jptra_trd_zdf, 'TRA', kt) 1288 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_zdf, ztrdt ) 1289 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_zdf, ztrds ) 1290 DEALLOCATE( ztrdt ) ; DEALLOCATE( ztrds ) 1286 1291 ENDIF 1287 1292 1288 IF(ln_ctl) THEN 1289 CALL prt_ctl( tab3d_1=t a, clinfo1=' kpp - Ta: ', mask1=tmask, &1290 & tab3d_2= sa, clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' )1293 IF(ln_ctl) THEN 1294 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' kpp - Ta: ', mask1=tmask, & 1295 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 1291 1296 ENDIF 1292 1297 1293 1298 END SUBROUTINE tra_kpp 1294 1299 1300 #if defined key_top 1301 !!---------------------------------------------------------------------- 1302 !! 'key_top' TOP models 1303 !!---------------------------------------------------------------------- 1304 SUBROUTINE trc_kpp( kt ) 1305 !!---------------------------------------------------------------------- 1306 !! *** ROUTINE trc_kpp *** 1307 !! 1308 !! ** Purpose : compute and add to the tracer trend the non-local 1309 !! tracer flux 1310 !! 1311 !! ** Method : ??? 1312 !! 1313 !! history : 1314 !! 9.0 ! 2005-11 (G. Madec) Original code 1315 !! NEMO 3.3 ! 2010-06 (C. Ethe ) Adapted to passive tracers 1316 !!---------------------------------------------------------------------- 1317 USE trc 1318 USE prtctl_trc ! Print control 1319 !! * Arguments 1320 INTEGER , INTENT( in ) :: kt ! ocean time-step index 1321 !! * Local declarations 1322 INTEGER :: ji, jj, jk, jn ! Dummy loop indices 1323 REAL(wp) :: ztra, zflx 1324 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrtrd 1325 !!---------------------------------------------------------------------- 1326 1327 IF( kt == nit000 ) THEN 1328 IF(lwp) WRITE(numout,*) 1329 IF(lwp) WRITE(numout,*) 'trc_kpp : KPP non-local tracer fluxes' 1330 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 1331 ENDIF 1332 1333 IF( l_trdtrc ) ALLOCATE( ztrtrd(jpi,jpj,jpk) ) 1334 ! 1335 DO jn = 1, jptra 1336 ! 1337 IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn) 1338 ! add non-local on passive tracer flux ( in convective case only) 1339 DO jk = 1, jpkm1 1340 DO jj = 2, jpjm1 1341 DO ji = fs_2, fs_jpim1 1342 ! Surface tracer flux for non-local term 1343 zflx = - ( emps(ji,jj) * tra(ji,jj,1,jn) * rcs ) * tmask(ji,jj,1) 1344 ! compute the trend 1345 ztra = - ( ghats(ji,jj,jk ) * fsavs(ji,jj,jk ) & 1346 & - ghats(ji,jj,jk+1) * fsavs(ji,jj,jk+1) ) * zflx / fse3t(ji,jj,jk) 1347 ! add the trend to the general trend 1348 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 1349 END DO 1350 END DO 1351 END DO 1352 ! save the non-local tracer flux trends for diagnostic 1353 IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) 1354 CALL trd_tra( kt, 'TRC', jn, jptra_trd_zdf, ztrtrd(:,:,:,jn) ) 1355 ! 1356 END DO 1357 IF( l_trdtrc ) DEALLOCATE( ztrtrd ) 1358 IF( ln_ctl ) THEN 1359 WRITE(charout, FMT="(' kpp')") ; CALL prt_ctl_trc_info(charout) 1360 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=clname, clinfo2='trd' ) 1361 ENDIF 1362 ! 1363 END SUBROUTINE trc_kpp 1364 #endif 1295 1365 1296 1366 SUBROUTINE zdf_kpp_init -
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF/zdfric.F90
r1601 r2027 28 28 PRIVATE 29 29 30 PUBLIC zdf_ric ! called by step.F90 30 PUBLIC zdf_ric ! called by step.F90 31 PUBLIC zdf_ric_init ! called by opa.F90 31 32 32 33 LOGICAL, PUBLIC, PARAMETER :: lk_zdfric = .TRUE. !: Richardson vertical mixing flag … … 82 83 !!---------------------------------------------------------------------- 83 84 84 IF( kt == nit000 ) CALL zdf_ric_init ! Initialization (first time-step only)85 86 85 ! ! =============== 87 86 DO jk = 2, jpkm1 ! Horizontal slab -
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF/zdftke.F90
r1756 r2027 54 54 55 55 PUBLIC zdf_tke ! routine called in step module 56 PUBLIC tke_init ! routine called in opa module 56 57 PUBLIC tke_rst ! routine called in step module 57 58 … … 149 150 !!---------------------------------------------------------------------- 150 151 ! 151 IF( kt == nit000 ) CALL tke_init ! initialisation152 !153 152 CALL tke_tke ! now tke (en) 154 153 ! -
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF/zdftke_old.F90
r1617 r2027 49 49 50 50 PUBLIC zdf_tke_old ! routine called in step module 51 PUBLIC zdf_tke_init ! routine called in opa module 51 52 52 53 LOGICAL , PUBLIC, PARAMETER :: lk_zdftke_old = .TRUE. !: TKE vertical mixing flag … … 182 183 !!-------------------------------------------------------------------- 183 184 184 IF( kt == nit000 ) CALL zdf_tke_init ! Initialization (first time-step only)185 186 185 ! ! Local constant initialization 187 186 zbbrau = .5 * rn_ebb / rau0 -
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/ZDF/zdftmx.F90
r1601 r2027 27 27 PRIVATE 28 28 29 PUBLIC zdf_tmx ! called in step module 29 PUBLIC zdf_tmx ! called in step module 30 PUBLIC zdf_tmx_init ! called in opa module 30 31 31 32 LOGICAL, PUBLIC, PARAMETER :: lk_zdftmx = .TRUE. !: tidal mixing flag … … 96 97 REAL(wp), DIMENSION(jpi,jpj) :: zkz ! temporary 2D workspace 97 98 !!---------------------------------------------------------------------- 98 99 !100 IF( kt == nit000 ) CALL zdf_tmx_init ! Initialization (first time-step only)101 99 102 100 ! ! ----------------------- !
Note: See TracChangeset
for help on using the changeset viewer.