Changeset 1254
- Timestamp:
- 2009-01-13T10:58:39+01:00 (15 years ago)
- Location:
- trunk/NEMO/TOP_SRC
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/par_trc.F90
r1146 r1254 19 19 USE par_pisces ! PISCES model 20 20 USE par_cfc ! CFC 11 and 12 tracers 21 USE par_c14b ! C14 bomb tracer 21 22 USE par_my_trc ! user defined passive tracers 22 23 … … 26 27 ! Passive tracers : Total size 27 28 ! --------------- ! total number of passive tracers, of 2d and 3d output and trend arrays 28 INTEGER, PUBLIC, PARAMETER :: jptra = jp_lobster + jp_pisces + jp_cfc + jp_ my_trc29 INTEGER, PUBLIC, PARAMETER :: jpdia2d = jp_lobster_2d + jp_pisces_2d + jp_cfc_2d + jp_ my_trc_2d30 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_lobster_3d + jp_pisces_3d + jp_cfc_3d + jp_ my_trc_3d29 INTEGER, PUBLIC, PARAMETER :: jptra = jp_lobster + jp_pisces + jp_cfc + jp_c14b + jp_my_trc 30 INTEGER, PUBLIC, PARAMETER :: jpdia2d = jp_lobster_2d + jp_pisces_2d + jp_cfc_2d + jp_c14b_2d + jp_my_trc_2d 31 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_lobster_3d + jp_pisces_3d + jp_cfc_3d + jp_c14b_3d + jp_my_trc_3d 31 32 ! ! total number of sms diagnostic arrays 32 INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_ my_trc_trd33 INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_my_trc_trd 33 34 34 35 ! 1D configuration ("key_c1d") -
trunk/NEMO/TOP_SRC/trc.F90
r1146 r1254 39 39 !! passive tracers fields (before,now,after) 40 40 !! -------------------------------------------------- 41 REAL(wp), PUBLIC :: trai !: initial total tracer 42 REAL(wp), PUBLIC :: areatot !: total volume 41 REAL(wp), PUBLIC :: trai !: initial total tracer 42 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk) :: cvol !: masked grid volume 43 REAL(wp), PUBLIC :: areatot !: total volume 43 44 44 45 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk,jptra) :: trn !: traceur concentration for actual time step … … 49 50 !! passive tracers restart (input and output) 50 51 !! ------------------------------------------ 51 INTEGER , PUBLIC :: ndttrc !: frequency of step on passive tracers 52 INTEGER , PUBLIC :: nittrc000 !: first time step of passive tracers model 53 LOGICAL , PUBLIC :: lrsttr !: boolean term for restart i/o for passive tracers (namelist) 54 INTEGER , PUBLIC :: nutwrs !: output FILE for passive tracers restart 55 INTEGER , PUBLIC :: nutrst !: logical unit for restart FILE for passive tracers 56 INTEGER , PUBLIC :: nrsttr !: control of the time step ( 0 or 1 ) for pass. tr. 57 52 INTEGER , PUBLIC :: ndttrc !: frequency of step on passive tracers 53 INTEGER , PUBLIC :: nittrc000 !: first time step of passive tracers model 54 LOGICAL , PUBLIC :: lrsttr !: boolean term for restart i/o for passive tracers (namelist) 55 LOGICAL , PUBLIC :: lrst_trc !: logical to control the trc restart write 56 INTEGER , PUBLIC :: nutwrs !: output FILE for passive tracers restart 57 INTEGER , PUBLIC :: nutrst !: logical unit for restart FILE for passive tracers 58 INTEGER , PUBLIC :: nrsttr !: control of the time step ( 0 or 1 ) for pass. tr. 59 CHARACTER(len=32) :: cn_trcrst_in !: suffix of pass. tracer restart name (input) 60 CHARACTER(len=32) :: cn_trcrst_out !: suffix of pass. tracer restart name (output) 58 61 59 62 !! information for outputs -
trunk/NEMO/TOP_SRC/trcctl.F90
r1152 r1254 18 18 USE trcctl_pisces 19 19 USE trcctl_cfc 20 USE trcctl_c14b 20 21 USE trcctl_my_trc 21 22 … … 85 86 ENDIF 86 87 88 IF( lk_c14b ) THEN ; CALL trc_ctl_c14b ! C14 bomb tracers 89 ELSE ; IF(lwp) WRITE(numout,*) ' C14b not used' 90 ENDIF 91 92 87 93 IF( lk_my_trc ) THEN ; CALL trc_ctl_my_trc ! MY_TRC tracers 88 94 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used' -
trunk/NEMO/TOP_SRC/trcini.F90
r1177 r1254 21 21 USE trcctl 22 22 USE trclec 23 USE trcini_cfc ! CFC initialisation 24 USE trcini_lobster ! LOBSTER initialisation 25 USE trcini_pisces ! PISCES initialisation 26 USE trcini_my_trc ! MY_TRC initialisation 23 USE trcini_cfc ! CFC initialisation 24 USE trcini_lobster ! LOBSTER initialisation 25 USE trcini_pisces ! PISCES initialisation 26 USE trcini_c14b ! C14 bomb initialisation 27 USE trcini_my_trc ! MY_TRC initialisation 27 28 USE trcdta ! 28 29 USE trdmld_trc_oce … … 61 62 !!--------------------------------------------------------------------- 62 63 INTEGER :: jk, jn ! dummy loop indices 63 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbt ! workspace: masked grid volume64 64 CHARACTER (len=25) :: charout 65 65 … … 72 72 ! ! masked grid volume 73 73 DO jk = 1, jpk 74 zbt(:,:,jk) = e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:)74 cvol(:,:,jk) = e1t(:,:) * e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 75 75 END DO 76 #if defined key_off_degrad 77 DO jk = 1, jpk 78 zbt(:,:,:) = zbt(:,:,:) * facvol(:,:,jk) ! degrad option: reduction by facvol 79 ENDDO 76 77 ! total volume of the ocean 78 #if ! defined key_off_degrad 79 areatot = SUM( cvol(:,:,:) ) 80 #else 81 areatot = SUM( cvol(:,:,:) * facvol(:,:,:) ) ! degrad option: reduction by facvol 80 82 #endif 81 82 ! ! total volume of the ocean83 areatot = SUM( zbt(:,:,:) )84 83 IF( lk_mpp ) CALL mpp_sum( areatot ) ! sum over the global domain 85 84 … … 98 97 IF( lk_cfc ) THEN ; CALL trc_ini_cfc ! CFC tracers 99 98 ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used' 99 ENDIF 100 101 IF( lk_c14b ) THEN ; CALL trc_ini_c14b ! C14 bomb tracer 102 ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used' 100 103 ENDIF 101 104 … … 126 129 trai = 0.e0 127 130 DO jn = 1, jptra 128 trai = trai + SUM( trn(:,:,:,jn) * zbt(:,:,:) ) 131 #if ! defined key_off_degrad 132 trai = trai + SUM( trn(:,:,:,jn) * cvol(:,:,:) ) 133 #else 134 trai = trai + SUM( trn(:,:,:,jn) * cvol(:,:,:) * facvol(:,:,:) ) ! degrad option: reduction by facvol 135 #endif 129 136 END DO 130 137 IF( lk_mpp ) CALL mpp_sum( trai ) ! sum over the global domain -
trunk/NEMO/TOP_SRC/trclec.F90
r1177 r1254 25 25 USE trclsm_pisces ! PISCES namelist 26 26 USE trclsm_cfc ! CFC SMS namelist 27 USE trclsm_c14b ! C14 SMS namelist 27 28 USE trclsm_my_trc ! MY_TRC SMS namelist 28 29 USE in_out_manager ! I/O manager … … 69 70 70 71 !! 71 NAMELIST/namtoptrc/ ndttrc, nwritetrc, lrsttr, nrsttr, tracer 72 NAMELIST/namtoptrc/ ndttrc, nwritetrc, lrsttr, nrsttr, & 73 cn_trcrst_in, cn_trcrst_out, tracer 72 74 #if defined key_trdmld_trc || defined key_trc_diatrd 73 75 NAMELIST/namtoptrd/ ntrd_trc, nctls_trc, ucf_trc, & … … 82 84 83 85 clname = 'namelist_top' 84 CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', & 85 & 1, numout, .FALSE., 1 ) 86 86 CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', 1, numout, .FALSE., 1 ) 87 87 88 88 ! Namelist nattrc (files) … … 92 92 lrsttr = .FALSE. 93 93 nrsttr = 0 94 cn_trcrst_in = 'restart_trc' 95 cn_trcrst_out = 'restart_trc' 94 96 DO jn = 1, jptra 95 97 WRITE(ctrcnm(jn),'("TR_",I1)' ) jn … … 123 125 WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ', lrsttr 124 126 WRITE(numout,*) ' control of time step for p. tr. nrsttr = ', nrsttr 127 WRITE(numout,*) ' ' 125 128 DO jn = 1, jptra 126 129 WRITE(numout,*) ' tracer nb : ', jn … … 213 216 ENDIF 214 217 218 IF( lk_c14b ) THEN ; CALL trc_lsm_c14b ! C14 bomb tracers 219 ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used' 220 ENDIF 221 215 222 IF( lk_my_trc ) THEN ; CALL trc_lsm_my_trc ! MY_TRC tracers 216 223 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used' -
trunk/NEMO/TOP_SRC/trcrst.F90
r1177 r1254 19 19 USE sms_pisces ! PISCES variables 20 20 USE trcsms_cfc ! CFC variables 21 USE trcsms_c14b ! C14 variables 22 USE trcsms_my_trc ! MY_TRC variables 21 23 USE trctrp_lec 22 24 USE lib_mpp … … 30 32 PUBLIC trc_rst_wri ! called by ??? 31 33 32 LOGICAL, PUBLIC :: lrst_trc !: logical to control the trc restart write33 34 INTEGER, PUBLIC :: numrtr, numrtw !: logical unit for trc restart (read and write) 34 35 … … 73 74 ! create the file 74 75 IF(lwp) WRITE(numout,*) 75 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_ restart_trc"76 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_"//TRIM(cn_trcrst_out) 76 77 IF(lwp) WRITE(numout,*) ' open trc restart.output NetCDF file: '//clname 77 78 CALL iom_open( clname, numrtw, ldwrt = .TRUE., kiolib = jprstlib ) … … 122 123 END SELECT 123 124 124 CALL iom_open( 'restart_trc', numrtr, kiolib = jprstlib )125 CALL iom_open( cn_trcrst_in, numrtr, kiolib = jprstlib ) 125 126 126 127 CALL iom_get( numrtr, 'kt' , zkt ) … … 165 166 #if defined key_cfc 166 167 DO jn = jp_cfc0, jp_cfc1 167 CALL iom_get( numrtr, jpdom_autoglo, 'qint'//ctrcnm(jn), qint(:,:,jn) ) 168 CALL iom_get( numrtr, jpdom_autoglo, 'qtr'//ctrcnm(jn) , qtr( :,:,jn) ) 169 END DO 170 #endif 168 CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 169 END DO 170 #endif 171 172 #if defined key_c14b 173 CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn) , qint_c14(:,:) ) 174 #endif 175 176 #if defined key_my_trc 177 #endif 178 171 179 172 180 CALL iom_close( numrtr ) … … 222 230 #if defined key_cfc 223 231 DO jn = jp_cfc0, jp_cfc1 224 CALL iom_rstput( kt, nitrst, numrtw, 'qint'//ctrcnm(jn), qint(:,:,jn) ) 225 CALL iom_rstput( kt, nitrst, numrtw, 'qtr'//ctrcnm(jn) , qtr (:,:,jn) ) 226 END DO 227 #endif 232 CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 233 END DO 234 #endif 235 236 #if defined key_c14b 237 CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_c14(:,:) ) 238 #endif 239 240 #if defined key_my_trc 241 #endif 242 228 243 229 244 IF( kt == nitrst ) THEN … … 252 267 siomean = 91.51 ! mean value of silicate 253 268 254 REAL(wp) :: z trasum269 REAL(wp) :: zvol, ztrasum 255 270 REAL(wp) :: caralk, bicarb, co3 256 271 … … 266 281 DO jj = 1, jpj 267 282 DO ji = 1, jpi 268 z trasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) &283 zvol = cvol(ji,jj,jk) 269 284 # if defined key_off_degrad 270 & * facvol(ji,jj,jk) &285 zvol = zvol * facvol(ji,jj,jk) 271 286 # endif 272 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)287 ztrasum = ztrasum + trn(ji,jj,jk,jptal) * zvol 273 288 END DO 274 289 END DO … … 285 300 DO jj = 1, jpj 286 301 DO ji = 1, jpi 287 z trasum = ztrasum + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) &302 zvol = cvol(ji,jj,jk) 288 303 # if defined key_off_degrad 289 & * facvol(ji,jj,jk) &304 zvol = zvol * facvol(ji,jj,jk) 290 305 # endif 291 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)306 ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * zvol 292 307 END DO 293 308 END DO … … 304 319 DO jj = 1, jpj 305 320 DO ji = 1, jpi 306 z trasum = ztrasum + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj) &321 zvol = cvol(ji,jj,jk) 307 322 # if defined key_off_degrad 308 & * facvol(ji,jj,jk) &323 zvol = zvol * facvol(ji,jj,jk) 309 324 # endif 310 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)325 ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * zvol 311 326 END DO 312 327 END DO … … 323 338 DO jj = 1, jpj 324 339 DO ji = 1, jpi 325 z trasum = ztrasum + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) &340 zvol = cvol(ji,jj,jk) 326 341 # if defined key_off_degrad 327 & * facvol(ji,jj,jk) &342 zvol = zvol * facvol(ji,jj,jk) 328 343 # endif 329 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)344 ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * zvol 330 345 END DO 331 346 END DO … … 374 389 INTEGER :: ji, jj, jk, jn 375 390 REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot 376 REAL(wp) :: zder 391 REAL(wp) :: zder, zvol 377 392 !!---------------------------------------------------------------------- 378 393 … … 392 407 DO jj = 1, jpj 393 408 DO jk = 1,jpk 394 z diag_var = zdiag_var + trn(ji,jj,jk,jn) * tmask(ji,jj,jk) * tmask_i(ji,jj) &395 # if defined key_off_degrad396 & * facvol(ji,jj,jk) &397 # endif398 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)409 zvol = cvol(ji,jj,jk) 410 # if defined key_off_degrad 411 zvol = zvol * facvol(ji,jj,jk) 412 # endif 413 zdiag_var = zdiag_var + trn(ji,jj,jk,jn) * zvol 399 414 END DO 400 415 END DO -
trunk/NEMO/TOP_SRC/trcsms.F90
r1152 r1254 17 17 USE trcsms_lobster ! LOBSTER bio-model 18 18 USE trcsms_pisces ! PISCES biogeo-model 19 USE trcsms_cfc ! CFC 11 & 12 19 USE trcsms_cfc ! CFC 11 & 12 20 USE trcsms_c14b ! C14b tracer 20 21 USE trcsms_my_trc ! MY_TRC tracers 21 22 USE prtctl_trc ! Print control for debbuging … … 52 53 IF( lk_pisces ) CALL trc_sms_pisces ( kt ) ! main program of PISCES 53 54 IF( lk_cfc ) CALL trc_sms_cfc ( kt ) ! surface fluxes of CFC 55 IF( lk_c14b ) CALL trc_sms_c14b ( kt ) ! surface fluxes of C14 54 56 IF( lk_my_trc ) CALL trc_sms_my_trc ( kt ) ! MY_TRC tracers 55 57
Note: See TracChangeset
for help on using the changeset viewer.