Changeset 2963
- Timestamp:
- 2011-10-19T14:16:52+02:00 (13 years ago)
- Location:
- branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90
r2957 r2963 394 394 395 395 ! Total primary production per year 396 #if defined key_degrad 397 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * facvol(:,:,:) ) 398 #else 399 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) ) 400 #endif 396 tpp = tpp + glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 401 397 402 398 IF( kt == nitend .AND. jnt == nrdttrc .AND. lwp ) THEN -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90
r2957 r2963 250 250 ! ------------------------------------------------------------- 251 251 252 zdenitot = glob_sum( ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) * & 253 & e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * xnegtr(:,:,:) ) 252 zdenitot = glob_sum( ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) * cvol(:,:,:) ) 254 253 255 254 ! Potential nitrogen fixation dependant on temperature and iron … … 276 275 END DO 277 276 278 znitrpottot = glob_sum( znitrpot(:,:,:) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) )277 znitrpottot = glob_sum( znitrpot(:,:,:) * cvol(:,:,:) ) 279 278 280 279 ! Nitrogen change due to nitrogen fixation … … 356 355 DO jj = 1, jpj 357 356 DO ji = 1, jpi 358 zcoef = ryyss * e1e2t(ji,jj) * fse3t(ji,jj,1) * tmask(ji,jj,1)357 zcoef = ryyss * cvol(ji,jj,1) 359 358 cotdep(ji,jj) = sf_riverdic(1)%fnow(ji,jj,1) * 1E9 / ( 12. * zcoef + rtrn ) 360 359 rivinp(ji,jj) = ( sf_riverdic(1)%fnow(ji,jj,1) + sf_riverdoc(1)%fnow(ji,jj,1) ) * 1E9 / ( 31.6* zcoef + rtrn ) -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
r2960 r2963 144 144 REAL(wp) :: silmean = 91.51 ! mean value of silicate 145 145 ! 146 INTEGER :: jk147 146 REAL(wp) :: zarea, zalksum, zpo4sum, zno3sum, zsilsum 148 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zvolume ! volume of ocean149 147 !!--------------------------------------------------------------------- 150 148 … … 157 155 ! ! --------------------------- ! 158 156 ! set total alkalinity, phosphate, nitrate & silicate 159 ALLOCATE( zvolume(jpi,jpj,jpk) ) 160 ! ! masked grid volume 161 DO jk = 1, jpk 162 zvolume(:,:,jk) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) 163 ENDDO 164 #if defined key_degrad 165 zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:) 166 #endif 167 zarea = 1._wp / glob_sum( zvolume(:,:,:) ) * 1e6 168 169 zalksum = glob_sum( trn(:,:,:,jptal) * zvolume(:,:,:) ) * zarea 170 zpo4sum = glob_sum( trn(:,:,:,jppo4) * zvolume(:,:,:) ) * zarea / 122. 171 zno3sum = glob_sum( trn(:,:,:,jpno3) * zvolume(:,:,:) ) * zarea / 7.6 172 zsilsum = glob_sum( trn(:,:,:,jpsil) * zvolume(:,:,:) ) * zarea 157 zarea = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6 158 159 zalksum = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:) ) * zarea 160 zpo4sum = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:) ) * zarea / 122. 161 zno3sum = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:) ) * zarea / 7.6 162 zsilsum = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:) ) * zarea 173 163 174 164 IF(lwp) WRITE(numout,*) ' TALK mean : ', zalksum -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
r2957 r2963 104 104 105 105 ! Local declarations 106 INTEGER :: 107 REAL(wp) :: z volk, ztrcorb, ztrmasb ! temporary scalars106 INTEGER :: ji, jj, jk, jn ! dummy loop indices 107 REAL(wp) :: ztrcorb, ztrmasb ! temporary scalars 108 108 REAL(wp) :: zcoef, ztrcorn, ztrmasn ! " " 109 109 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrtrdb ! workspace arrays … … 137 137 DO jj = 1, jpj 138 138 DO ji = 1, jpi 139 zvolk = e1e2t(ji,jj) * fse3t(ji,jj,jk) * tmask(ji,jj,jk) 140 # if defined key_degrad 141 zvolk = zvolk * facvol(ji,jj,jk) 142 # endif 143 ztrcorb = ztrcorb + MIN( 0., ptrb(ji,jj,jk,jn) ) * zvolk 144 ztrcorn = ztrcorn + MIN( 0., ptrn(ji,jj,jk,jn) ) * zvolk 139 ztrcorb = ztrcorb + MIN( 0., ptrb(ji,jj,jk,jn) ) * cvol(ji,jj,jk) 140 ztrcorn = ztrcorn + MIN( 0., ptrn(ji,jj,jk,jn) ) * cvol(ji,jj,jk) 145 141 146 142 ptrb(ji,jj,jk,jn) = MAX( 0., ptrb(ji,jj,jk,jn) ) 147 143 ptrn(ji,jj,jk,jn) = MAX( 0., ptrn(ji,jj,jk,jn) ) 148 144 149 ztrmasb = ztrmasb + ptrb(ji,jj,jk,jn) * zvolk150 ztrmasn = ztrmasn + ptrn(ji,jj,jk,jn) * zvolk145 ztrmasb = ztrmasb + ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) 146 ztrmasn = ztrmasn + ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) 151 147 END DO 152 148 END DO -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trc.F90
r2957 r2963 36 36 !! passive tracers fields (before,now,after) 37 37 !! -------------------------------------------------- 38 REAL(wp), PUBLIC :: trai !: initial total tracer 39 REAL(wp), PUBLIC :: areatot !: total volume 38 REAL(wp), PUBLIC :: trai !: initial total tracer 39 REAL(wp), PUBLIC :: areatot !: total volume 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) :: cvol !: ocean volume 40 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) :: trn !: traceur concentration for now time step 41 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) :: tra !: traceur concentration for next time step … … 115 116 & tra (jpi,jpj,jpk,jptra) , & 116 117 & trb (jpi,jpj,jpk,jptra) , & 118 & cvol(jpi,jpj,jpk ) , & 117 119 & gtru(jpi,jpj ,jptra) , gtrv(jpi,jpj,jptra) , & 118 120 # if defined key_diatrc && ! defined key_iomput -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r2959 r2963 58 58 ! 59 59 INTEGER :: jk, jn ! dummy loop indices 60 REAL(wp) :: zareatot61 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zvolume ! volume of ocean62 60 CHARACTER (len=25) :: charout 63 61 !!--------------------------------------------------------------------- … … 68 66 69 67 CALL top_alloc() ! allocate TOP arrays 70 71 ALLOCATE( zvolume(jpi,jpj,jpk) )72 68 73 69 CALL trc_nam ! read passive tracers namelists … … 141 137 ! ! masked grid volume 142 138 DO jk = 1, jpk 143 zvolume(:,:,jk) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk)139 cvol(:,:,jk) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) 144 140 ENDDO 145 141 #if defined key_degrad 146 zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:)147 #endif 148 zareatot = glob_sum( zvolume(:,:,:) ) ! total volume of ocean142 cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:) 143 #endif 144 areatot = glob_sum( cvol(:,:,:) ) ! total volume of ocean 149 145 150 146 trai = 0._wp ! initial content of all tracers 151 147 DO jn = 1, jptra 152 trai = trai + glob_sum( trn(:,:,:,jn) * zvolume(:,:,:) )148 trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:) ) 153 149 END DO 154 150 … … 157 153 WRITE(numout,*) 158 154 WRITE(numout,*) ' *** Total number of passive tracer jptra = ', jptra 159 WRITE(numout,*) ' *** Total volume of ocean = ', zareatot155 WRITE(numout,*) ' *** Total volume of ocean = ', areatot 160 156 WRITE(numout,*) ' *** Total inital content of all tracers = ', trai 161 157 WRITE(numout,*) -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r2960 r2963 285 285 INTEGER :: jk, jn 286 286 REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot 287 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zvolume ! volume of ocean 288 REAL(wp) :: zareatot, zder 287 REAL(wp) :: zder 289 288 !!---------------------------------------------------------------------- 290 289 … … 294 293 WRITE(numout,*) 295 294 ENDIF 296 ! ! masked grid volume297 ALLOCATE( zvolume(jpi,jpj,jpk) )298 DO jk = 1, jpk299 zvolume(:,:,jk) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk)300 ENDDO301 #if defined key_degrad302 zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:)303 #endif304 zareatot = glob_sum( zvolume(:,:,:) ) ! total volume of ocean305 295 ! 306 296 zdiag_tot = 0.e0 307 297 DO jn = 1, jptra 308 zdiag_var = glob_sum( trn(:,:,:,jn) * zvolume(:,:,:) )298 zdiag_var = glob_sum( trn(:,:,:,jn) * cvol(:,:,:) ) 309 299 zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 310 300 zdiag_varmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) … … 314 304 END IF 315 305 zdiag_tot = zdiag_tot + zdiag_var 316 zdiag_var = zdiag_var / zareatot306 zdiag_var = zdiag_var / areatot 317 307 IF(lwp) WRITE(numout,*) ' MEAN NO ', jn, ctrcnm(jn), ' = ', zdiag_var, & 318 308 & ' MIN = ', zdiag_varmin, ' MAX = ', zdiag_varmax -
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
r2528 r2963 27 27 28 28 PUBLIC trc_stp ! called by step 29 29 30 !! * Substitutions 31 # include "domzgr_substitute.h90" 30 32 !!---------------------------------------------------------------------- 31 33 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 46 48 !!------------------------------------------------------------------- 47 49 INTEGER, INTENT( in ) :: kt ! ocean time-step index 50 INTEGER :: jk ! 48 51 CHARACTER (len=25) :: charout 49 52 !!------------------------------------------------------------------- 53 ! 54 IF( kt == nit000 ) THEN 55 CALL iom_close( numrtr ) ! close input passive tracers restart file 56 IF( lk_trdmld_trc ) CALL trd_mld_trc_init ! trends: Mixed-layer 57 ENDIF 58 ! 59 IF( lk_vvl ) THEN ! update ocean volume due to ssh temporal evolution 60 DO jk = 1, jpk 61 cvol(:,:,jk) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) 62 END DO 63 #if defined key_off_degrad 64 cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:) ! degrad option: reduction by facvol 65 #endif 66 areatot = glob_sum( cvol(:,:,:) ) 67 ENDIF 68 ! 50 69 51 70 IF( MOD( kt - 1 , nn_dttrc ) == 0 ) THEN ! only every nn_dttrc time step … … 58 77 tra(:,:,:,:) = 0.e0 59 78 ! 60 IF( kt == nit000 .AND. lk_trdmld_trc ) &61 & CALL trd_mld_trc_init ! trends: Mixed-layer62 79 CALL trc_rst_opn( kt ) ! Open tracer restart file 63 80 IF( lk_iomput ) THEN ; CALL trc_wri( kt ) ! output of passive tracers … … 66 83 CALL trc_sms( kt ) ! tracers: sink and source 67 84 CALL trc_trp( kt ) ! transport of passive tracers 68 IF( kt == nit000 ) CALL iom_close( numrtr ) ! close input passive tracers restart file69 85 IF( lrst_trc ) CALL trc_rst_wri( kt ) ! write tracer restart file 70 86 IF( lk_trdmld_trc ) CALL trd_mld_trc( kt ) ! trends: Mixed-layer
Note: See TracChangeset
for help on using the changeset viewer.