- Timestamp:
- 08/31/12 15:41:37 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/nemo/current/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90
r1 r44 35 35 USE sms_pisces ! PISCES bio-model 36 36 USE sms_lobster ! LOBSTER bio-model 37 USE wrk_nemo ! Memory allocation 37 38 38 39 IMPLICIT NONE … … 67 68 !! * Substitutions 68 69 # include "top_substitute.h90" 70 # include "zdfddm_substitute.h90" 69 71 !!---------------------------------------------------------------------- 70 72 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 388 390 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmlrad2 ! | (-> for trb<0 corr in trcrad) 389 391 ! 390 CHARACTER (LEN= 5) :: clvar392 CHARACTER (LEN=10) :: clvar 391 393 #if defined key_dimgout 392 394 INTEGER :: iyear,imon,iday … … 801 803 !-- Output the fields 802 804 clvar = trim(ctrcnm(jn))//"ml" ! e.g. detml, zooml, nh4ml, etc. 803 CALL histwrite( nidtrd(jn), clvar, it, tml_trc(:,:,jn), ndimtrd1, ndextrd1 )804 CALL histwrite( nidtrd(jn), clvar//"_tot" , it, ztmltot(:,:,jn), ndimtrd1, ndextrd1 )805 CALL histwrite( nidtrd(jn), clvar//"_res" , it, ztmlres(:,:,jn), ndimtrd1, ndextrd1 )805 CALL histwrite( nidtrd(jn), trim(clvar) , it, tml_trc(:,:,jn), ndimtrd1, ndextrd1 ) 806 CALL histwrite( nidtrd(jn), trim(clvar)//"_tot" , it, ztmltot(:,:,jn), ndimtrd1, ndextrd1 ) 807 CALL histwrite( nidtrd(jn), trim(clvar)//"_res" , it, ztmlres(:,:,jn), ndimtrd1, ndextrd1 ) 806 808 807 809 DO jl = 1, jpltrd_trc - 2 808 CALL histwrite( nidtrd(jn), trim(clvar //ctrd_trc(jl,2)), &810 CALL histwrite( nidtrd(jn), trim(clvar)//trim(ctrd_trc(jl,2)), & 809 811 & it, tmltrd_trc(:,:,jl,jn), ndimtrd1, ndextrd1 ) 810 812 END DO 811 813 812 CALL histwrite( nidtrd(jn), trim(clvar //ctrd_trc(jpmld_trc_radb,2)), & ! now trcrad : jpltrd_trc - 1814 CALL histwrite( nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmld_trc_radb,2)), & ! now trcrad : jpltrd_trc - 1 813 815 & it, ztmlrad(:,:,jn), ndimtrd1, ndextrd1 ) 814 816 815 CALL histwrite( nidtrd(jn), trim(clvar //ctrd_trc(jpmld_trc_atf,2)), & ! now Asselin : jpltrd_trc817 CALL histwrite( nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmld_trc_atf,2)), & ! now Asselin : jpltrd_trc 816 818 & it, ztmlatf(:,:,jn), ndimtrd1, ndextrd1 ) 817 819 … … 827 829 ELSE ! <<< write the trends for passive tracer mean diagnostics 828 830 829 830 831 DO jn = 1, jptra 831 832 ! … … 835 836 clvar = trim(ctrcnm(jn))//"ml" ! e.g. detml, zooml, nh4ml, etc. 836 837 837 CALL histwrite( nidtrd(jn), clvar, it, tml_sum_trc(:,:,jn), ndimtrd1, ndextrd1 )838 CALL histwrite( nidtrd(jn), clvar//"_tot" , it, ztmltot2(:,:,jn), ndimtrd1, ndextrd1 )839 CALL histwrite( nidtrd(jn), clvar//"_res" , it, ztmlres2(:,:,jn), ndimtrd1, ndextrd1 )838 CALL histwrite( nidtrd(jn), trim(clvar) , it, tml_sum_trc(:,:,jn), ndimtrd1, ndextrd1 ) 839 CALL histwrite( nidtrd(jn), trim(clvar)//"_tot" , it, ztmltot2(:,:,jn), ndimtrd1, ndextrd1 ) 840 CALL histwrite( nidtrd(jn), trim(clvar)//"_res" , it, ztmlres2(:,:,jn), ndimtrd1, ndextrd1 ) 840 841 841 842 DO jl = 1, jpltrd_trc - 2 842 CALL histwrite( nidtrd(jn), trim(clvar //ctrd_trc(jl,2)), &843 CALL histwrite( nidtrd(jn), trim(clvar)//trim(ctrd_trc(jl,2)), & 843 844 & it, ztmltrd2(:,:,jl,jn), ndimtrd1, ndextrd1 ) 844 845 END DO 845 846 846 CALL histwrite( nidtrd(jn), trim(clvar //ctrd_trc(jpmld_trc_radb,2)), & ! now trcrad : jpltrd_trc - 1847 CALL histwrite( nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmld_trc_radb,2)), & ! now trcrad : jpltrd_trc - 1 847 848 & it, ztmlrad2(:,:,jn), ndimtrd1, ndextrd1 ) 848 849 849 CALL histwrite( nidtrd(jn), trim(clvar //ctrd_trc(jpmld_trc_atf,2)), & ! now Asselin : jpltrd_trc850 CALL histwrite( nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmld_trc_atf,2)), & ! now Asselin : jpltrd_trc 850 851 & it, ztmlatf2(:,:,jn), ndimtrd1, ndextrd1 ) 851 852 … … 1148 1149 !!---------------------------------------------------------------------- 1149 1150 INTEGER :: inum ! logical unit 1150 INTEGER :: ilseq, jl, jn 1151 INTEGER :: ilseq, jl, jn, iiter 1151 1152 REAL(wp) :: zjulian, zsto, zout 1152 1153 CHARACTER (LEN=40) :: clop … … 1154 1155 CHARACTER (LEN=12) :: clmxl 1155 1156 CHARACTER (LEN=16) :: cltrcu 1156 CHARACTER (LEN= 5) :: clvar1157 CHARACTER (LEN=10) :: clvar 1157 1158 1158 1159 !!---------------------------------------------------------------------- … … 1192 1193 ENDIF 1193 1194 1194 IF( ln_trcadv_muscl.AND. .NOT. ln_trdmld_trc_instant ) THEN1195 IF( ( ln_trcadv_muscl .OR. ln_trcadv_muscl2 ) .AND. .NOT. ln_trdmld_trc_instant ) THEN 1195 1196 WRITE(numout,cform_err) 1196 1197 WRITE(numout,*) ' Currently, you can NOT use simultaneously tracer MUSCL ' … … 1205 1206 ENDIF 1206 1207 1207 IF( ln_trcadv_muscl2 .AND. .NOT. ln_trdmld_trc_instant ) THEN1208 WRITE(numout,cform_err)1209 WRITE(numout,*) ' Currently, you can NOT use simultaneously tracer MUSCL2 '1210 WRITE(numout,*) ' advection and window averaged diagnostics of ML trends. '1211 WRITE(numout,*) ' WHY? Everything in trdmld_trc is coded for leap-frog, and '1212 WRITE(numout,*) ' MUSCL scheme is Euler forward for passive tracers (note '1213 WRITE(numout,*) ' that MUSCL is leap-frog for active tracers T/S). '1214 WRITE(numout,*) ' In particuliar, entrainment trend would be FALSE. However '1215 WRITE(numout,*) ' this residual is correct for instantaneous ML diagnostics.'1216 WRITE(numout,*)1217 nstop = nstop + 11218 ENDIF1219 1220 1208 ! I.2 Initialize arrays to zero or read a restart file 1221 1209 ! ---------------------------------------------------- … … 1302 1290 # endif 1303 1291 zout = nn_trd_trc * rdt 1292 iiter = ( nittrc000 - 1 ) / nn_dttrc 1304 1293 1305 1294 IF(lwp) WRITE (numout,*) ' netCDF initialization' … … 1339 1328 CALL dia_nam( clhstnam, nn_trd_trc, csuff ) 1340 1329 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 1341 & 1, jpi, 1, jpj, nittrc000, zjulian, rdt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set )1330 & 1, jpi, 1, jpj, iiter, zjulian, rdt, nh_t(jn), nidtrd(jn), domain_id=nidom, snc4chunks=snc4set ) 1342 1331 1343 1332 !-- Define the ML depth variable … … 1352 1341 CALL dia_nam( clhstnam, nn_trd_trc, 'trdbio' ) 1353 1342 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 1354 & 1, jpi, 1, jpj, nittrc000, zjulian, rdt, nh_tb, nidtrdbio, domain_id=nidom, snc4chunks=snc4set )1343 & 1, jpi, 1, jpj, iiter, zjulian, rdt, nh_tb, nidtrdbio, domain_id=nidom, snc4chunks=snc4set ) 1355 1344 #endif 1356 1345 … … 1373 1362 IF( ln_trdtrc(jn) ) THEN 1374 1363 clvar = trim(ctrcnm(jn))//"ml" ! e.g. detml, zooml, no3ml, etc. 1375 CALL histdef(nidtrd(jn), clvar, clmxl//" "//trim(ctrcnm(jn))//" Mixed Layer ", &1364 CALL histdef(nidtrd(jn), trim(clvar), clmxl//" "//trim(ctrcnm(jn))//" Mixed Layer ", & 1376 1365 & "mmole-N/m3", jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 1377 CALL histdef(nidtrd(jn), clvar//"_tot" , clmxl//" "//trim(ctrcnm(jn))//" Total trend ", &1366 CALL histdef(nidtrd(jn), trim(clvar)//"_tot" , clmxl//" "//trim(ctrcnm(jn))//" Total trend ", & 1378 1367 & cltrcu, jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zout, zout ) 1379 CALL histdef(nidtrd(jn), clvar//"_res" , clmxl//" "//trim(ctrcnm(jn))//" dh/dt Entrainment (Resid.)", &1368 CALL histdef(nidtrd(jn), trim(clvar)//"_res" , clmxl//" "//trim(ctrcnm(jn))//" dh/dt Entrainment (Resid.)", & 1380 1369 & cltrcu, jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zout, zout ) 1381 1370 1382 1371 DO jl = 1, jpltrd_trc - 2 ! <== only true if jpltrd_trc == jpmld_trc_atf 1383 CALL histdef(nidtrd(jn), trim(clvar //ctrd_trc(jl,2)), clmxl//" "//clvar//ctrd_trc(jl,1), &1372 CALL histdef(nidtrd(jn), trim(clvar)//trim(ctrd_trc(jl,2)), clmxl//" "//clvar//ctrd_trc(jl,1), & 1384 1373 & cltrcu, jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zsto, zout ) ! IOIPSL: time mean 1385 1374 END DO ! if zsto=rdt above 1386 1375 1387 CALL histdef(nidtrd(jn), trim(clvar //ctrd_trc(jpmld_trc_radb,2)), clmxl//" "//clvar//ctrd_trc(jpmld_trc_radb,1), &1376 CALL histdef(nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmld_trc_radb,2)), clmxl//" "//clvar//ctrd_trc(jpmld_trc_radb,1), & 1388 1377 & cltrcu, jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zout, zout ) ! IOIPSL: NO time mean 1389 1378 1390 CALL histdef(nidtrd(jn), trim(clvar //ctrd_trc(jpmld_trc_atf,2)), clmxl//" "//clvar//ctrd_trc(jpmld_trc_atf,1), &1379 CALL histdef(nidtrd(jn), trim(clvar)//trim(ctrd_trc(jpmld_trc_atf,2)), clmxl//" "//clvar//ctrd_trc(jpmld_trc_atf,1), & 1391 1380 & cltrcu, jpi, jpj, nh_t(jn), 1 , 1, 1 , -99 , 32, clop, zout, zout ) ! IOIPSL: NO time mean 1392 1381 !
Note: See TracChangeset
for help on using the changeset viewer.