New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 9128 for branches/NERC/dev_r5518_GO6_conserv_Check/NEMOGCM/NEMO/TOP_SRC/trcrst.F90 – NEMO

Ignore:
Timestamp:
2017-12-19T12:47:21+01:00 (6 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/trcrst.F90

    r8926 r9128  
    842842      IF ( lwp ) CALL flush(numout) 
    843843      ! 
    844       !---------------------------------------------------------------------- 
    845       ! Excluding Halo version: 
    846       ! 
    847       ! This second check dodges around the halo points in the grid 
    848       ! to check that glob_sum is doing what it's supposed to be 
    849       ! doing; note that the loop ordering here is the "correct" way  
    850       ! (according to Dr. Google) 
    851       ! 
    852       IF ( lwp ) WRITE(numout,*) 
    853       IF ( lwp ) WRITE(numout,*)    ' Elemental cycle totals (check): ' 
    854       ! ocean cells 
    855       loc_cycletot3(:) = 0._wp 
    856       loc_vol          = 0._wp 
    857       DO jk = 1, jpk 
    858          DO jj = nldj,nlej 
    859             DO ji = nldi,nlei 
    860                loc_vol = loc_vol + cvol(ji,jj,jk) 
    861                ! nitrogen 
    862                zq1 = trn(ji,jj,jk,jpphn) + trn(ji,jj,jk,jpphd) + trn(ji,jj,jk,jpzmi) + & 
    863                      trn(ji,jj,jk,jpzme) + trn(ji,jj,jk,jpdet) + trn(ji,jj,jk,jpdin) 
    864                loc_cycletot3(1) = loc_cycletot3(1) + ( zq1 * cvol(ji,jj,jk) ) 
    865                ! silicon 
    866                zq1 = trn(ji,jj,jk,jppds) + trn(ji,jj,jk,jpsil) 
    867                loc_cycletot3(2) = loc_cycletot3(2) + ( zq1 * cvol(ji,jj,jk) ) 
    868                ! iron 
    869                zq1 = ((trn(ji,jj,jk,jpphn) + trn(ji,jj,jk,jpphd) + trn(ji,jj,jk,jpzmi) + & 
    870                      trn(ji,jj,jk,jpzme) + trn(ji,jj,jk,jpdet)) * xrfn) + trn(ji,jj,jk,jpfer) 
    871                loc_cycletot3(3) = loc_cycletot3(3) + ( zq1 * cvol(ji,jj,jk) ) 
    872                ! carbon 
    873                zq1 = (trn(ji,jj,jk,jpphn) * xthetapn)  + (trn(ji,jj,jk,jpphd) * xthetapd)  +  & 
    874                      (trn(ji,jj,jk,jpzmi) * xthetazmi) + (trn(ji,jj,jk,jpzme) * xthetazme) +  & 
    875                      trn(ji,jj,jk,jpdtc) + trn(ji,jj,jk,jpdic) 
    876                loc_cycletot3(4) = loc_cycletot3(4) + ( zq1 * cvol(ji,jj,jk) ) 
    877                ! alkalinity 
    878                zq1 = trn(ji,jj,jk,jpalk) 
    879                loc_cycletot3(5) = loc_cycletot3(5) + ( zq1 * cvol(ji,jj,jk) ) 
    880                ! oxygen 
    881                zq1 = trn(ji,jj,jk,jpoxy) 
    882                loc_cycletot3(6) = loc_cycletot3(6) + ( zq1 * cvol(ji,jj,jk) ) 
    883             ENDDO 
    884          ENDDO 
    885       ENDDO 
    886       ! 
    887       ! sediment cells 
    888       loc_cycletot2(:) = 0._wp 
    889       loc_area         = 0._wp 
    890       jk = 1 
    891       DO jj = nldj,nlej 
    892          DO ji = nldi,nlei 
    893             loc_area = loc_area + (e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    894             ! nitrogen 
    895             zq1 = zn_sed_n(ji,jj) 
    896             loc_cycletot2(1) = loc_cycletot2(1) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    897             ! silicon 
    898             zq1 = zn_sed_si(ji,jj) 
    899             loc_cycletot2(2) = loc_cycletot2(2) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    900             ! iron 
    901             zq1 = zn_sed_fe(ji,jj) 
    902             loc_cycletot2(3) = loc_cycletot2(3) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    903             ! carbon 
    904             zq1 = zn_sed_c(ji,jj) + zn_sed_ca(ji,jj) 
    905             loc_cycletot2(4) = loc_cycletot2(4) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    906             ! alkalinity 
    907             zq1 = zn_sed_ca(ji,jj) * 2._wp 
    908             loc_cycletot2(5) = loc_cycletot2(5) + (zq1 * e1e2t(ji,jj) * tmask(ji,jj,jk)) 
    909             ! skip oxygen 
    910          ENDDO 
    911       ENDDO 
    912      IF ( lwp ) WRITE(numout,*) '-- New Check --' 
    913       ! 
    914       !---------------------------------------------------------------------- 
    915       ! nitrogen 
    916       ! total tracer, and delta 
    917       zq1 = loc_cycletot3(1) 
    918       zq2 = loc_cycletot2(1) 
    919       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    920       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    921       zinvt      = zq1 + zq2 
    922       zdelta     = zinvt - cycletot2(1) 
    923       zratio     = 1.0e2 * zdelta / cycletot2(1) 
    924       ! 
    925       IF ( lwp ) WRITE(numout,9010) 'nitrogen', zq1, zq2, zinvt,   & 
    926          cycletot2(1), zdelta, zratio 
    927       IF ( lwp ) WRITE(numout,*) 
    928       ! 
    929       !---------------------------------------------------------------------- 
    930       ! silicon 
    931       zq1 = loc_cycletot3(2) 
    932       zq2 = loc_cycletot2(2) 
    933       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    934       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    935       zinvt      = zq1 + zq2 
    936       zdelta     = zinvt - cycletot2(2) 
    937       zratio     = 1.0e2 * zdelta / cycletot2(2) 
    938       ! 
    939       IF ( lwp ) WRITE(numout,9010) 'silicon', zq1, zq2, zinvt,   & 
    940          cycletot2(2), zdelta, zratio 
    941       IF ( lwp ) WRITE(numout,*) 
    942       ! 
    943       !---------------------------------------------------------------------- 
    944       ! iron 
    945       zq1 = loc_cycletot3(3) 
    946       zq2 = loc_cycletot2(3) 
    947       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    948       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    949       zinvt      = zq1 + zq2 
    950       zdelta     = zinvt - cycletot2(3) 
    951       zratio     = 1.0e2 * zdelta / cycletot2(3) 
    952       ! 
    953       IF ( lwp ) WRITE(numout,9010) 'iron', zq1, zq2, zinvt,   & 
    954          cycletot2(3), zdelta, zratio 
    955       IF ( lwp ) WRITE(numout,*) 
    956       ! 
    957       !---------------------------------------------------------------------- 
    958       ! carbon 
    959       zq1 = loc_cycletot3(4) 
    960       zq2 = loc_cycletot2(4) 
    961       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    962       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    963       zinvt      = zq1 + zq2 
    964       zdelta     = zinvt - cycletot2(4) 
    965       zratio     = 1.0e2 * zdelta / cycletot2(4) 
    966       ! 
    967       IF ( lwp ) WRITE(numout,9010) 'carbon', zq1, zq2, zinvt,   & 
    968          cycletot2(4), zdelta, zratio 
    969       IF ( lwp ) WRITE(numout,*) 
    970       ! 
    971       !---------------------------------------------------------------------- 
    972       ! alkalinity 
    973       zq1 = loc_cycletot3(5) 
    974       zq2 = loc_cycletot2(5) 
    975       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    976       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    977       zinvt      = zq1 + zq2 
    978       zdelta     = zinvt - cycletot2(5) 
    979       zratio     = 1.0e2 * zdelta / cycletot2(5) 
    980       ! 
    981       IF ( lwp ) WRITE(numout,9010) 'alkalinity', zq1, zq2, zinvt,   & 
    982          cycletot2(5), zdelta, zratio 
    983       IF ( lwp ) WRITE(numout,*) 
    984       ! 
    985       !---------------------------------------------------------------------- 
    986       ! oxygen 
    987       zq1 = loc_cycletot3(6) 
    988       zq2 = loc_cycletot2(6) 
    989       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    990       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    991       zinvt      = zq1 + zq2 
    992       zdelta     = zinvt - cycletot2(6) 
    993       zratio     = 1.0e2 * zdelta / cycletot2(6) 
    994       ! 
    995       IF ( lwp ) WRITE(numout,9010) 'oxygen', zq1, zq2, zinvt,   & 
    996          cycletot2(6), zdelta, zratio 
    997       IF ( lwp ) WRITE(numout,*) 
    998       ! 
    999       !--------------------------------------------------------------------- 
    1000       zq1 = loc_vol 
    1001       zq2 = loc_area 
    1002       IF( lk_mpp )   CALL mpp_sum( zq1 ) 
    1003       IF( lk_mpp )   CALL mpp_sum( zq2 ) 
    1004       IF ( lwp ) WRITE(numout,*) 
    1005       IF ( lwp ) WRITE(numout,*) ' check : cvol    : ', zq1 
    1006       IF ( lwp ) WRITE(numout,*) ' check : carea   : ', zq2 
    1007       IF ( lwp ) WRITE(numout,*) 
    1008       IF ( lwp ) CALL flush(numout) 
    1009  
    1010       !! 
    1011       !! 
    10128449010  FORMAT(' element:',a10,                     & 
    1013845             ' 3d sum:',e18.10,' 2d sum:',e18.10, & 
Note: See TracChangeset for help on using the changeset viewer.