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 for trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90 – NEMO

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

update PISCES model, see ticket:190

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.