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 11949 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zsms.F90 – NEMO

Ignore:
Timestamp:
2019-11-22T15:29:17+01:00 (4 years ago)
Author:
acc
Message:

Merge in changes from 2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps. This just creates a fresh copy of this branch to use as the merge base. See ticket #2341

Location:
NEMO/branches/2019/dev_r11943_MERGE_2019/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src

    • Property svn:mergeinfo deleted
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zsms.F90

    r11536 r11949  
    4646CONTAINS 
    4747 
    48    SUBROUTINE p4z_sms( kt ) 
     48   SUBROUTINE p4z_sms( kt, Kbb, Kmm, Krhs ) 
    4949      !!--------------------------------------------------------------------- 
    5050      !!                     ***  ROUTINE p4z_sms  *** 
     
    5858      !!--------------------------------------------------------------------- 
    5959      ! 
    60       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
     60      INTEGER, INTENT( in ) ::   kt              ! ocean time-step index       
     61      INTEGER, INTENT( in ) ::   Kbb, Kmm, Krhs  ! time level index 
    6162      !! 
    6263      INTEGER ::   ji, jj, jk, jnt, jn, jl 
     
    7273        ! 
    7374        IF( .NOT. ln_rsttr ) THEN 
    74             CALL p4z_che                              ! initialize the chemical constants 
    75             CALL ahini_for_at(hi)   !  set PH at kt=nit000 
     75            CALL p4z_che( Kbb, Kmm )                  ! initialize the chemical constants 
     76            CALL ahini_for_at( hi, Kbb )              !  set PH at kt=nit000 
    7677            t_oce_co2_flx_cum = 0._wp 
    7778        ELSE 
    78             CALL p4z_rst( nittrc000, 'READ' )  !* read or initialize all required fields 
     79            CALL p4z_rst( nittrc000, Kbb, Kmm,  'READ' )  !* read or initialize all required fields 
    7980        ENDIF 
    8081        ! 
    8182      ENDIF 
    8283      ! 
    83       IF( ln_pisdmp .AND. MOD( kt - nn_dttrc, nn_pisdmp ) == 0 )   CALL p4z_dmp( kt )      ! Relaxation of some tracers 
     84      IF( ln_pisdmp .AND. MOD( kt - 1, nn_pisdmp ) == 0 )   CALL p4z_dmp( kt, Kbb, Kmm )      ! Relaxation of some tracers 
    8485      ! 
    8586      rfact = r2dttrc 
    8687      ! 
    87       IF( ( ln_top_euler .AND. kt == nittrc000 )  .OR. ( .NOT.ln_top_euler .AND. kt <= nittrc000 + nn_dttrc ) ) THEN 
     88      IF( ( ln_top_euler .AND. kt == nittrc000 )  .OR. ( .NOT.ln_top_euler .AND. kt <= nittrc000 + 1 ) ) THEN 
    8889         rfactr  = 1. / rfact 
    8990         rfact2  = rfact / REAL( nrdttrc, wp ) 
     
    9899      IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN 
    99100         DO jn = jp_pcs0, jp_pcs1              !   SMS on tracer without Asselin time-filter 
    100             trb(:,:,:,jn) = trn(:,:,:,jn) 
     101            tr(:,:,:,jn,Kbb) = tr(:,:,:,jn,Kmm) 
    101102         END DO 
    102103      ENDIF 
    103104      ! 
    104       IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
     105      IF( ll_sbc ) CALL p4z_sbc( kt, Kmm )   ! external sources of nutrients  
    105106      ! 
    106107#if ! defined key_sed_off 
    107       CALL p4z_che              ! computation of chemical constants 
    108       CALL p4z_int( kt )        ! computation of various rates for biogeochemistry 
     108      CALL p4z_che(     Kbb, Kmm       ) ! computation of chemical constants 
     109      CALL p4z_int( kt, Kbb, Kmm       ) ! computation of various rates for biogeochemistry 
    109110      ! 
    110111      DO jnt = 1, nrdttrc          ! Potential time splitting if requested 
    111112         ! 
    112          CALL p4z_bio( kt, jnt )   ! Biology 
    113          CALL p4z_lys( kt, jnt )   ! Compute CaCO3 saturation 
    114          CALL p4z_sed( kt, jnt )   ! Surface and Bottom boundary conditions 
    115          CALL p4z_flx( kt, jnt )   ! Compute surface fluxes 
     113         CALL p4z_bio( kt, jnt, Kbb, Kmm, Krhs )   ! Biology 
     114         CALL p4z_lys( kt, jnt, Kbb,      Krhs )   ! Compute CaCO3 saturation 
     115         CALL p4z_sed( kt, jnt, Kbb, Kmm, Krhs )   ! Surface and Bottom boundary conditions 
     116         CALL p4z_flx( kt, jnt, Kbb, Kmm, Krhs )   ! Compute surface fluxes 
    116117         ! 
    117118         xnegtr(:,:,:) = 1.e0 
     
    120121               DO jj = 1, jpj 
    121122                  DO ji = 1, jpi 
    122                      IF( ( trb(ji,jj,jk,jn) + tra(ji,jj,jk,jn) ) < 0.e0 ) THEN 
    123                         ztra             = ABS( trb(ji,jj,jk,jn) ) / ( ABS( tra(ji,jj,jk,jn) ) + rtrn ) 
     123                     IF( ( tr(ji,jj,jk,jn,Kbb) + tr(ji,jj,jk,jn,Krhs) ) < 0.e0 ) THEN 
     124                        ztra             = ABS( tr(ji,jj,jk,jn,Kbb) ) / ( ABS( tr(ji,jj,jk,jn,Krhs) ) + rtrn ) 
    124125                        xnegtr(ji,jj,jk) = MIN( xnegtr(ji,jj,jk),  ztra ) 
    125126                     ENDIF 
     
    131132         !                                !  
    132133         DO jn = jp_pcs0, jp_pcs1 
    133            trb(:,:,:,jn) = trb(:,:,:,jn) + xnegtr(:,:,:) * tra(:,:,:,jn) 
     134           tr(:,:,:,jn,Kbb) = tr(:,:,:,jn,Kbb) + xnegtr(:,:,:) * tr(:,:,:,jn,Krhs) 
    134135         END DO 
    135136        ! 
    136137         DO jn = jp_pcs0, jp_pcs1 
    137             tra(:,:,:,jn) = 0._wp 
     138            tr(:,:,:,jn,Krhs) = 0._wp 
    138139         END DO 
    139140         ! 
    140141         IF( ln_top_euler ) THEN 
    141142            DO jn = jp_pcs0, jp_pcs1 
    142                trn(:,:,:,jn) = trb(:,:,:,jn) 
     143               tr(:,:,:,jn,Kmm) = tr(:,:,:,jn,Kbb) 
    143144            END DO 
    144145         ENDIF 
     
    148149      IF( l_trdtrc ) THEN 
    149150         DO jn = jp_pcs0, jp_pcs1 
    150            CALL trd_trc( tra(:,:,:,jn), jn, jptra_sms, kt )   ! save trends 
     151           CALL trd_trc( tr(:,:,:,jn,Krhs), jn, jptra_sms, kt, Kmm )   ! save trends 
    151152         END DO 
    152153      END IF 
     
    155156      IF( ln_sediment ) THEN  
    156157         ! 
    157          CALL sed_model( kt )     !  Main program of Sediment model 
     158         CALL sed_model( kt, Kbb, Kmm, Krhs )     !  Main program of Sediment model 
    158159         ! 
    159160         IF( ln_top_euler ) THEN 
    160161            DO jn = jp_pcs0, jp_pcs1 
    161                trn(:,:,:,jn) = trb(:,:,:,jn) 
     162               tr(:,:,:,jn,Kmm) = tr(:,:,:,jn,Kbb) 
    162163            END DO 
    163164         ENDIF 
     
    165166      ENDIF 
    166167      ! 
    167       IF( lrst_trc )  CALL p4z_rst( kt, 'WRITE' )  !* Write PISCES informations in restart file  
    168       ! 
    169  
    170       IF( lk_iomput .OR. ln_check_mass )  CALL p4z_chk_mass( kt )    ! Mass conservation checking 
    171  
    172       IF( lwm .AND. kt == nittrc000    )  CALL FLUSH( numonp )       ! flush output namelist PISCES 
     168      IF( lrst_trc )  CALL p4z_rst( kt, Kbb, Kmm,  'WRITE' )           !* Write PISCES informations in restart file  
     169      ! 
     170 
     171      IF( lk_iomput .OR. ln_check_mass )  CALL p4z_chk_mass( kt, Kmm ) ! Mass conservation checking 
     172 
     173      IF( lwm .AND. kt == nittrc000    )  CALL FLUSH( numonp )         ! flush output namelist PISCES 
    173174      ! 
    174175      IF( ln_timing )  CALL timing_stop('p4z_sms') 
     
    264265 
    265266 
    266    SUBROUTINE p4z_rst( kt, cdrw ) 
     267   SUBROUTINE p4z_rst( kt, Kbb, Kmm, cdrw ) 
    267268      !!--------------------------------------------------------------------- 
    268269      !!                   ***  ROUTINE p4z_rst  *** 
     
    275276      !!--------------------------------------------------------------------- 
    276277      INTEGER         , INTENT(in) ::   kt         ! ocean time-step 
     278      INTEGER         , INTENT(in) ::   Kbb, Kmm   ! time level indices 
    277279      CHARACTER(len=*), INTENT(in) ::   cdrw       ! "READ"/"WRITE" flag 
    278280      !!--------------------------------------------------------------------- 
     
    287289            CALL iom_get( numrtr, jpdom_autoglo, 'PH' , hi(:,:,:)  ) 
    288290         ELSE 
    289             CALL p4z_che                              ! initialize the chemical constants 
    290             CALL ahini_for_at(hi) 
     291            CALL p4z_che( Kbb, Kmm )                  ! initialize the chemical constants 
     292            CALL ahini_for_at( hi, Kbb ) 
    291293         ENDIF 
    292294         CALL iom_get( numrtr, jpdom_autoglo, 'Silicalim', xksi(:,:) ) 
     
    335337 
    336338 
    337    SUBROUTINE p4z_dmp( kt ) 
     339   SUBROUTINE p4z_dmp( kt, Kbb, Kmm ) 
    338340      !!---------------------------------------------------------------------- 
    339341      !!                    ***  p4z_dmp  *** 
     
    342344      !!---------------------------------------------------------------------- 
    343345      ! 
    344       INTEGER, INTENT( in )  ::     kt ! time step 
     346      INTEGER, INTENT( in )  ::     kt            ! time step 
     347      INTEGER, INTENT( in )  ::     Kbb, Kmm      ! time level indices 
    345348      ! 
    346349      REAL(wp) ::  alkmean = 2426.     ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 
     
    363366            zarea          = 1._wp / glob_sum( 'p4zsms', cvol(:,:,:) ) * 1e6               
    364367 
    365             zalksumn = glob_sum( 'p4zsms', trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    366             zpo4sumn = glob_sum( 'p4zsms', trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    367             zno3sumn = glob_sum( 'p4zsms', trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    368             zsilsumn = glob_sum( 'p4zsms', trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     368            zalksumn = glob_sum( 'p4zsms', tr(:,:,:,jptal,Kmm) * cvol(:,:,:)  ) * zarea 
     369            zpo4sumn = glob_sum( 'p4zsms', tr(:,:,:,jppo4,Kmm) * cvol(:,:,:)  ) * zarea * po4r 
     370            zno3sumn = glob_sum( 'p4zsms', tr(:,:,:,jpno3,Kmm) * cvol(:,:,:)  ) * zarea * rno3 
     371            zsilsumn = glob_sum( 'p4zsms', tr(:,:,:,jpsil,Kmm) * cvol(:,:,:)  ) * zarea 
    369372  
    370373            IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
    371             trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
     374            tr(:,:,:,jptal,Kmm) = tr(:,:,:,jptal,Kmm) * alkmean / zalksumn 
    372375 
    373376            IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
    374             trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
     377            tr(:,:,:,jppo4,Kmm) = tr(:,:,:,jppo4,Kmm) * po4mean / zpo4sumn 
    375378 
    376379            IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
    377             trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
     380            tr(:,:,:,jpno3,Kmm) = tr(:,:,:,jpno3,Kmm) * no3mean / zno3sumn 
    378381 
    379382            IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
    380             trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
     383            tr(:,:,:,jpsil,Kmm) = MIN( 400.e-6,tr(:,:,:,jpsil,Kmm) * silmean / zsilsumn ) 
    381384            ! 
    382385            ! 
    383386            IF( .NOT. ln_top_euler ) THEN 
    384                zalksumb = glob_sum( 'p4zsms', trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    385                zpo4sumb = glob_sum( 'p4zsms', trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    386                zno3sumb = glob_sum( 'p4zsms', trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    387                zsilsumb = glob_sum( 'p4zsms', trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     387               zalksumb = glob_sum( 'p4zsms', tr(:,:,:,jptal,Kbb) * cvol(:,:,:)  ) * zarea 
     388               zpo4sumb = glob_sum( 'p4zsms', tr(:,:,:,jppo4,Kbb) * cvol(:,:,:)  ) * zarea * po4r 
     389               zno3sumb = glob_sum( 'p4zsms', tr(:,:,:,jpno3,Kbb) * cvol(:,:,:)  ) * zarea * rno3 
     390               zsilsumb = glob_sum( 'p4zsms', tr(:,:,:,jpsil,Kbb) * cvol(:,:,:)  ) * zarea 
    388391  
    389392               IF(lwp) WRITE(numout,*) ' ' 
    390393               IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
    391                trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
     394               tr(:,:,:,jptal,Kbb) = tr(:,:,:,jptal,Kbb) * alkmean / zalksumb 
    392395 
    393396               IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
    394                trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
     397               tr(:,:,:,jppo4,Kbb) = tr(:,:,:,jppo4,Kbb) * po4mean / zpo4sumb 
    395398 
    396399               IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
    397                trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
     400               tr(:,:,:,jpno3,Kbb) = tr(:,:,:,jpno3,Kbb) * no3mean / zno3sumb 
    398401 
    399402               IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
    400                trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
     403               tr(:,:,:,jpsil,Kbb) = MIN( 400.e-6,tr(:,:,:,jpsil,Kbb) * silmean / zsilsumb ) 
    401404           ENDIF 
    402405        ENDIF 
     
    407410 
    408411 
    409    SUBROUTINE p4z_chk_mass( kt ) 
     412   SUBROUTINE p4z_chk_mass( kt, Kmm ) 
    410413      !!---------------------------------------------------------------------- 
    411414      !!                  ***  ROUTINE p4z_chk_mass  *** 
     
    415418      !!--------------------------------------------------------------------- 
    416419      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
     420      INTEGER, INTENT( in ) ::   Kmm     ! time level indices 
    417421      REAL(wp)             ::  zrdenittot, zsdenittot, znitrpottot 
    418422      CHARACTER(LEN=100)   ::   cltxt 
     
    438442         !   Compute the budget of NO3, ALK, Si, Fer 
    439443         IF( ln_p4z ) THEN 
    440             zwork(:,:,:) =    trn(:,:,:,jpno3) + trn(:,:,:,jpnh4)                      & 
    441                &          +   trn(:,:,:,jpphy) + trn(:,:,:,jpdia)                      & 
    442                &          +   trn(:,:,:,jppoc) + trn(:,:,:,jpgoc)  + trn(:,:,:,jpdoc)  &         
    443                &          +   trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)  
     444            zwork(:,:,:) =    tr(:,:,:,jpno3,Kmm) + tr(:,:,:,jpnh4,Kmm)                      & 
     445               &          +   tr(:,:,:,jpphy,Kmm) + tr(:,:,:,jpdia,Kmm)                      & 
     446               &          +   tr(:,:,:,jppoc,Kmm) + tr(:,:,:,jpgoc,Kmm)  + tr(:,:,:,jpdoc,Kmm)  &         
     447               &          +   tr(:,:,:,jpzoo,Kmm) + tr(:,:,:,jpmes,Kmm)  
    444448        ELSE 
    445             zwork(:,:,:) =    trn(:,:,:,jpno3) + trn(:,:,:,jpnh4) + trn(:,:,:,jpnph)   & 
    446                &          +   trn(:,:,:,jpndi) + trn(:,:,:,jpnpi)                      &  
    447                &          +   trn(:,:,:,jppon) + trn(:,:,:,jpgon) + trn(:,:,:,jpdon)   & 
    448                &          + ( trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) ) * no3rat3  
     449            zwork(:,:,:) =    tr(:,:,:,jpno3,Kmm) + tr(:,:,:,jpnh4,Kmm) + tr(:,:,:,jpnph,Kmm)   & 
     450               &          +   tr(:,:,:,jpndi,Kmm) + tr(:,:,:,jpnpi,Kmm)                      &  
     451               &          +   tr(:,:,:,jppon,Kmm) + tr(:,:,:,jpgon,Kmm) + tr(:,:,:,jpdon,Kmm)   & 
     452               &          + ( tr(:,:,:,jpzoo,Kmm) + tr(:,:,:,jpmes,Kmm) ) * no3rat3  
    449453        ENDIF 
    450454        ! 
     
    456460      IF( iom_use( "ppo4tot" ) .OR. ( ln_check_mass .AND. kt == nitend )  ) THEN 
    457461         IF( ln_p4z ) THEN 
    458             zwork(:,:,:) =    trn(:,:,:,jppo4)                                         & 
    459                &          +   trn(:,:,:,jpphy) + trn(:,:,:,jpdia)                      & 
    460                &          +   trn(:,:,:,jppoc) + trn(:,:,:,jpgoc)  + trn(:,:,:,jpdoc)  &         
    461                &          +   trn(:,:,:,jpzoo) + trn(:,:,:,jpmes)  
     462            zwork(:,:,:) =    tr(:,:,:,jppo4,Kmm)                                         & 
     463               &          +   tr(:,:,:,jpphy,Kmm) + tr(:,:,:,jpdia,Kmm)                      & 
     464               &          +   tr(:,:,:,jppoc,Kmm) + tr(:,:,:,jpgoc,Kmm)  + tr(:,:,:,jpdoc,Kmm)  &         
     465               &          +   tr(:,:,:,jpzoo,Kmm) + tr(:,:,:,jpmes,Kmm)  
    462466        ELSE 
    463             zwork(:,:,:) =    trn(:,:,:,jppo4) + trn(:,:,:,jppph)                      & 
    464                &          +   trn(:,:,:,jppdi) + trn(:,:,:,jpppi)                      &  
    465                &          +   trn(:,:,:,jppop) + trn(:,:,:,jpgop) + trn(:,:,:,jpdop)   & 
    466                &          + ( trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) ) * po4rat3  
     467            zwork(:,:,:) =    tr(:,:,:,jppo4,Kmm) + tr(:,:,:,jppph,Kmm)                      & 
     468               &          +   tr(:,:,:,jppdi,Kmm) + tr(:,:,:,jpppi,Kmm)                      &  
     469               &          +   tr(:,:,:,jppop,Kmm) + tr(:,:,:,jpgop,Kmm) + tr(:,:,:,jpdop,Kmm)   & 
     470               &          + ( tr(:,:,:,jpzoo,Kmm) + tr(:,:,:,jpmes,Kmm) ) * po4rat3  
    467471        ENDIF 
    468472        ! 
     
    473477      ! 
    474478      IF( iom_use( "psiltot" ) .OR. ( ln_check_mass .AND. kt == nitend )  ) THEN 
    475          zwork(:,:,:) =  trn(:,:,:,jpsil) + trn(:,:,:,jpgsi) + trn(:,:,:,jpdsi)  
     479         zwork(:,:,:) =  tr(:,:,:,jpsil,Kmm) + tr(:,:,:,jpgsi,Kmm) + tr(:,:,:,jpdsi,Kmm)  
    476480         ! 
    477481         silbudget = glob_sum( 'p4zsms', zwork(:,:,:) * cvol(:,:,:)  )   
     
    481485      ! 
    482486      IF( iom_use( "palktot" ) .OR. ( ln_check_mass .AND. kt == nitend )  ) THEN 
    483          zwork(:,:,:) =  trn(:,:,:,jpno3) * rno3 + trn(:,:,:,jptal) + trn(:,:,:,jpcal) * 2.               
     487         zwork(:,:,:) =  tr(:,:,:,jpno3,Kmm) * rno3 + tr(:,:,:,jptal,Kmm) + tr(:,:,:,jpcal,Kmm) * 2.               
    484488         ! 
    485489         alkbudget = glob_sum( 'p4zsms', zwork(:,:,:) * cvol(:,:,:)  )         ! 
     
    489493      ! 
    490494      IF( iom_use( "pfertot" ) .OR. ( ln_check_mass .AND. kt == nitend )  ) THEN 
    491          zwork(:,:,:) =   trn(:,:,:,jpfer) + trn(:,:,:,jpnfe) + trn(:,:,:,jpdfe)   & 
    492             &         +   trn(:,:,:,jpbfe) + trn(:,:,:,jpsfe)                      & 
    493             &         + ( trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) )  * ferat3     
     495         zwork(:,:,:) =   tr(:,:,:,jpfer,Kmm) + tr(:,:,:,jpnfe,Kmm) + tr(:,:,:,jpdfe,Kmm)   & 
     496            &         +   tr(:,:,:,jpbfe,Kmm) + tr(:,:,:,jpsfe,Kmm)                      & 
     497            &         + ( tr(:,:,:,jpzoo,Kmm) + tr(:,:,:,jpmes,Kmm) )  * ferat3     
    494498         ! 
    495499         ferbudget = glob_sum( 'p4zsms', zwork(:,:,:) * cvol(:,:,:)  )   
Note: See TracChangeset for help on using the changeset viewer.