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

Changeset 1073


Ignore:
Timestamp:
2008-06-05T14:15:34+02:00 (16 years ago)
Author:
cetlod
Message:

update PISCES model, see ticket:190

Location:
trunk/NEMO/TOP_SRC/PISCES
Files:
2 added
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/PISCES/p4zbio.F90

    r935 r1073  
    1616   USE oce_trc         ! 
    1717   USE trp_trc         !  
    18    USE sms             !  
     18   USE sms_pisces      !  
    1919   USE p4zsink         !  
    2020   USE p4zopt          !  
     
    3030   PRIVATE 
    3131 
    32    PUBLIC   p4z_bio    ! called in p4zprg.F90 
     32   PUBLIC  p4z_bio     
    3333 
    3434   !! * Shared module variables 
  • trunk/NEMO/TOP_SRC/PISCES/p4zche.F90

    r935 r1073  
    1919   USE oce_trc         ! 
    2020   USE trp_trc         ! 
    21    USE sms             !  
     21   USE sms_pisces      !  
    2222 
    2323   IMPLICIT NONE 
    2424   PRIVATE 
    2525 
    26    PUBLIC   p4z_che    ! called in p4zprg.F90 
     26   PUBLIC   p4z_che   
    2727 
    2828   !! * Shared module variables 
  • trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90

    r1035 r1073  
    2020   USE oce_trc         ! 
    2121   USE trp_trc 
    22    USE sms 
     22   USE sms_pisces 
    2323   USE prtctl_trc 
    2424   USE p4zche 
     
    2727   PRIVATE 
    2828 
    29    PUBLIC   p4z_flx    ! called in p4zprg.F90 
     29   PUBLIC   p4z_flx   
    3030 
    3131   REAL(wp) :: &  ! pre-industrial atmospheric [co2] (ppm)   
  • trunk/NEMO/TOP_SRC/PISCES/p4zint.F90

    r935 r1073  
    1515   USE oce_trc         ! 
    1616   USE trp_trc 
    17    USE sms 
     17   USE sms_pisces 
    1818 
    1919   IMPLICIT NONE 
    2020   PRIVATE 
    2121 
    22    PUBLIC   p4z_int    ! called in p4zprg.F90 
     22   PUBLIC   p4z_int   
    2323 
    2424   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   &   !: 
  • trunk/NEMO/TOP_SRC/PISCES/p4zlim.F90

    r935 r1073  
    1717   USE oce_trc         ! 
    1818   USE trp_trc         !  
    19    USE sms             !  
     19   USE sms_pisces      !  
    2020 
    2121   IMPLICIT NONE 
    2222   PRIVATE 
    2323 
    24    PUBLIC   p4z_lim    ! called in p4zprg.F90 
     24   PUBLIC p4z_lim     
    2525 
    2626   !! * Shared module variables 
    27    REAL(wp), PUBLIC ::   conc0  = 2.e-6_wp         ,  &  !: 
    28      &                   conc1  = 10.e-6_wp        ,  &  !: 
    29      &                   conc2  = 2.e-11_wp        ,  &  !: 
    30      &                   conc2m = 8.E-11_wp        ,  &  !: 
    31      &                   conc3  = 1.e-10_wp        ,  &  !: 
    32      &                   conc3m = 4.e-10_wp        ,  &  !: 
    33      &                   concnnh4  = 1.e-7_wp      ,  &  !: 
    34      &                   concdnh4  = 5.e-7_wp      ,  &   !: 
    35      &                   xksi1     = 2.E-6_wp      ,  &   !: 
    36      &                   xksi2     = 3.33E-6_wp    ,  &   !: 
    37      &                   xkdoc     = 417.E-6_wp    ,  &   !: 
    38      &                   caco3r    = 0.3_wp               !: 
     27   REAL(wp), PUBLIC ::   & 
     28     conc0     = 2.e-6_wp      ,  &  !: 
     29     conc1     = 10.e-6_wp     ,  &  !: 
     30     conc2     = 2.e-11_wp     ,  &  !: 
     31     conc2m    = 8.E-11_wp     ,  &  !: 
     32     conc3     = 1.e-10_wp     ,  &  !: 
     33     conc3m    = 4.e-10_wp     ,  &  !: 
     34     concnnh4  = 1.e-7_wp      ,  &  !: 
     35     concdnh4  = 5.e-7_wp      ,  &  !: 
     36     xksi1     = 2.E-6_wp      ,  &  !: 
     37     xksi2     = 3.33E-6_wp    ,  &  !: 
     38     xkdoc     = 417.E-6_wp    ,  &  !: 
     39     caco3r    = 0.3_wp              !: 
    3940 
    4041 
  • trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90

    r935 r1073  
    2020   USE oce_trc         ! 
    2121   USE trp_trc 
    22    USE sms 
     22   USE sms_pisces 
    2323   USE prtctl_trc 
    2424 
     
    2929 
    3030   !! * Shared module variables 
    31    REAL(wp), PUBLIC ::   kdca    = 0.327e3_wp   ,  &  !: 
    32      &                   nca  = 1.0_wp                !: 
     31   REAL(wp), PUBLIC ::   & 
     32     kdca = 0.327e3_wp   ,  &  !: 
     33     nca  = 1.0_wp             !: 
    3334 
    3435   !! * Module variables 
  • trunk/NEMO/TOP_SRC/PISCES/p4zmeso.F90

    r935 r1073  
    1717   USE oce_trc         ! 
    1818   USE trp_trc         !  
    19    USE sms             !  
     19   USE sms_pisces      !  
    2020   USE prtctl_trc 
    2121   USE p4zint 
     
    2929   !! * Shared module variables 
    3030   REAL(wp), PUBLIC ::   & 
    31       xprefc = 1.0_wp       ,  &  !:  
    32       xprefp = 0.2_wp       ,  &  !: 
    33       xprefz = 1.0_wp       ,  &  !: 
     31      xprefc   = 1.0_wp     ,  &  !:  
     32      xprefp   = 0.2_wp     ,  &  !: 
     33      xprefz   = 1.0_wp     ,  &  !: 
    3434      xprefpoc = 0.0_wp     ,  &  !: 
    35       resrat2 = 0.005_wp    ,  &  !: 
    36       mzrat2 = 0.03_wp      ,  &  !: 
     35      resrat2  = 0.005_wp   ,  &  !: 
     36      mzrat2   = 0.03_wp    ,  &  !: 
    3737      grazrat2 = 0.7_wp     ,  &  !: 
    38       xkgraz2 = 20E-6_wp    ,  &  !: 
    39       unass2  = 0.3_wp      ,  & !: 
    40       sigma2 = 0.6_wp       ,  & !: 
    41       epsher2 = 0.33_wp     ,  & !:    
     38      xkgraz2  = 20E-6_wp   ,  &  !: 
     39      unass2   = 0.3_wp     ,  & !: 
     40      sigma2   = 0.6_wp     ,  & !: 
     41      epsher2  = 0.33_wp    ,  & !:    
    4242      grazflux = 5.E3_wp  
    4343 
  • trunk/NEMO/TOP_SRC/PISCES/p4zmicro.F90

    r935 r1073  
    1717   USE oce_trc         ! 
    1818   USE trp_trc         !  
    19    USE sms             !  
     19   USE sms_pisces      !  
    2020   USE prtctl_trc 
    2121   USE p4zint 
     
    3232      xpref2p = 0.5_wp       ,  &  !: 
    3333      xpref2d = 0.5_wp       ,  &  !: 
    34       resrat = 0.03_wp      ,  &  !: 
    35       mzrat = 0.0_wp        ,  &  !: 
    36       grazrat = 4.0_wp      ,  &  !: 
    37       xkgraz = 20E-6_wp     ,  &  !: 
    38       unass  = 0.3_wp       ,  &  !: 
    39       sigma1 = 0.6_wp       ,  &  !: 
    40       epsher = 0.33_wp 
     34      resrat  = 0.03_wp      ,  &  !: 
     35      mzrat   = 0.0_wp       ,  &  !: 
     36      grazrat = 4.0_wp       ,  &  !: 
     37      xkgraz  = 20E-6_wp     ,  &  !: 
     38      unass   = 0.3_wp       ,  &  !: 
     39      sigma1  = 0.6_wp       ,  &  !: 
     40      epsher  = 0.33_wp 
    4141 
    4242 
  • trunk/NEMO/TOP_SRC/PISCES/p4zmort.F90

    r935 r1073  
    1717   USE oce_trc         ! 
    1818   USE trp_trc         !  
    19    USE sms             !  
     19   USE sms_pisces      !  
    2020   USE p4zsink 
    2121   USE prtctl_trc 
     
    2424   PRIVATE 
    2525 
    26    PUBLIC   p4z_mort         ! called in p4zbio.F90 
     26   PUBLIC   p4z_mort     
    2727 
    2828 
    2929   !! * Shared module variables 
    30    REAL(wp), PUBLIC ::   wchl = 0.001_wp      ,  &  !: 
    31      &                   wchld = 0.02_wp      ,  &  !: 
    32      &                   mprat = 0.01_wp      ,  &  !: 
    33      &                   mprat2 = 0.01_wp     ,  &  !: 
    34      &                   mpratm = 0.01_wp           !: 
     30   REAL(wp), PUBLIC ::   & 
     31     wchl   = 0.001_wp    ,  &  !: 
     32     wchld  = 0.02_wp     ,  &  !: 
     33     mprat  = 0.01_wp     ,  &  !: 
     34     mprat2 = 0.01_wp     ,  &  !: 
     35     mpratm = 0.01_wp           !: 
    3536 
    3637   !! * Module variables 
  • trunk/NEMO/TOP_SRC/PISCES/p4zopt.F90

    r935 r1073  
    1616   USE oce_trc         ! 
    1717   USE trp_trc 
    18    USE sms 
     18   USE sms_pisces 
    1919 
    2020   IMPLICIT NONE 
    2121   PRIVATE 
    2222 
    23    PUBLIC   p4z_opt   ! called in p4zprg.F90 
     23   PUBLIC   p4z_opt   
    2424 
    2525   !! * Shared module variables 
  • trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90

    r935 r1073  
    1616   USE oce_trc         ! 
    1717   USE trp_trc         !  
    18    USE sms             !  
    19    USE p4zday          ! 
     18   USE sms_pisces      !  
    2019   USE prtctl_trc 
    2120   USE p4zint 
     
    2928 
    3029   !! * Shared module variables 
    31    REAL(wp), PUBLIC ::   pislope   = 3.0_wp          ,  &  !: 
    32      &                   pislope2  = 3.0_wp          ,  &  !: 
    33      &                   excret  = 10.e-5_wp         , &   !: 
    34      &                   excret2 = 0.05_wp           , &   !: 
    35      &                   chlcnm  = 0.033_wp          , &   !: 
    36      &                   chlcdm  = 0.05_wp           , &   !: 
    37      &                   fecnm  = 10.E-6_wp          , &   !: 
    38      &                   fecdm  = 15.E-6_wp          , &   !: 
    39      &                   grosip = 0.151_wp 
     30   REAL(wp), PUBLIC ::   & 
     31     pislope   = 3.0_wp          ,  &  !: 
     32     pislope2  = 3.0_wp          ,  &  !: 
     33     excret    = 10.e-5_wp       , &   !: 
     34     excret2   = 0.05_wp         , &   !: 
     35     chlcnm    = 0.033_wp        , &   !: 
     36     chlcdm    = 0.05_wp         , &   !: 
     37     fecnm     = 10.E-6_wp       , &   !: 
     38     fecdm     = 15.E-6_wp       , &   !: 
     39     grosip    = 0.151_wp 
    4040 
    4141   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk)  ::        & 
     
    4343    
    4444   REAL(wp) ::   & 
    45      tpp = 0.                               !: Total primary production 
     45      texcret                    ,  &  !: 1 - excret  
     46      texcret2                   ,  &  !: 1 - excret2         
     47      rpis180                    ,  &  !: rpi / 180 
     48      tpp = 0.                         !: Total primary production 
    4649 
    4750   !!* Substitution 
     
    6972      REAL(wp) ::   zprdiachl, zprbiochl, zsilim, ztn, zadap, zadap2 
    7073      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zetot2, zmax, zproreg, zproreg2 
    71       REAL(wp) ::   zmxltst, zmxlday, zlim1, zexcret, zexcret2 
     74      REAL(wp) ::   zmxltst, zmxlday, zlim1 
    7275      REAL(wp) ::   zpislopen  , zpislope2n 
     76      REAL(wp) ::   zrum, zcodel, zargu 
    7377      REAL(wp), DIMENSION(jpi,jpj)     ::   zmixnano   , zmixdiat, zstrn 
    7478      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpislopead , zpislopead2 
     
    98102      nspyr  = INT( raass / rdt ) 
    99103 
    100       zexcret  = 1. - excret 
    101       zexcret2 = 1. - excret2 
    102104 
    103105!     Computation of the optimal production 
     
    110112# endif 
    111113 
    112       CALL p4z_day       ! Computation of the day length 
     114      ! compute the day length depending on latitude and the day 
     115      !-------------------------------------------------------- 
     116      IF(lwp) write(numout,*) 
     117      IF(lwp) write(numout,*) 'p4zday : - Julian day ', nday_year 
     118      IF(lwp) write(numout,*) '~~~~~~' 
     119 
     120      IF( nleapy == 1 .AND. MOD( nyear, 4 ) == 0 ) THEN 
     121         zrum = FLOAT( nday_year - 80 ) / 366. 
     122      ELSE 
     123         zrum = FLOAT( nday_year - 80 ) / 365. 
     124      ENDIF 
     125      zcodel = ASIN(  SIN( zrum * rpi * 2. ) * SIN( rpis180 * 23.5 )  ) 
     126 
     127      ! day length in hours 
     128      zstrn(:,:) = 0. 
     129      DO jj = 1, jpj 
     130         DO ji = 1, jpi 
     131            zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rpis180 ) 
     132            zargu = MAX( -1., MIN(  1., zargu ) ) 
     133            zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rpis180 / 15. ) 
     134         END DO 
     135      END DO 
     136 
    113137 
    114138!CDIR NOVERRCHK 
     
    210234!     Computation of the fractionnal day length 
    211235!     ----------------------------------------- 
    212       zstrn(:,:) = strn(:,:) 
    213  
    214       DO jj = 1, jpj 
    215          DO ji = 1, jpi 
    216  
     236!      zstrn(:,:) = strn(:,:) 
     237 
     238      WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 
     239      zstrn(:,:) = 24. / zstrn(:,:) 
     240!      DO jj = 1, jpj 
     241!         DO ji = 1, jpi 
     242! 
    217243!      Computation of the maximum light intensity 
    218244!      ------------------------------------------ 
    219             IF( zstrn(ji,jj) < 1.e0 )   zstrn(ji,jj) = 24. 
    220             zstrn(ji,jj) = 24./zstrn(ji,jj) 
    221          END DO 
    222       END DO 
     245!            IF( zstrn(ji,jj) < 1.e0 )   zstrn(ji,jj) = 24. 
     246!            zstrn(ji,jj) = 24. / zstrn(ji,jj) 
     247!         END DO 
     248!      END DO 
    223249 
    224250!CDIR NOVERRCHK 
     
    304330              tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronew(ji,jj,jk) - zpronewd(ji,jj,jk) 
    305331              tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2 
    306               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorca(ji,jj,jk) * zexcret 
    307               tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln(ji,jj,jk) * zexcret 
    308               tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * zexcret 
    309               tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * zexcret2 
    310               tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * zexcret2 
    311               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * zexcret2 
    312               tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * zexcret2 
     332              tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorca(ji,jj,jk) * texcret 
     333              tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln(ji,jj,jk) * texcret 
     334              tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcret 
     335              tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcret2 
     336              tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * texcret2 
     337              tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcret2 
     338              tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2 
    313339              tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + & 
    314340              &                     excret2 * zprorcad(ji,jj,jk) + excret * zprorca(ji,jj,jk) 
     
    316342              &                    + ( o2ut + o2nit ) * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) 
    317343              tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) & 
    318               &                     - zexcret * zprofen(ji,jj,jk) - zexcret2 * zprofed(ji,jj,jk) 
     344              &                     - texcret * zprofen(ji,jj,jk) - texcret2 * zprofed(ji,jj,jk) 
    319345              tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) & 
    320               &                     - zexcret2 * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 
     346              &                     - texcret2 * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 
    321347              tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 
    322348              tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) & 
     
    405431      ENDIF 
    406432 
     433      rpis180   = rpi / 180. 
     434      texcret   = 1.0 - excret 
     435      texcret2  = 1.0 - excret2 
     436 
    407437   END SUBROUTINE p4z_prod_init 
    408438 
  • trunk/NEMO/TOP_SRC/PISCES/p4zrem.F90

    r935 r1073  
    1717   USE oce_trc         ! 
    1818   USE trp_trc         !  
    19    USE sms             !  
     19   USE sms_pisces      !  
    2020   USE prtctl_trc 
    2121   USE p4zint 
     
    3131 
    3232   !! * Shared module variables 
    33    REAL(wp), PUBLIC ::   xremik  = 0.3_wp      ,  & !: 
    34      &                   xremip  = 0.025_wp    ,  & !: 
    35      &                   nitrif  = 0.05_wp     ,  & !: 
    36      &                   xsirem  = 0.015_wp    ,  & !: 
    37      &                   xlam1   = 0.005_wp    ,  & !: 
    38      &                   oxymin  = 1.e-6_wp         !: 
     33   REAL(wp), PUBLIC ::   & 
     34     xremik  = 0.3_wp      ,  & !: 
     35     xremip  = 0.025_wp    ,  & !: 
     36     nitrif  = 0.05_wp     ,  & !: 
     37     xsirem  = 0.015_wp    ,  & !: 
     38     xlam1   = 0.005_wp    ,  & !: 
     39     oxymin  = 1.e-6_wp         !: 
     40 
    3941   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::    & !: 
    4042     &                   denitr                     !: denitrification array 
  • trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90

    r935 r1073  
    1818   USE oce_trc         ! 
    1919   USE trp_trc 
    20    USE sms 
     20   USE sms_pisces 
    2121   USE lib_mpp 
    2222   USE prtctl_trc 
     
    3434   PRIVATE 
    3535 
    36    PUBLIC   p4z_sed    ! called in p4zprg.F90 
     36   PUBLIC   p4z_sed    
    3737 
    3838   !! * Shared module variables 
    39    LOGICAL, PUBLIC ::    bdustfer = .FALSE.      ,  &  !: 
    40      &                   briver = .FALSE.        ,  &  !: 
    41      &                   bndepo = .FALSE.        ,  &  !: 
    42      &                   bsedinput = .FALSE.           !: 
    43  
    44    REAL(wp), PUBLIC ::   sedfeinput = 1.E-9_wp   ,  &  !: 
    45      &                   dustsolub  = 0.014_wp         !: 
     39   LOGICAL, PUBLIC ::    & 
     40     bdustfer  = .FALSE.      ,  &  !: 
     41     briver    = .FALSE.      ,  &  !: 
     42     bndepo    = .FALSE.      ,  &  !: 
     43     bsedinput = .FALSE.            !: 
     44 
     45   REAL(wp), PUBLIC ::   & 
     46     sedfeinput = 1.E-9_wp   ,  &  !: 
     47     dustsolub  = 0.014_wp         !: 
    4648 
    4749   !! * Module variables 
  • trunk/NEMO/TOP_SRC/PISCES/p4zsink.F90

    r935 r1073  
    1313   USE oce_trc         ! 
    1414   USE trp_trc 
    15    USE sms 
    16    USE p4zsink2        ! 
     15   USE sms_pisces 
    1716   USE prtctl_trc 
    1817 
     
    615614#endif 
    616615 
     616   SUBROUTINE p4z_sink2( pwsink, psinkflx, jp_tra ) 
     617      !!--------------------------------------------------------------------- 
     618      !!                     ***  ROUTINE p4z_sink2  *** 
     619      !! 
     620      !! ** Purpose :   Compute the sedimentation terms for the various sinking 
     621      !!     particles. The scheme used to compute the trends is based 
     622      !!     on MUSCL. 
     623      !! 
     624      !! ** Method  : - this ROUTINE compute not exactly the advection but the 
     625      !!      transport term, i.e.  div(u*tra). 
     626      !!--------------------------------------------------------------------- 
     627      INTEGER , INTENT(in   )                         ::   jp_tra    ! tracer index index       
     628      REAL(wp), INTENT(in   ), DIMENSION(jpi,jpj,jpk) ::   pwsink    ! sinking speed 
     629      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   psinkflx  ! sinking fluxe 
     630      !! 
     631      INTEGER  ::   ji, jj, jk, jn 
     632      REAL(wp) ::   zigma,zew,zstep,zign, zflx 
     633      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  ztraz, zakz 
     634      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zwsink2 
     635      !!--------------------------------------------------------------------- 
     636 
     637      zstep  = rfact2 / 2. 
     638 
     639      ztraz(:,:,:) = 0.e0 
     640      zakz (:,:,:) = 0.e0 
     641 
     642      DO jk = 1, jpkm1 
     643# if defined key_off_degrad 
     644         zwsink2(:,:,jk+1) = -pwsink(:,:,jk) / rjjss * tmask(:,:,jk+1) * facvol(:,:,jk) 
     645# else 
     646         zwsink2(:,:,jk+1) = -pwsink(:,:,jk) / rjjss * tmask(:,:,jk+1) 
     647# endif 
     648      END DO 
     649      zwsink2(:,:,1) = 0.e0 
     650 
     651 
     652      ! Vertical advective flux 
     653      DO jn = 1, 2 
     654         !  first guess of the slopes interior values 
     655         DO jk = 2, jpkm1 
     656            ztraz(:,:,jk) = ( trn(:,:,jk-1,jp_tra) - trn(:,:,jk,jp_tra) ) * tmask(:,:,jk) 
     657         END DO 
     658         ztraz(:,:,1  ) = 0.0 
     659         ztraz(:,:,jpk) = 0.0 
     660 
     661         ! slopes 
     662         DO jk = 2, jpkm1 
     663            DO jj = 1,jpj 
     664               DO ji = 1, jpi 
     665                  zign = 0.25 + SIGN( 0.25, ztraz(ji,jj,jk) * ztraz(ji,jj,jk+1) ) 
     666                  zakz(ji,jj,jk) = ( ztraz(ji,jj,jk) + ztraz(ji,jj,jk+1) ) * zign 
     667               END DO 
     668            END DO 
     669         END DO 
     670          
     671         ! Slopes limitation 
     672         DO jk = 2, jpkm1 
     673            DO jj = 1, jpj 
     674               DO ji = 1, jpi 
     675                  zakz(ji,jj,jk) = SIGN( 1., zakz(ji,jj,jk) ) *        & 
     676                     &             MIN( ABS( zakz(ji,jj,jk) ), 2. * ABS(ztraz(ji,jj,jk+1)), 2. * ABS(ztraz(ji,jj,jk) ) ) 
     677               END DO 
     678            END DO 
     679         END DO 
     680          
     681         ! vertical advective flux 
     682         DO jk = 1, jpkm1 
     683            DO jj = 1, jpj       
     684               DO ji = 1, jpi     
     685                  zigma = zwsink2(ji,jj,jk+1) * zstep / fse3w(ji,jj,jk+1) 
     686                  zew   = zwsink2(ji,jj,jk+1) 
     687                  psinkflx(ji,jj,jk+1) = -zew * ( trn(ji,jj,jk,jp_tra) - 0.5 * ( 1 + zigma ) * zakz(ji,jj,jk) ) * zstep 
     688               END DO 
     689            END DO 
     690         END DO 
     691         ! 
     692         ! Boundary conditions 
     693         psinkflx(:,:,1  ) = 0.e0 
     694         psinkflx(:,:,jpk) = 0.e0 
     695          
     696         DO jk=1,jpkm1 
     697            DO jj = 1,jpj 
     698               DO ji = 1, jpi 
     699                  zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 
     700                  trn(ji,jj,jk,jp_tra) = trn(ji,jj,jk,jp_tra) + zflx 
     701               END DO 
     702            END DO 
     703         END DO 
     704 
     705      ENDDO 
     706 
     707      DO jk=1,jpkm1 
     708         DO jj = 1,jpj 
     709            DO ji = 1, jpi 
     710               zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 
     711               trb(ji,jj,jk,jp_tra) = trb(ji,jj,jk,jp_tra) + 2. * zflx 
     712            END DO 
     713         END DO 
     714      END DO 
     715 
     716      trn(:,:,:,jp_tra) = trb(:,:,:,jp_tra) 
     717      psinkflx(:,:,:)   = 2. * psinkflx(:,:,:) 
     718 
     719      ! 
     720   END SUBROUTINE p4z_sink2 
     721 
    617722#else 
    618723   !!====================================================================== 
  • trunk/NEMO/TOP_SRC/PISCES/trcini_pisces.F90

    r1007 r1073  
    1717   !!---------------------------------------------------------------------- 
    1818   USE par_trc         ! TOP parameters 
    19    USE sms             ! Source Minus Sink variables 
     19   USE sms_pisces      ! Source Minus Sink variables 
    2020   USE trc 
    2121   USE oce_trc         ! ocean variables 
  • trunk/NEMO/TOP_SRC/PISCES/trclsm_pisces.F90

    r1007 r1073  
    1818   USE par_trc         ! TOP parameters 
    1919   USE trc             ! TOP variables 
    20    USE sms             ! sms trends 
     20   USE sms_pisces      ! sms trends 
    2121 
    2222 
  • trunk/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90

    r935 r1073  
    1515   USE oce_trc         ! 
    1616   USE trp_trc 
    17    USE sms 
     17   USE sms_pisces 
    1818   USE lbclnk 
    1919   USE lib_mpp 
     
    5353      !! 
    5454      INTEGER ::   jnt, jn 
    55       INTEGER ::   iyy, imm, idd 
    56  
    57  
    5855      !!--------------------------------------------------------------------- 
    5956 
    60  
    61       iyy = ndastp/10000 
    62       imm = (ndastp - iyy*10000)/100 
    63       idd = (ndastp - iyy*10000 - imm*100) 
    64  
    65       IF( ndayflxtr /= idd) THEN      ! New days 
     57      IF( ndayflxtr /= nday ) THEN      ! New days 
    6658         ! 
    67          ndayflxtr = idd 
     59         ndayflxtr = nday 
    6860 
    6961         CALL p4z_che          ! computation of chemical constants 
Note: See TracChangeset for help on using the changeset viewer.