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 2963 – NEMO

Changeset 2963


Ignore:
Timestamp:
2011-10-19T14:16:52+02:00 (13 years ago)
Author:
cetlod
Message:

dev_r2787_PISCES_improvment:include temporal evolution of ocean volume ( vvl )

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  
    394394 
    395395     ! 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(:,:,:) ) 
    401397 
    402398     IF( kt == nitend .AND. jnt == nrdttrc .AND. lwp ) THEN 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90

    r2957 r2963  
    250250      ! ------------------------------------------------------------- 
    251251 
    252       zdenitot = glob_sum(  ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) *  & 
    253          &                   e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) * xnegtr(:,:,:) ) 
     252      zdenitot = glob_sum(  ( denitr(:,:,:) * rdenit + denitnh4(:,:,:) * rdenita ) * cvol(:,:,:) )  
    254253 
    255254      ! Potential nitrogen fixation dependant on temperature and iron 
     
    276275      END DO 
    277276 
    278       znitrpottot = glob_sum( znitrpot(:,:,:) * e1e2t(:,:) * fse3t(:,:,:) * tmask(:,:,:) ) 
     277      znitrpottot = glob_sum( znitrpot(:,:,:) * cvol(:,:,:) ) 
    279278 
    280279      ! Nitrogen change due to nitrogen fixation 
     
    356355            DO jj = 1, jpj 
    357356               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)  
    359358                  cotdep(ji,jj) =   sf_riverdic(1)%fnow(ji,jj,1)                                  * 1E9 / ( 12. * zcoef + rtrn ) 
    360359                  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  
    144144      REAL(wp) ::  silmean = 91.51     ! mean value of silicate 
    145145      ! 
    146       INTEGER  :: jk 
    147146      REAL(wp) :: zarea, zalksum, zpo4sum, zno3sum, zsilsum 
    148       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zvolume     ! volume of ocean 
    149147      !!--------------------------------------------------------------------- 
    150148 
     
    157155         !                                                    ! --------------------------- ! 
    158156         ! 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 
    173163  
    174164         IF(lwp) WRITE(numout,*) '       TALK mean : ', zalksum 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90

    r2957 r2963  
    104104       
    105105      ! Local declarations 
    106       INTEGER  ::  ji, jj, jk, jn     ! dummy loop indices 
    107       REAL(wp) :: zvolk, ztrcorb, ztrmasb   ! temporary scalars 
     106      INTEGER  :: ji, jj, jk, jn     ! dummy loop indices 
     107      REAL(wp) :: ztrcorb, ztrmasb   ! temporary scalars 
    108108      REAL(wp) :: zcoef, ztrcorn, ztrmasn   !    "         " 
    109109      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrdb  ! workspace arrays 
     
    137137               DO jj = 1, jpj 
    138138                  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) 
    145141 
    146142                     ptrb(ji,jj,jk,jn) = MAX( 0., ptrb(ji,jj,jk,jn) ) 
    147143                     ptrn(ji,jj,jk,jn) = MAX( 0., ptrn(ji,jj,jk,jn) ) 
    148144 
    149                      ztrmasb = ztrmasb + ptrb(ji,jj,jk,jn) * zvolk 
    150                      ztrmasn = ztrmasn + ptrn(ji,jj,jk,jn) * zvolk 
     145                     ztrmasb = ztrmasb + ptrb(ji,jj,jk,jn) * cvol(ji,jj,jk) 
     146                     ztrmasn = ztrmasn + ptrn(ji,jj,jk,jn) * cvol(ji,jj,jk) 
    151147                  END DO 
    152148               END DO 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r2957 r2963  
    3636   !! passive tracers fields (before,now,after) 
    3737   !! -------------------------------------------------- 
    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 
    4041   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) ::   trn    !: traceur concentration for now time step 
    4142   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) ::   tra    !: traceur concentration for next time step 
     
    115116         &      tra (jpi,jpj,jpk,jptra) ,                           & 
    116117         &      trb (jpi,jpj,jpk,jptra) ,                           & 
     118         &      cvol(jpi,jpj,jpk      ) ,                           & 
    117119         &      gtru(jpi,jpj    ,jptra) , gtrv(jpi,jpj,jptra) ,     & 
    118120# if defined key_diatrc && ! defined key_iomput 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r2959 r2963  
    5858      ! 
    5959      INTEGER                                       ::   jk, jn    ! dummy loop indices 
    60       REAL(wp)                                      :: zareatot 
    61       REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zvolume     ! volume of ocean 
    6260      CHARACTER (len=25)                            :: charout 
    6361      !!--------------------------------------------------------------------- 
     
    6866 
    6967      CALL top_alloc()              ! allocate TOP arrays 
    70  
    71       ALLOCATE( zvolume(jpi,jpj,jpk) ) 
    7268 
    7369      CALL trc_nam                  ! read passive tracers namelists 
     
    141137      !                                                              ! masked grid volume 
    142138      DO jk = 1, jpk 
    143          zvolume(:,:,jk) = e1e2t(:,:)  * fse3t(:,:,jk) * tmask(:,:,jk)    
     139         cvol(:,:,jk) = e1e2t(:,:)  * fse3t(:,:,jk) * tmask(:,:,jk)    
    144140      ENDDO 
    145141#if defined key_degrad 
    146       zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:) 
    147 #endif 
    148       zareatot       = glob_sum( zvolume(:,:,:) )                    ! total volume of ocean 
     142      cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:) 
     143#endif 
     144      areatot     = glob_sum( cvol(:,:,:) )                    ! total volume of ocean 
    149145 
    150146      trai = 0._wp                                                   ! initial content of all tracers 
    151147      DO jn = 1, jptra 
    152          trai = trai + glob_sum( trn(:,:,:,jn) * zvolume(:,:,:)   ) 
     148         trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:)   ) 
    153149      END DO       
    154150 
     
    157153         WRITE(numout,*) 
    158154         WRITE(numout,*) '          *** Total number of passive tracer jptra = ', jptra 
    159          WRITE(numout,*) '          *** Total volume of ocean                = ', zareatot 
     155         WRITE(numout,*) '          *** Total volume of ocean                = ', areatot 
    160156         WRITE(numout,*) '          *** Total inital content of all tracers  = ', trai 
    161157         WRITE(numout,*) 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r2960 r2963  
    285285      INTEGER  :: jk, jn 
    286286      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 
    289288      !!---------------------------------------------------------------------- 
    290289 
     
    294293         WRITE(numout,*)  
    295294      ENDIF 
    296       !                                                              ! masked grid volume 
    297       ALLOCATE( zvolume(jpi,jpj,jpk) ) 
    298       DO jk = 1, jpk 
    299          zvolume(:,:,jk) = e1e2t(:,:)  * fse3t(:,:,jk) * tmask(:,:,jk) 
    300       ENDDO  
    301 #if defined key_degrad 
    302       zvolume(:,:,:) = zvolume(:,:,:) * facvol(:,:,:) 
    303 #endif 
    304       zareatot       = glob_sum( zvolume(:,:,:) )                    ! total volume of ocean 
    305295      ! 
    306296      zdiag_tot = 0.e0 
    307297      DO jn = 1, jptra 
    308          zdiag_var    = glob_sum( trn(:,:,:,jn) * zvolume(:,:,:)   ) 
     298         zdiag_var    = glob_sum( trn(:,:,:,jn) * cvol(:,:,:)   ) 
    309299         zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 
    310300         zdiag_varmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 
     
    314304         END IF 
    315305         zdiag_tot = zdiag_tot + zdiag_var 
    316          zdiag_var = zdiag_var / zareatot 
     306         zdiag_var = zdiag_var / areatot 
    317307         IF(lwp) WRITE(numout,*) '   MEAN NO ', jn, ctrcnm(jn), ' = ', zdiag_var,   & 
    318308            &                    ' MIN = ', zdiag_varmin, ' MAX = ', zdiag_varmax 
  • branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r2528 r2963  
    2727 
    2828   PUBLIC   trc_stp    ! called by step 
    29     
     29 
     30   !! * Substitutions 
     31#  include "domzgr_substitute.h90" 
    3032   !!---------------------------------------------------------------------- 
    3133   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     
    4648      !!------------------------------------------------------------------- 
    4749      INTEGER, INTENT( in ) ::  kt  ! ocean time-step index 
     50      INTEGER               ::  jk  ! 
    4851      CHARACTER (len=25)    ::  charout 
    4952      !!------------------------------------------------------------------- 
     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      !     
    5069 
    5170      IF( MOD( kt - 1 , nn_dttrc ) == 0 ) THEN      ! only every nn_dttrc time step 
     
    5877         tra(:,:,:,:) = 0.e0 
    5978         ! 
    60          IF( kt == nit000 .AND. lk_trdmld_trc  )  & 
    61             &                      CALL trd_mld_trc_init        ! trends: Mixed-layer 
    6279                                   CALL trc_rst_opn( kt )       ! Open tracer restart file  
    6380         IF( lk_iomput ) THEN  ;   CALL trc_wri( kt )           ! output of passive tracers 
     
    6683                                   CALL trc_sms( kt )           ! tracers: sink and source 
    6784                                   CALL trc_trp( kt )           ! transport of passive tracers 
    68          IF( kt == nit000 )     CALL iom_close( numrtr )     ! close input  passive tracers restart file 
    6985         IF( lrst_trc )            CALL trc_rst_wri( kt )       ! write tracer restart file 
    7086         IF( lk_trdmld_trc  )      CALL trd_mld_trc( kt )       ! trends: Mixed-layer 
Note: See TracChangeset for help on using the changeset viewer.