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 5266 for branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90 – NEMO

Ignore:
Timestamp:
2015-05-13T10:37:43+02:00 (9 years ago)
Author:
cetlod
Message:

PISCES_QUOTA : First commits, see ticket #1516

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r4624 r5266  
    99   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Improve light availability of nano & diat 
    1010   !!---------------------------------------------------------------------- 
    11 #if defined  key_pisces 
     11#if defined  key_pisces || defined key_pisces_quota 
    1212   !!---------------------------------------------------------------------- 
    1313   !!   'key_pisces'                                       PISCES bio-model 
     
    4141   REAL(wp), ALLOCATABLE, SAVE,   DIMENSION(:,:) :: par_varsw    !: PAR fraction of shortwave 
    4242 
    43    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat   !: PAR for phyto, nano and diat  
     43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat   !: PAR for nano and diat  
     44#if defined key_pisces_quota 
     45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: epico          !: PAR for pico 
     46#endif 
    4447   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy           !: averaged PAR in the mixed layer 
    4548 
     
    7477      REAL(wp) ::   zc0 , zc1 , zc2, zc3, z1_dep 
    7578      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdepmoy, zetmp, zetmp1, zetmp2 
     79#if defined key_pisces_quota 
     80      REAL(wp), POINTER, DIMENSION(:,:  ) :: zetmp3 
     81#endif 
    7682      REAL(wp), POINTER, DIMENSION(:,:,:) :: zekg, zekr, zekb, ze0, ze1, ze2, ze3 
    7783      !!--------------------------------------------------------------------- 
     
    8288      CALL wrk_alloc( jpi, jpj,      zdepmoy, zetmp, zetmp1, zetmp2 )  
    8389      CALL wrk_alloc( jpi, jpj, jpk, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 
     90#if defined key_pisces_quota 
     91      CALL wrk_alloc( jpi, jpj,      zetmp3 ) 
     92#endif 
    8493 
    8594      IF( jnt == 1 .AND. ln_varpar ) CALL p4z_optsbc( kt ) 
     
    97106!CDIR NOVERRCHK 
    98107            DO ji = 1, jpi 
     108#if defined key_pisces_quota 
     109               zchl = ( trn(ji,jj,jk,jpnch) + trn(ji,jj,jk,jpdch) + trn(ji,jj,jk,jppch) + rtrn ) * 1.e6 
     110#else 
    99111               zchl = ( trn(ji,jj,jk,jpnch) + trn(ji,jj,jk,jpdch) + rtrn ) * 1.e6 
     112#endif 
    100113               zchl = MIN(  10. , MAX( 0.05, zchl )  ) 
    101114               irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) 
     
    132145            enano(ji,jj,1) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 
    133146            ediat(ji,jj,1) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 
     147#if defined key_pisces_quota 
     148            epico(ji,jj,1) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 
     149#endif 
    134150         END DO 
    135151      END DO 
     
    150166               enano(ji,jj,jk) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 
    151167               ediat(ji,jj,jk) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 
     168#if defined key_pisces_quota 
     169               epico(ji,jj,jk) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 
     170#endif 
    152171            END DO 
    153172         END DO 
    154173      END DO 
    155  
     174  
    156175      IF( ln_qsr_bio ) THEN                    !* heat flux accros w-level (used in the dynamics) 
    157176         !                                     !  ------------------------ 
     
    219238      zetmp1 (:,:)   = 0.e0 
    220239      zetmp2 (:,:)   = 0.e0 
     240#if defined key_pisces_quota 
     241      zetmp3 (:,:)   = 0.e0 
     242#endif 
    221243 
    222244      DO jk = 1, nksrp 
     
    229251                  zetmp1 (ji,jj) = zetmp1 (ji,jj) + enano(ji,jj,jk) * fse3t(ji,jj,jk) 
    230252                  zetmp2 (ji,jj) = zetmp2 (ji,jj) + ediat(ji,jj,jk) * fse3t(ji,jj,jk) 
     253#if defined key_pisces_quota 
     254                  zetmp3 (ji,jj) = zetmp3 (ji,jj) + epico(ji,jj,jk) * fse3t(ji,jj,jk) 
     255#endif 
    231256                  zdepmoy(ji,jj) = zdepmoy(ji,jj) + fse3t(ji,jj,jk) 
    232257               ENDIF 
     
    247272                  enano(ji,jj,jk) = zetmp1(ji,jj) * z1_dep 
    248273                  ediat(ji,jj,jk) = zetmp2(ji,jj) * z1_dep 
     274#if defined key_pisces_quota 
     275                  epico(ji,jj,jk) = zetmp3(ji,jj) * z1_dep 
     276#endif 
    249277               ENDIF 
    250278            END DO 
     
    268296      CALL wrk_dealloc( jpi, jpj,      zdepmoy, zetmp, zetmp1, zetmp2 ) 
    269297      CALL wrk_dealloc( jpi, jpj, jpk, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 
     298#if defined key_pisces_quota 
     299      CALL wrk_dealloc( jpi, jpj,      zetmp3 ) 
     300#endif 
    270301      ! 
    271302      IF( nn_timing == 1 )  CALL timing_stop('p4z_opt') 
     
    376407                         etot (:,:,:) = 0._wp 
    377408                         enano(:,:,:) = 0._wp 
     409#if defined key_pisces_quota 
     410                         epico(:,:,:) = 0._wp 
     411#endif 
    378412                         ediat(:,:,:) = 0._wp 
    379413      IF( ln_qsr_bio )   etot3(:,:,:) = 0._wp 
     
    388422      !!                     ***  ROUTINE p4z_opt_alloc  *** 
    389423      !!---------------------------------------------------------------------- 
    390       ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc )  
     424#if defined key_pisces_quota 
     425     ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk), epico(jpi,jpj,jpk),   & 
     426      &         STAT=p4z_opt_alloc ) 
     427#else 
     428      ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk),   & 
     429      &         STAT=p4z_opt_alloc )  
     430#endif 
    391431         ! 
    392432      IF( p4z_opt_alloc /= 0 ) CALL ctl_warn('p4z_opt_alloc : failed to allocate arrays.') 
Note: See TracChangeset for help on using the changeset viewer.