Ignore:
Timestamp:
2017-12-19T12:47:21+01:00 (4 years ago)
Author:
jpalmier
Message:

JPALM — Working conservation Checking

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_GO6_conserv_Check/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r8926 r9128  
    280280      IF ( lwp ) CALL flush(numout) 
    281281      ! 
    282       ! This second check dodges around the halo points in the grid 
    283       ! to check that glob_sum is doing what it's supposed to be 
    284       ! doing; note that the loop ordering here is the "correct" way  
    285       ! (according to Dr. Google) 
    286       ! 
    287       IF ( lwp ) WRITE(numout,*) 
    288       IF ( lwp ) WRITE(numout,*)    ' Elemental cycle totals (check): ' 
    289       ! ocean cells 
    290       loc_cycletot3(:) = 0._wp 
    291       loc_vol          = 0._wp 
    292       DO jk = 1, jpk 
    293          DO jj = nldj,nlej 
    294             DO ji = nldi,nlei 
    295                loc_vol = loc_vol + cvol(ji,jj,jk) 
    296                ! nitrogen 
    297                zq1 = trn(ji,jj,jk,jpphn) + trn(ji,jj,jk,jpphd) + trn(ji,jj,jk,jpzmi) + & 
    298                      trn(ji,jj,jk,jpzme) + trn(ji,jj,jk,jpdet) + trn(ji,jj,jk,jpdin) 
    299                loc_cycletot3(1) = loc_cycletot3(1) + ( zq1 * cvol(ji,jj,jk) ) 
    300                ! silicon 
    301                zq1 = trn(ji,jj,jk,jppds) + trn(ji,jj,jk,jpsil) 
    302                loc_cycletot3(2) = loc_cycletot3(2) + ( zq1 * cvol(ji,jj,jk) ) 
    303                ! iron 
    304                zq1 = ((trn(ji,jj,jk,jpphn) + trn(ji,jj,jk,jpphd) + trn(ji,jj,jk,jpzmi) + & 
    305                      trn(ji,jj,jk,jpzme) + trn(ji,jj,jk,jpdet)) * xrfn) + trn(ji,jj,jk,jpfer) 
    306                loc_cycletot3(3) = loc_cycletot3(3) + ( zq1 * cvol(ji,jj,jk) ) 
    307                ! carbon 
    308                zq1 = (trn(ji,jj,jk,jpphn) * xthetapn)  + (trn(ji,jj,jk,jpphd) * xthetapd)  +  & 
    309                      (trn(ji,jj,jk,jpzmi) * xthetazmi) + (trn(ji,jj,jk,jpzme) * xthetazme) +  & 
    310                      trn(ji,jj,jk,jpdtc) + trn(ji,jj,jk,jpdic) 
    311                loc_cycletot3(4) = loc_cycletot3(4) + ( zq1 * cvol(ji,jj,jk) ) 
    312                ! alkalinity 
    313                zq1 = trn(ji,jj,jk,jpalk) 
    314                loc_cycletot3(5) = loc_cycletot3(5) + ( zq1 * cvol(ji,jj,jk) ) 
    315                ! oxygen 
    316                zq1 = trn(ji,jj,jk,jpoxy) 
    317                loc_cycletot3(6) = loc_cycletot3(6) + ( zq1 * cvol(ji,jj,jk) ) 
    318             ENDDO 
    319          ENDDO 
    320       ENDDO 
    321       ! 
    322       ! sediment cells 
    323       loc_cycletot2(:) = 0._wp 
    324       loc_area         = 0._wp 
    325       jk = 1 
    326       DO jj = nldj,nlej 
    327          DO ji = nldi,nlei 
    328             loc_area = loc_area + (e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    329             ! nitrogen 
    330             zq1 = zn_sed_n(ji,jj) 
    331             loc_cycletot2(1) = loc_cycletot2(1) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    332             ! silicon 
    333             zq1 = zn_sed_si(ji,jj) 
    334             loc_cycletot2(2) = loc_cycletot2(2) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    335             ! iron 
    336             zq1 = zn_sed_fe(ji,jj) 
    337             loc_cycletot2(3) = loc_cycletot2(3) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    338             ! carbon 
    339             zq1 = zn_sed_c(ji,jj) + zn_sed_ca(ji,jj) 
    340             loc_cycletot2(4) = loc_cycletot2(4) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    341             ! alkalinity 
    342             zq1 = zn_sed_ca(ji,jj) * 2._wp 
    343             loc_cycletot2(5) = loc_cycletot2(5) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    344             ! skip oxygen 
    345          ENDDO 
    346       ENDDO 
    347       ! 
    348       ! report back 
    349       zq1 = loc_cycletot3(1) 
    350       zq2 = loc_cycletot2(1)  
    351       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    352       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    353       cycletot2(1) = zq1 + zq2 
    354       IF ( lwp ) WRITE(numout,9010) 'nitrogen',   zq1, zq2, cycletot2(1) 
    355       zq1 = loc_cycletot3(2)  
    356       zq2 = loc_cycletot2(2)  
    357       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    358       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    359       cycletot2(2) = zq1 + zq2 
    360       IF ( lwp ) WRITE(numout,9010) 'silicon',    zq1, zq2, cycletot2(2) 
    361       zq1 = loc_cycletot3(3)  
    362       zq2 = loc_cycletot2(3)  
    363       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    364       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    365       cycletot2(3) = zq1 + zq2 
    366       IF ( lwp ) WRITE(numout,9010) 'iron',       zq1, zq2, cycletot2(3) 
    367       zq1 = loc_cycletot3(4)  
    368       zq2 = loc_cycletot2(4)  
    369       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    370       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    371       cycletot2(4) = zq1 + zq2 
    372       IF ( lwp ) WRITE(numout,9010) 'carbon',     zq1, zq2, cycletot2(4) 
    373       zq1 = loc_cycletot3(5)  
    374       zq2 = loc_cycletot2(5)  
    375       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    376       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    377       cycletot2(5) = zq1 + zq2 
    378       IF ( lwp ) WRITE(numout,9010) 'alkalinity', zq1, zq2, cycletot2(5) 
    379       zq1 = loc_cycletot3(6)  
    380       zq2 = loc_cycletot2(6)  
    381       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    382       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    383       cycletot2(6) = zq1 + zq2 
    384       IF ( lwp ) WRITE(numout,9010) 'oxygen',     zq1, zq2, cycletot2(6) 
    385       zq1 = loc_vol  
    386       zq2 = loc_area        
    387       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    388       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    389       IF ( lwp ) WRITE(numout,*) 
    390       IF ( lwp ) WRITE(numout,*) ' check : cvol    : ', zq1 
    391       IF ( lwp ) WRITE(numout,*) ' check : carea   : ', zq2 
    392       IF ( lwp ) WRITE(numout,*) 
    393       IF ( lwp ) CALL flush(numout) 
    394       ! 
    395       ! report back 
    396       ! nitrogen 
    397       ztot3d(:,:,:) = trn(:,:,:,jpphn) + trn(:,:,:,jpphd) + trn(:,:,:,jpzmi) + & 
    398                       trn(:,:,:,jpzme) + trn(:,:,:,jpdet) + trn(:,:,:,jpdin) 
    399       ztot2d(:,:)   = zn_sed_n(:,:) 
    400       zsum3d        = glob_sum( ztot3d(nldi:nlei,nldj:nlej,:) * cvol(nldi:nlei,nldj:nlej,:) ) 
    401       zsum2d        = glob_sum( ztot2d(nldi:nlei,nldj:nlej) * carea(nldi:nlei,nldj:nlej) ) 
    402       cycletot(1)   = zsum3d + zsum2d 
    403       IF ( lwp ) WRITE(numout,9010) 'nitrogen', zsum3d, zsum2d, cycletot(1) 
    404       IF ( lwp ) CALL flush(numout) 
    405  
    406       ! 
    407  
    408282# endif 
    409283 
Note: See TracChangeset for help on using the changeset viewer.