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 5206 for branches – NEMO

Changeset 5206 for branches


Ignore:
Timestamp:
2015-04-13T12:13:10+02:00 (9 years ago)
Author:
cetlod
Message:

First improvment of diurnal cycle for passive tracers, see ticket #1484

Location:
branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM
Files:
28 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/CONFIG/SHARED/field_def.xml

    r5147 r5206  
    262262         <field id="qns_ice"      long_name="non-solar heat flux at ice surface"                           unit="W/m2"     /> 
    263263         <field id="qtr_ice"      long_name="solar heat flux transmitted thru the ice"                     unit="W/m2"     /> 
     264         <field id="qsr_oce_mean" long_name="daily mean solar heat flux at ocean surface"                  unit="W/m2"     /> 
     265         <field id="qsr_ice_mean" long_name="daily mean solar heat flux at ice surface"                    unit="W/m2"     /> 
     266         <field id="qtr_ice_mean" long_name="daily meansolar heat flux transmitted thru the ice"           unit="W/m2"     /> 
    264267         <field id="utau_ice"     long_name="Wind stress along i-axis over the ice at i-point"             unit="N/m2"     /> 
    265268         <field id="vtau_ice"     long_name="Wind stress along j-axis over the ice at i-point"             unit="N/m2"     /> 
     
    571574      <!-- ptrc on T grid --> 
    572575 
    573       <field_group id="ptrc_T" grid_ref="grid_T_3D"> 
    574        <field id="DIC"      long_name="Dissolved inorganic Concentration"        unit="mmol/m3" /> 
    575        <field id="Alkalini" long_name="Total Alkalinity Concentration"           unit="mmol/m3" /> 
    576        <field id="O2"       long_name="Oxygen Concentration"                     unit="mmol/m3" /> 
    577        <field id="CaCO3"    long_name="Calcite Concentration"                    unit="mmol/m3" /> 
    578        <field id="PO4"      long_name="Phosphate Concentration"                  unit="mmol/m3" /> 
    579        <field id="POC"      long_name="Small organic carbon Concentration"       unit="mmol/m3" /> 
    580        <field id="Si"       long_name="Silicate Concentration"                   unit="mmol/m3" /> 
    581        <field id="PHY"      long_name="(Nano)Phytoplankton Concentration"        unit="mmol/m3" /> 
    582        <field id="ZOO"      long_name="(Micro)Zooplankton Concentration"         unit="mmol/m3" /> 
    583        <field id="DOC"      long_name="Dissolved organic Concentration"          unit="mmol/m3" /> 
    584        <field id="PHY2"     long_name="Diatoms Concentration"                    unit="mmol/m3" /> 
    585        <field id="ZOO2"     long_name="Mesozooplankton Concentration"            unit="mmol/m3" /> 
    586        <field id="DSi"      long_name="Diatoms Silicate Concentration"           unit="mmol/m3" /> 
    587        <field id="Fer"      long_name="Dissolved Iron Concentration"             unit="mmol/m3" /> 
    588        <field id="BFe"      long_name="Big iron particles Concentration"         unit="mmol/m3" /> 
    589        <field id="GOC"      long_name="Big organic carbon Concentration"         unit="mmol/m3" /> 
    590        <field id="SFe"      long_name="Small iron particles Concentration"       unit="mmol/m3" /> 
    591        <field id="DFe"      long_name="Diatoms iron  Concentration"              unit="mmol/m3" /> 
    592        <field id="GSi"      long_name="Sinking biogenic Silicate Concentration"  unit="mmol/m3" /> 
    593        <field id="NFe"      long_name="Nano iron Concentration"                  unit="mmol/m3" /> 
    594        <field id="NCHL"     long_name="Nano chlorophyl Concentration"            unit="mg/m3"   /> 
    595        <field id="DCHL"     long_name="Diatoms chlorophyl Concentration"         unit="mg/m3"   /> 
    596        <field id="NO3"      long_name="Nitrate Concentration"                    unit="mmol/m3" /> 
    597        <field id="NH4"      long_name="Ammonium Concentration"                   unit="mmol/m3" /> 
     576     <field_group id="ptrc_T" grid_ref="grid_T_3D"> 
     577       <field id="DIC"          long_name="Dissolved inorganic Concentration"        unit="mmol/m3" /> 
     578       <field id="DIC_E3T"      long_name="DIC * E3T"                                unit="mmol/m2" > DIC * e3t </field > 
     579       <field id="Alkalini"     long_name="Total Alkalinity Concentration"           unit="mmol/m3" /> 
     580       <field id="Alkalini_E3T" long_name="Alkalini * E3T"                           unit="mmol/m2"  > Alkalini * e3t </field > 
     581       <field id="O2"           long_name="Oxygen Concentration"                     unit="mmol/m3" /> 
     582       <field id="O2_E3T"       long_name="O2 * E3T"                                 unit="mmol/m2"  > O2 * e3t </field > 
     583       <field id="CaCO3"        long_name="Calcite Concentration"                    unit="mmol/m3" /> 
     584       <field id="CaCO3_E3T"    long_name="CaCO3 * E3T"                              unit="mmol/m2"  > CaCO3 * e3t </field > 
     585       <field id="PO4"          long_name="Phosphate Concentration"                  unit="mmol/m3" /> 
     586       <field id="PO4_E3T"      long_name="PO4 * E3T"                                unit="mmol/m2"  > PO4 * e3t </field > 
     587       <field id="POC"          long_name="Small organic carbon Concentration"       unit="mmol/m3" /> 
     588       <field id="POC_E3T"      long_name="POC * E3T"                                unit="mmol/m2"  > POC * e3t </field > 
     589       <field id="Si"           long_name="Silicate Concentration"                   unit="mmol/m3" /> 
     590       <field id="Si_E3T"       long_name="Si * E3T"                                 unit="mmol/m2"  > Si * e3t </field > 
     591       <field id="PHY"          long_name="(Nano)Phytoplankton Concentration"        unit="mmol/m3" /> 
     592       <field id="PHY_E3T"      long_name="PHY * E3T"                                unit="mmol/m2"  > PHY * e3t </field > 
     593       <field id="ZOO"          long_name="(Micro)Zooplankton Concentration"         unit="mmol/m3" /> 
     594       <field id="ZOO_E3T"      long_name="ZOO2 * E3T"                               unit="mmol/m2"  > ZOO * e3t </field > 
     595       <field id="DOC"          long_name="Dissolved organic Concentration"          unit="mmol/m3" /> 
     596       <field id="DOC_E3T"      long_name="DOC * E3T"                                unit="mmol/m2"  > DOC * e3t </field > 
     597       <field id="PHY2"         long_name="Diatoms Concentration"                    unit="mmol/m3" /> 
     598       <field id="PHY2_E3T"     long_name="PHY2 * E3T"                               unit="mmol/m2"  > PHY2 * e3t </field > 
     599       <field id="ZOO2"         long_name="Mesozooplankton Concentration"            unit="mmol/m3" /> 
     600       <field id="ZOO2_E3T"     long_name="ZOO2 * E3T"                               unit="mmol/m2"  > ZOO2 * e3t </field > 
     601       <field id="DSi"          long_name="Diatoms Silicate Concentration"           unit="mmol/m3" /> 
     602       <field id="DSi_E3T"      long_name="Dsi * E3T"                                unit="mmol/m2"  > DSi * e3t </field > 
     603       <field id="Fer"          long_name="Dissolved Iron Concentration"             unit="mmol/m3" /> 
     604       <field id="Fer_E3T"      long_name="Fer * E3T"                                unit="mmol/m2"  > Fer * e3t </field > 
     605       <field id="BFe"          long_name="Big iron particles Concentration"         unit="mmol/m3" /> 
     606       <field id="BFe_E3T"      long_name="BFe * E3T"                                unit="mmol/m2"  > BFe * e3t </field > 
     607       <field id="GOC"          long_name="Big organic carbon Concentration"         unit="mmol/m3" /> 
     608       <field id="GOC_E3T"      long_name="GOC * E3T"                                unit="mmol/m2"  > GOC * e3t </field > 
     609       <field id="SFe"          long_name="Small iron particles Concentration"       unit="mmol/m3" /> 
     610       <field id="SFe_E3T"      long_name="SFe * E3T"                                unit="mmol/m2"  > SFe * e3t </field > 
     611       <field id="DFe"          long_name="Diatoms iron  Concentration"              unit="mmol/m3" /> 
     612       <field id="DFe_E3T"      long_name="DFe * E3T"                                unit="mmol/m2"  > DFe * e3t </field > 
     613       <field id="GSi"          long_name="Sinking biogenic Silicate Concentration"  unit="mmol/m3" /> 
     614       <field id="GSi_E3T"      long_name="GSi * E3T"                                unit="mmol/m2"  > GSi * e3t </field > 
     615       <field id="NFe"          long_name="Nano iron Concentration"                  unit="mmol/m3" /> 
     616       <field id="NFe_E3T"      long_name="NFe * E3T"                                unit="mmol/m2"  > NFe * e3t </field > 
     617       <field id="NCHL"         long_name="Nano chlorophyl Concentration"            unit="mg/m3"   /> 
     618       <field id="NCHL_E3T"     long_name="NCHL * E3T"                               unit="mmol/m2"  > NCHL * e3t </field > 
     619       <field id="DCHL"         long_name="Diatoms chlorophyl Concentration"         unit="mg/m3"   /> 
     620       <field id="DCHL_E3T"     long_name="DCHL * E3T"                               unit="mmol/m2"  > DCHL * e3t </field > 
     621       <field id="NO3"          long_name="Nitrate Concentration"                    unit="mmol/m3" /> 
     622       <field id="NO3_E3T"      long_name="NO3 * E3T"                                unit="mmol/m2"  > NO3 * e3t </field > 
     623       <field id="NH4"          long_name="Ammonium Concentration"                   unit="mmol/m3" /> 
     624       <field id="NH4_E3T"      long_name="NH4 * E3T"                                unit="mmol/m2"  > NH4 * e3t </field > 
    598625 
    599626       <!-- PISCES with Kriest parametisation : variables available with key_kriest --> 
    600        <field id="Num"      long_name="Number of organic particles"              unit="nbr" /> 
     627       <field id="Num"         long_name="Number of organic particles"              unit="nbr" /> 
     628       <field id="Num_E3T"     long_name="Num * E3T"                                unit="nbr*m"  > Num * e3t </field > 
    601629 
    602630       <!-- PISCES light : variables available with key_pisces_reduced --> 
    603        <field id="DET"      long_name="Detritus"                                 unit="mmol-N/m3" /> 
    604        <field id="DOM"      long_name="Dissolved Organic Matter"                 unit="mmol-N/m3" /> 
     631       <field id="DET"         long_name="Detritus"                                 unit="mmol-N/m3" /> 
     632       <field id="DET_E3T"     long_name="DET * E3T"                                unit="mmol-N/m2"  > DET * e3t </field > 
     633       <field id="DOM"         long_name="Dissolved Organic Matter"                 unit="mmol-N/m3" /> 
     634       <field id="DOM_E3T"     long_name="DOM * E3T"                                unit="mmol-N/m2"  > DOM * e3t </field > 
    605635 
    606636       <!-- CFC11 : variables available with key_cfc --> 
    607        <field id="CFC11"    long_name="CFC-11 Concentration"                     unit="umol/L" /> 
     637       <field id="CFC11"       long_name="CFC-11 Concentration"                     unit="umol/L" /> 
     638       <field id="CFC11_E3T"   long_name="CFC11 * E3T"                              unit="umol/m2"  > CFC11 * e3t </field > 
    608639       <!-- Bomb C14 : variables available with key_c14b --> 
    609        <field id="C14B"     long_name="Bomb C14 Concentration"                   unit="ration" /> 
     640       <field id="C14B"        long_name="Bomb C14 Concentration"                   unit="ration" /> 
     641       <field id="C14B_E3T"    long_name="C14B * E3T"                               unit="ration*m"  > C14B * e3t </field > 
    610642     </field_group> 
    611643 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_2/ice_2.F90

    r5123 r5206  
    6565 
    6666   !!* Ice Rheology 
    67  
    68    LOGICAL , PUBLIC::  ltrcdm2dc_ice = .FALSE.              !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
    69  
    7067# if defined key_lim2_vp 
    7168   !                                                      !!* VP rheology * 
     
    113110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qdtcn         !: energy from the ice to the ocean point (at a factor 2) 
    114111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   thcm          !: part of the solar energy used in the lead heat budget 
    115    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fstric_daymean!: Solar flux transmitted trough the ice, for day mean of qsr ( PISCES, with dirunal cycle ) 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fstric_mean   !: Solar flux transmitted trough the ice, for day mean of qsr ( PISCES, with dirunal cycle ) 
    116113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fstric        !: Solar flux transmitted trough the ice 
    117114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ffltbif       !: linked with the max heat contained in brine pockets (?) 
     
    173170         &     tbif  (jpi,jpj,jplayersp1)                           , STAT=ierr(5)) 
    174171 
    175       IF( ltrcdm2dc_ice ) ALLOCATE(fstric_daymean(jpi,jpj), STAT=ierr(6) ) 
    176  
    177172      !* moment used in the advection scheme 
    178173      ALLOCATE(sxice (jpi,jpj) , syice (jpi,jpj) , sxxice(jpi,jpj) ,     & 
     
    201196   !!   Default option         Empty module        NO LIM 2.0 sea-ice model 
    202197   !!---------------------------------------------------------------------- 
    203    LOGICAL , PUBLIC::  ltrcdm2dc_ice = .FALSE.              !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
    204198#endif 
    205199   !!----------------------------------------------------------------- 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90

    r4624 r5206  
    6060      ENDIF 
    6161      !                                 
    62       ! When Diurnal cycle, core bulk and LIM2  are activated,  
    63       ! a daily mean qsr is computed for tracer/biogeochemistery model                                 ! 
    64       IF( ltrcdm2dc )THEN  ; ltrcdm2dc_ice = .TRUE. 
    65       ELSE                 ; ltrcdm2dc_ice = .FALSE. 
    66       ENDIF 
    6762      !                                ! Allocate the ice arrays 
    6863      ierr =        ice_alloc_2    ()       ! ice variables 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r4990 r5206  
    4646   PUBLIC   lim_sbc_flx_2      ! called by sbc_ice_lim_2 
    4747   PUBLIC   lim_sbc_tau_2      ! called by sbc_ice_lim_2 
    48    PUBLIC   lim_bio_meanqsr_2  ! called by sbc_ice_lim_2 
    4948 
    5049   REAL(wp)  ::   r1_rdtice            ! = 1. / rdt_ice  
     
    264263      ENDIF 
    265264 
     265      !   daily mean qsr when diurnal cycle is applied on physics - for BGC models 
     266      IF( l_trcdm2dc ) qsr_mean(:,:) =  pfrld(:,:) * qsr_mean(:,:) + ( 1. - pfrld(:,:) ) * fstric_mean(:,:) 
     267 
     268 
    266269      IF(ln_ctl) THEN            ! control print 
    267270         CALL prt_ctl(tab2d_1=qsr   , clinfo1=' lim_sbc: qsr    : ', tab2d_2=qns   , clinfo2=' qns     : ') 
     
    430433   END SUBROUTINE lim_sbc_tau_2 
    431434 
    432    SUBROUTINE lim_bio_meanqsr_2 
    433       !!--------------------------------------------------------------------- 
    434       !!                     ***  ROUTINE lim_bio_meanqsr 
    435       !! 
    436       !! ** Purpose :   provide daily qsr_mean for PISCES when  
    437       !!                analytic diurnal cycle is applied in physic 
    438       !! 
    439       !! ** Method  :   add part under ice 
    440       !! 
    441       !!--------------------------------------------------------------------- 
    442  
    443       qsr_mean(:,:) =  pfrld(:,:) * qsr_mean(:,:) + ( 1. - pfrld(:,:) ) * fstric_daymean(:,:) 
    444  
    445    END SUBROUTINE lim_bio_meanqsr_2 
    446435 
    447436   SUBROUTINE lim_sbc_init_2 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r4990 r5206  
    114114      CALL wrk_alloc( jpi, jpj, jpk, zmsk ) 
    115115 
    116       IF( kt == nit000 )   CALL lim_thd_init_2  ! Initialization (first time-step only) 
     116      IF( kt == nit000 ) THEN 
     117         CALL lim_thd_init_2  ! Initialization (first time-step only) 
     118         IF( l_trcdm2dc ) ALLOCATE( fstric_mean(jpi,jpj), fstbif_mean_1d(jpij), qsr_ice_mean_1d(jpij) ) 
     119      ENDIF 
    117120    
    118121      !-------------------------------------------! 
     
    137140      rdq_ice(:,:) = 0.e0   ! heat content associated with rdm_ice 
    138141      zmsk (:,:,:) = 0.e0 
    139       IF( ltrcdm2dc_ice  ) fstric_daymean (:,:) = 0.e0   ! part of solar radiation absorbing inside the ice 
     142      ! 
     143      IF( l_trcdm2dc  ) fstric_mean(:,:) = 0.e0   ! part of solar radiation absorbing inside the ice 
    140144 
    141145      ! set to zero snow thickness smaller than epsi04 
     
    285289         CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 3 ), tbif(:,:,3)    , jpi, jpj, npb(1:nbpb) ) 
    286290         CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb)     , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) 
    287          IF( ltrcdm2dc_ice ) & 
     291         IF( l_trcdm2dc ) & 
    288292         & CALL tab_2d_1d_2( nbpb, qsr_ice_mean_1d (1:nbpb), qsr_ice_mean(:,:,1), jpi, jpj, npb(1:nbpb) ) 
    289293         CALL tab_2d_1d_2( nbpb, fr1_i0_1d  (1:nbpb)     , fr1_i0         , jpi, jpj, npb(1:nbpb) ) 
     
    336340         CALL tab_1d_2d_2( nbpb, qsr_ice(:,:,1), npb, qsr_ice_1d(1:nbpb)  , jpi, jpj ) 
    337341         CALL tab_1d_2d_2( nbpb, qns_ice(:,:,1), npb, qns_ice_1d(1:nbpb)  , jpi, jpj ) 
    338          IF( ltrcdm2dc_ice )THEN 
    339             CALL tab_1d_2d_2( nbpb, fstric_daymean     , npb, fstbif_daymean_1d (1:nbpb)  , jpi, jpj ) 
    340             CALL tab_1d_2d_2( nbpb, qsr_ice_mean(:,:,1), npb,    qsr_ice_mean_1d(1:nbpb)  , jpi, jpj ) 
     342         IF( l_trcdm2dc ) & 
     343            CALL tab_1d_2d_2( nbpb, fstric_mean        , npb, fstbif_mean_1d (1:nbpb), jpi, jpj ) 
     344            CALL tab_1d_2d_2( nbpb, qsr_ice_mean(:,:,1), npb, qsr_ice_mean_1d(1:nbpb), jpi, jpj ) 
    341345         ENDIF 
    342          IF( .NOT. lk_cpl )   CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb)             , jpi, jpj ) 
     346         IF( .NOT. lk_cpl )   CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb), jpi, jpj ) 
    343347         ! 
    344348      ENDIF 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90

    r4990 r5206  
    273273       END DO 
    274274 
    275        IF( ltrcdm2dc_ice )THEN 
    276  
     275       IF( l_topdcy )THEN 
     276          ! 
    277277          DO ji = kideb , kiut 
    278              zihsn  = MAX( zzero , SIGN (zone , -h_snow_1d(ji) ) ) 
    279              zihic  = MAX( zzero , 1.0 - ( h_ice_1d(ji) / zhsu ) ) 
     278             zihsn    = MAX( zzero , SIGN (zone , -h_snow_1d(ji) ) ) 
     279             zihic    = MAX( zzero , 1.0 - ( h_ice_1d(ji) / zhsu ) ) 
    280280             zi0(ji)  = zihsn * ( fr1_i0_1d(ji) + zihic * fr2_i0_1d(ji) ) 
    281281             zexp     = MIN( zone , EXP( -1.5 * ( h_ice_1d(ji) - zhsu ) ) ) 
    282              fstbif_daymean_1d(ji) = zi0(ji) * qsr_ice_mean_1d(ji) * zexp 
     282             fstbif_mean_1d(ji) = zi0(ji) * qsr_ice_mean_1d(ji) * zexp 
    283283          END DO 
    284  
     284          ! 
    285285       ENDIF 
    286286 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90

    r4306 r5206  
    5555      fstbif_1d   ,     &  !:    "                  "      fstric 
    5656      fltbif_1d   ,     &  !:    "                  "      ffltbif 
    57       fstbif_daymean_1d, & !:    "                  " fstric_daymean 
     57      fstbif_mean_1d,   & !:    "                   "      fstric_mean 
    5858      fscbq_1d    ,     &  !:    "                  "      fscmcbq 
    5959      qsr_ice_1d  ,     &  !:    "                  "      qsr_ice 
     
    122122         &      tbif_1d(jpij, jplayersp1), Stat=ierr(4)) 
    123123         ! 
    124       IF( ltrcdm2dc_ice )ALLOCATE(fstbif_daymean_1d(jpij),qsr_ice_mean_1d(jpij),Stat=ierr(5)) 
    125          ! 
    126124      thd_ice_alloc_2 = MAXVAL(ierr) 
    127125      IF( thd_ice_alloc_2 /= 0 )   CALL ctl_warn('thd_ice_alloc_2: failed to allocate arrays') 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r5167 r5206  
    301301 
    302302   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ftr_ice   !: transmitted solar radiation under ice 
     303   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ftr_ice_mean  !: transmitted daily mean solar radiation under ice (diurnal cycle)  
     304 
    303305 
    304306   !!-------------------------------------------------------------------------- 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r5187 r5206  
    118118      IF( iom_use('qt_oce' ) )   CALL iom_put( "qt_oce"  , ( qsr(:,:) + qns(:,:) ) * pfrld(:,:) )   
    119119      IF( iom_use('qt_ice' ) )   CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) * a_i_b(:,:,:), dim=3 ) ) 
     120      IF( l_trcdm2dc ) THEN 
     121        IF( iom_use('qsr_oce_mean') )   CALL iom_put( "qsr_oce_mean" , qsr_mean(:,:) * pfrld(:,:) )   !   daily mean solar flux at ocean surface 
     122        IF( iom_use('qsr_ice_mean') )   CALL iom_put( "qsr_ice_mean" , SUM( qsr_ice_mean(:,:,:) * a_i_b(:,:,:), dim=3 ) ) !  daily mean solar flux at ice surface 
     123        IF( iom_use('qtr_ice_mean') )   CALL iom_put( "qtr_ice_mean" , SUM( ftr_ice_mean(:,:,:) * a_i_b(:,:,:), dim=3 ) ) !  daily mean solar flux transmitted thru ice 
     124      ENDIF 
    120125 
    121126      ! pfrld is the lead fraction at the previous time step (actually between TRP and THD) 
     
    212217      fr_i  (:,:)   = at_i(:,:)             ! Sea-ice fraction             
    213218      tn_ice(:,:,:) = t_su(:,:,:)           ! Ice surface temperature                       
     219 
     220 
     221      !   daily mean qsr when diurnal cycle is applied on physics - for BGC models 
     222      IF( l_trcdm2dc ) qsr_mean(:,:) =  pfrld(:,:) * qsr_mean(:,:) +  ftr_ice_mean(:,:) 
    214223 
    215224      !------------------------------------------------! 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r5202 r5206  
    9898      IF( nn_timing == 1 )  CALL timing_start('limthd') 
    9999 
     100      IF( kt == nit000 .AND. l_trcdm2dc )  ALLOCATE( ftr_ice_mean(jpi,jpj,jpl), ftr_ice_mean_1d(jpij), qsr_ice_mean_1d(jpij) ) 
     101 
    100102      ! conservation test 
    101103      IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limthd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
     
    106108      !------------------------------------------------------------------------! 
    107109      ftr_ice(:,:,:) = 0._wp  ! part of solar radiation transmitted through the ice 
     110      IF( l_trcdm2dc ) ftr_ice_mean(:,:,:) = 0._wp   ! part of daily mean solar radiation absorbing inside the ice 
     111 
    108112 
    109113      !-------------------- 
     
    576580         CALL tab_2d_1d( nbpb, qns_ice_1d (1:nbpb), qns_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
    577581         CALL tab_2d_1d( nbpb, ftr_ice_1d (1:nbpb), ftr_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
     582         IF( l_trcdm2dc )  THEN 
     583            CALL tab_2d_1d( nbpb, qsr_ice_mean_1d (1:nbpb), qsr_ice_mean(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
     584            CALL tab_2d_1d( nbpb, ftr_ice_mean_1d (1:nbpb), ftr_ice_mean(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
     585         ENDIF 
    578586         IF( .NOT. lk_cpl ) THEN 
    579587            CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb), qla_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
     
    670678         CALL tab_1d_2d( nbpb, qns_ice(:,:,jl), npb, qns_ice_1d(1:nbpb) , jpi, jpj) 
    671679         CALL tab_1d_2d( nbpb, ftr_ice(:,:,jl), npb, ftr_ice_1d(1:nbpb) , jpi, jpj ) 
    672                    
     680         !          
     681         IF( l_trcdm2dc )  THEN 
     682            CALL tab_1d_2d( nbpb, qns_ice_mean(:,:,jl), npb, qns_ice_mean_1d(1:nbpb) , jpi, jpj) 
     683            CALL tab_1d_2d( nbpb, ftr_ice_mean(:,:,jl), npb, ftr_ice_mean_1d(1:nbpb) , jpi, jpj ) 
     684         ENDIF 
     685         ! 
    673686      END SELECT 
    674687 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r5202 r5206  
    126126      REAL(wp), POINTER, DIMENSION(:)     ::   zdifcase    ! case of the equation resolution (1->4) 
    127127      REAL(wp), POINTER, DIMENSION(:)     ::   zftrice     ! solar radiation transmitted through the ice 
     128      REAL(wp), POINTER, DIMENSION(:)     ::   zftrice_mean ! daily mean solar radiation transmitted through the ice 
    128129      REAL(wp), POINTER, DIMENSION(:)     ::   zihic 
    129130       
     
    174175      CALL wrk_alloc( jpij,nlay_i+3, zindterm, zindtbis, zdiagbis  ) 
    175176      CALL wrk_alloc( jpij,nlay_i+3,3, ztrid ) 
     177      IF( l_trcdm2dc )  CALL wrk_alloc( jpij, zftrice_mean ) 
    176178 
    177179      CALL wrk_alloc( jpij, zdq, zq_ini, zhfx_err ) 
     
    249251      END DO 
    250252 
     253      IF( l_trcdm2dc ) THEN 
     254         DO ji = kideb , kiut 
     255            zftrice_mean(ji) =  qsr_ice_mean_1d(ji) * i0(ji) ! Solar radiation transmitted below the surface layer 
     256         END DO 
     257      ENDIF 
     258 
    251259      !--------------------------------------------------------- 
    252260      ! Transmission - absorption of solar radiation in the ice 
     
    282290         ftr_ice_1d(ji) = zradtr_i(ji,nlay_i)  
    283291      END DO 
     292 
     293 
     294      IF( l_trcdm2dc ) THEN 
     295         DO ji = kideb , kiut 
     296             ftr_ice_mean_1d(ji) =  ftr_ice_mean_1d(ji) &  
     297                 &                + a_i_1d(ji) * zftrice_mean(ji) & 
     298                 &                             * EXP( - rn_kappa_i * ( MAX ( 0._wp , h_i_1d(ji) ) ) ) & 
     299                                               * EXP( - zraext_s   * ( MAX ( 0._wp , h_s_1d(ji) ) ) ) 
     300         END DO 
     301      ENDIF 
    284302 
    285303      ! 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90

    r5167 r5206  
    4141   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ftr_ice_1d    
    4242   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qsr_ice_1d   
     43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qsr_ice_mean_1d   
     44   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ftr_ice_mean_1d    
    4345   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr1_i0_1d    
    4446   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr2_i0_1d    
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90

    r5123 r5206  
    152152#endif 
    153153         ! 
    154 #if defined key_lim2 
    155       IF( ltrcdm2dc_ice )   ALLOCATE( qsr_ice_mean (jpi,jpj,jpl), STAT=ierr(3) ) 
     154#if defined key_lim3 || defined key_lim2  
     155      IF( l_trcdm2dc )   ALLOCATE( qsr_ice_mean (jpi,jpj,jpl), STAT=ierr(3) ) 
    156156#endif 
    157157         ! 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r5120 r5206  
    8181   !!              Ocean Surface Boundary Condition fields 
    8282   !!---------------------------------------------------------------------- 
     83   LOGICAL , PUBLIC ::   l_trcdm2dc               !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
     84   ! 
    8385   LOGICAL , PUBLIC ::   lhftau = .FALSE.        !: HF tau used in TKE: mean(stress module) - module(mean stress) 
    84    LOGICAL , PUBLIC ::   ltrcdm2dc               !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
    8586   !!                                   !!   now    ! before   !! 
    8687   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   utau   , utau_b   !: sea surface i-stress (ocean referential)     [N/m2] 
     
    136137      !!                  ***  FUNCTION sbc_oce_alloc  *** 
    137138      !!--------------------------------------------------------------------- 
    138       INTEGER :: ierr(5) 
     139      INTEGER :: ierr(6) 
    139140      !!--------------------------------------------------------------------- 
    140141      ierr(:) = 0 
     
    158159         &      ssv_m  (jpi,jpj) , sss_m  (jpi,jpj), ssh_m(jpi,jpj) , STAT=ierr(4) ) 
    159160         ! 
     161         IF( l_trcdm2dc )   ALLOCATE( qsr_mean(jpi,jpj) , STAT=ierr(5) ) 
     162         ! 
    160163#if defined key_vvl 
    161       ALLOCATE( e3t_m(jpi,jpj) , STAT=ierr(5) ) 
    162 #endif 
    163          ! 
    164       IF( ltrcdm2dc ) ALLOCATE( qsr_mean(jpi,jpj) , STAT=ierr(5) ) 
     164      ALLOCATE( e3t_m(jpi,jpj) , STAT=ierr(6) ) 
     165#endif 
    165166         ! 
    166167      sbc_oce_alloc = MAXVAL( ierr ) 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r5065 r5206  
    196196      IF( MOD( kt - 1, nn_fsbc ) == 0 )   CALL blk_oce_core( kt, sf, sst_m, ssu_m, ssv_m ) 
    197197 
    198       ! If diurnal cycle is activated, compute a daily mean short waves flux for biogeochemistery 
    199       IF( ltrcdm2dc )   CALL blk_bio_meanqsr 
     198      IF( l_trcdm2dc )   CALL blk_bio_meanqsr  ! diurnal cycle : daily mean short waves flux for biogeochemistery 
    200199 
    201200#if defined key_cice 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r5167 r5206  
    172172            IF( nn_limflx /= 2 )   CALL ice_lim_flx( t_su, zalb_ice, qns_ice, qsr_ice ,   & 
    173173               &                                           dqns_ice, qla_ice, dqla_ice, nn_limflx ) 
     174 
     175            IF( l_trcdm2dc )       CALL blk_ice_meanqsr( zalb_ice, qsr_ice_mean, jpl ) 
    174176            ! 
    175177         CASE ( jp_cpl ) 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r4990 r5206  
    194194               &                      tprecip    , sprecip    ,                         & 
    195195               &                      fr1_i0     , fr2_i0     , cp_ice_msh , jpl  ) 
     196 
    196197            IF( ltrcdm2dc_ice )   CALL blk_ice_meanqsr( zalb_ice, qsr_ice_mean, jpl ) 
    197198 
     
    237238                           CALL lim_thd_2      ( kt )      ! Ice thermodynamics  
    238239                           CALL lim_sbc_flx_2  ( kt )      ! update surface ocean mass, heat & salt fluxes  
    239 #if defined key_top 
    240         IF( ltrcdm2dc_ice )CALL lim_bio_meanqsr_2 
    241 #endif 
    242240 
    243241         IF(  .NOT. lk_mpp )THEN 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r5123 r5206  
    2424   USE phycst           ! physical constants 
    2525   USE sbc_oce          ! Surface boundary condition: ocean fields 
     26   USE trc_oce          ! shared ocean-passive tracers variables 
    2627   USE sbc_ice          ! Surface boundary condition: ice fields 
    2728   USE sbcdcy           ! surface boundary condition: diurnal cycle 
     
    151152      END SELECT 
    152153      ! 
    153 #if defined key_top && ! defined key_offline 
    154       ltrcdm2dc = (ln_dm2dc .AND. ln_blk_core .AND. nn_ice==2) 
    155       IF( ltrcdm2dc )THEN 
    156          IF(lwp)THEN 
    157             WRITE(numout,*)"analytical diurnal cycle, core bulk formulation and LIM2 use: " 
    158             WRITE(numout,*)"Diurnal cycle on physics but not in passive tracers" 
     154      IF( ln_dm2dc .AND. lk_top  )  THEN    
     155         l_trcdm2dc = .TRUE. 
     156         IF( lwp ) THEN 
     157            WRITE(numout,*) "In case of diurnal cycle coupled with passive tracers" 
     158            WRITE(numout,*) "Computation of a daily mean shortwave for some biogeochemical models" 
    159159         ENDIF 
    160       ENDIF 
    161 #else  
    162       ltrcdm2dc =  .FALSE. 
    163 #endif 
    164  
    165       ! 
     160      ELSE              
     161         l_trcdm2dc = .FALSE. 
     162      ENDIF 
     163 
    166164      !                              ! allocate sbc arrays 
    167165      IF( sbc_oce_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'sbc_init : unable to allocate sbc_oce arrays' ) 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90

    r4623 r5206  
    3232   !!   'key_top'                                                 bio-model           
    3333   !!---------------------------------------------------------------------- 
     34   LOGICAL, PUBLIC, PARAMETER ::   lk_top     = .TRUE.   !: TOP model 
    3435   LOGICAL, PUBLIC, PARAMETER ::   lk_qsr_bio = .TRUE.   !: bio-model light absorption flag 
    3536#else 
     
    3738   !! Default option                          No bio-model light absorption       
    3839   !!---------------------------------------------------------------------- 
     40   LOGICAL, PUBLIC, PARAMETER ::   lk_top     = .FALSE.   !: TOP model 
    3941   LOGICAL, PUBLIC, PARAMETER ::   lk_qsr_bio = .FALSE.   !: bio-model light absorption flag 
    4042#endif 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zopt.F90

    r4990 r5206  
    8989 
    9090      !                                          ! surface irradiance 
    91       zpar0m (:,:)   = qsr   (:,:) * 0.43        ! ------------------ 
     91      !                                          ! ------------------ 
     92      IF( ln_dm2dc ) THEN   ;   zpar0m(:,:) = qsr_mean(:,:) * 0.43 
     93      ELSE                  ;   zpar0m(:,:) = qsr     (:,:) * 0.43 
     94      ENDIF 
    9295      zpar100(:,:)   = zpar0m(:,:) * 0.01 
    9396      zparr  (:,:,1) = zpar0m(:,:) * 0.5 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90

    r4996 r5206  
    172172               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) ) 
    173173               ztem2  = tsn(ji,jj,jk,jp_tem) - 10. 
    174                zetot1 = MAX( 0., etot(ji,jj,jk) - 1.) / ( 4. + etot(ji,jj,jk) )  
    175                zetot2 = 30. / ( 30. + etot(ji,jj,jk) )  
     174               zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) )  
     175               zetot2 = 30. / ( 30. + etot_ndcy(ji,jj,jk) )  
    176176 
    177177               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )                  & 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r4996 r5206  
    3535   REAL(wp) :: parlux      !: Fraction of shortwave as PAR 
    3636   REAL(wp) :: xparsw                 !: parlux/3 
     37   REAL(wp) :: xsi0r                 !:  1. /rn_si0 
    3738 
    3839   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_par      ! structure of input par 
     
    4243 
    4344   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat   !: PAR for phyto, nano and diat  
     45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot_ndcy      !: PAR over 24h in case of diurnal cycle 
    4446   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy           !: averaged PAR in the mixed layer 
    4547 
     
    7173      INTEGER  ::   ji, jj, jk 
    7274      INTEGER  ::   irgb 
    73       REAL(wp) ::   zchl, zxsi0r 
     75      REAL(wp) ::   zchl 
    7476      REAL(wp) ::   zc0 , zc1 , zc2, zc3, z1_dep 
    75       REAL(wp), POINTER, DIMENSION(:,:  ) :: zdepmoy, zetmp, zetmp1, zetmp2 
    76       REAL(wp), POINTER, DIMENSION(:,:,:) :: zekg, zekr, zekb, ze0, ze1, ze2, ze3 
     77      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4, zqsr100 
     78      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpar, zekg, zekr, zekb, ze0, ze1, ze2, ze3 
    7779      !!--------------------------------------------------------------------- 
    7880      ! 
     
    8082      ! 
    8183      ! Allocate temporary workspace 
    82       CALL wrk_alloc( jpi, jpj,      zdepmoy, zetmp, zetmp1, zetmp2 )  
    83       CALL wrk_alloc( jpi, jpj, jpk, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 
    84  
    85       IF( jnt == 1 .AND. ln_varpar ) CALL p4z_optsbc( kt ) 
     84      CALL wrk_alloc( jpi, jpj,      zqsr100, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 
     85      CALL wrk_alloc( jpi, jpj, jpk, zpar, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 
     86 
     87      IF( jnt == 1 .AND. ln_varpar ) CALL p4z_opt_sbc( kt ) 
    8688 
    8789      !     Initialisation of variables used to compute PAR 
    8890      !     ----------------------------------------------- 
    89       ze1(:,:,jpk) = 0._wp 
    90       ze2(:,:,jpk) = 0._wp 
    91       ze3(:,:,jpk) = 0._wp 
    92  
     91      ze1(:,:,:) = 0._wp 
     92      ze2(:,:,:) = 0._wp 
     93      ze3(:,:,:) = 0._wp 
    9394      !                                        !* attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 
    9495      DO jk = 1, jpkm1                         !  -------------------------------------------------------- 
     
    107108         END DO 
    108109      END DO 
    109  
    110  
    111110      !                                        !* Photosynthetically Available Radiation (PAR) 
    112111      !                                        !  -------------------------------------- 
    113  
    114       IF( ln_varpar ) THEN 
    115          ze1(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
    116          ze2(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
    117          ze3(:,:,1) = par_varsw(:,:) * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
     112      IF( ln_dm2dc ) THEN                     !  diurnal cycle 
     113         ! 1% of qsr to compute euphotic layer 
     114         zqsr100(:,:) = 0.01 * qsr_mean(:,:)     !  daily mean qsr 
     115         ! 
     116         CALL p4z_opt_par( kt, qsr_mean, zekb, zekg, zekr, ze1, ze2, ze3 )  
     117         ! 
     118         DO jk = 1, nksrp       
     119            etot_ndcy(:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
     120            enano    (:,:,jk) =  2.1 * ze1(:,:,jk) + 0.42 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 
     121            ediat    (:,:,jk) =  1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 
     122         END DO 
     123         ! 
     124         CALL p4z_opt_par( kt, qsr, zekb, zekg, zekr, ze1, ze2, ze3 )  
     125         ! 
     126         DO jk = 1, nksrp       
     127            etot(:,:,jk) =  ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 
     128         END DO 
     129         ! 
    118130      ELSE 
    119          ze1(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekb(:,:,1) ) 
    120          ze2(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekg(:,:,1) ) 
    121          ze3(:,:,1) = xparsw         * qsr(:,:) * EXP( -0.5 * zekr(:,:,1) ) 
    122       ENDIF 
    123  
    124 !CDIR NOVERRCHK 
    125       DO jj = 1, jpj 
    126 !CDIR NOVERRCHK 
    127          DO ji = 1, jpi 
    128             zc1 = ze1(ji,jj,1) 
    129             zc2 = ze2(ji,jj,1)  
    130             zc3 = ze3(ji,jj,1) 
    131             etot (ji,jj,1) = (       zc1 +        zc2 +       zc3 ) 
    132             enano(ji,jj,1) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 
    133             ediat(ji,jj,1) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 
    134          END DO 
    135       END DO 
    136  
    137      
    138       DO jk = 2, nksrp       
    139 !CDIR NOVERRCHK 
    140          DO jj = 1, jpj 
    141 !CDIR NOVERRCHK 
    142             DO ji = 1, jpi 
    143                zc1 = ze1(ji,jj,jk-1) * EXP( -0.5 * ( zekb(ji,jj,jk-1) + zekb(ji,jj,jk) ) ) 
    144                zc2 = ze2(ji,jj,jk-1) * EXP( -0.5 * ( zekg(ji,jj,jk-1) + zekg(ji,jj,jk) ) ) 
    145                zc3 = ze3(ji,jj,jk-1) * EXP( -0.5 * ( zekr(ji,jj,jk-1) + zekr(ji,jj,jk) ) ) 
    146                ze1  (ji,jj,jk) = zc1 
    147                ze2  (ji,jj,jk) = zc2 
    148                ze3  (ji,jj,jk) = zc3 
    149                etot (ji,jj,jk) = (       zc1 +        zc2 +       zc3 ) 
    150                enano(ji,jj,jk) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 
    151                ediat(ji,jj,jk) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 
    152             END DO 
    153          END DO 
    154       END DO 
     131         ! 1% of qsr to compute euphotic layer 
     132         zqsr100(:,:) = 0.01 * qsr(:,:) 
     133         ! 
     134         CALL p4z_opt_par( kt, qsr, zekb, zekg, zekr, ze1, ze2, ze3 )  
     135         ! 
     136         DO jk = 1, nksrp       
     137            etot (:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
     138            enano(:,:,jk) =  2.1 * ze1(:,:,jk) + 0.42 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 
     139            ediat(:,:,jk) =  1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 
     140         END DO 
     141         etot_ndcy(:,:,:) =  etot(:,:,:)  
     142      ENDIF 
     143 
    155144 
    156145      IF( ln_qsr_bio ) THEN                    !* heat flux accros w-level (used in the dynamics) 
    157146         !                                     !  ------------------------ 
    158          zxsi0r = 1.e0 / rn_si0 
    159          ! 
    160          ze0(:,:,1) = rn_abs * qsr(:,:) 
    161          !                                                    ! surface value : separation in R-G-B + near surface 
    162          IF( ln_varpar ) THEN 
    163             ze0(:,:,1) = ( 1. - 3. * par_varsw(:,:) ) * qsr(:,:) 
    164             ze1(:,:,1) = par_varsw(:,:)               * qsr(:,:)          
    165             ze2(:,:,1) = par_varsw(:,:)               * qsr(:,:) 
    166             ze3(:,:,1) = par_varsw(:,:)               * qsr(:,:) 
    167          ELSE 
    168             ze0(:,:,1) = ( 1. - 3. * xparsw )  * qsr(:,:) 
    169             ze1(:,:,1) = xparsw                * qsr(:,:)          
    170             ze2(:,:,1) = xparsw                * qsr(:,:) 
    171             ze3(:,:,1) = xparsw                * qsr(:,:) 
    172          ENDIF 
     147         CALL p4z_opt_par( kt, qsr, zekb, zekg, zekr, ze1, ze2, ze3, pe0=ze0 ) 
     148         ! 
    173149         etot3(:,:,1) =  qsr(:,:) * tmask(:,:,1) 
    174          ! 
    175          ! 
    176150         DO jk = 2, nksrp + 1 
    177 !CDIR NOVERRCHK 
    178             DO jj = 1, jpj 
    179 !CDIR NOVERRCHK 
    180                DO ji = 1, jpi 
    181                   zc0 = ze0(ji,jj,jk-1) * EXP( -fse3t(ji,jj,jk-1) * zxsi0r ) 
    182                   zc1 = ze1(ji,jj,jk-1) * EXP( -zekb(ji,jj,jk-1 ) ) 
    183                   zc2 = ze2(ji,jj,jk-1) * EXP( -zekg(ji,jj,jk-1 ) ) 
    184                   zc3 = ze3(ji,jj,jk-1) * EXP( -zekr(ji,jj,jk-1 ) ) 
    185                   ze0(ji,jj,jk) = zc0 
    186                   ze1(ji,jj,jk) = zc1 
    187                   ze2(ji,jj,jk) = zc2 
    188                   ze3(ji,jj,jk) = zc3 
    189                   etot3(ji,jj,jk) = ( zc0 + zc1 + zc2 + zc3 ) * tmask(ji,jj,jk) 
    190               END DO 
    191               ! 
    192             END DO 
    193             ! 
    194         END DO 
    195         ! 
    196       ENDIF 
    197  
     151            etot3(:,:,jk) =  ( ze0(:,:,jk) + ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) ) * tmask(:,:,jk) 
     152         END DO 
     153         !                                     !  ------------------------ 
     154      ENDIF 
    198155      !                                        !* Euphotic depth and level 
    199156      neln(:,:) = 1                            !  ------------------------ 
     
    203160         DO jj = 1, jpj 
    204161           DO ji = 1, jpi 
    205               IF( etot(ji,jj,jk) * tmask(ji,jj,jk) >= 0.0043 * qsr(ji,jj) )  THEN 
     162              IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.43 * zqsr100(ji,jj) )  THEN 
    206163                 neln(ji,jj) = jk+1                    ! Euphotic level : 1rst T-level strictly below Euphotic layer 
    207                  !                                     ! nb: ensure the compatibility with nmld_trc definition in trd_mxl_trc_zint 
     164                 !                                     ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint 
    208165                 heup(ji,jj) = fsdepw(ji,jj,jk+1)      ! Euphotic layer depth 
    209166              ENDIF 
     
    211168        END DO 
    212169      END DO 
    213   
     170      ! 
    214171      heup(:,:) = MIN( 300., heup(:,:) ) 
    215  
    216172      !                                        !* mean light over the mixed layer 
    217173      zdepmoy(:,:)   = 0.e0                    !  ------------------------------- 
    218       zetmp  (:,:)   = 0.e0 
    219174      zetmp1 (:,:)   = 0.e0 
    220175      zetmp2 (:,:)   = 0.e0 
     176      zetmp3 (:,:)   = 0.e0 
     177      zetmp4 (:,:)   = 0.e0 
    221178 
    222179      DO jk = 1, nksrp 
     
    226183            DO ji = 1, jpi 
    227184               IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
    228                   zetmp  (ji,jj) = zetmp  (ji,jj) + etot (ji,jj,jk) * fse3t(ji,jj,jk) 
    229                   zetmp1 (ji,jj) = zetmp1 (ji,jj) + enano(ji,jj,jk) * fse3t(ji,jj,jk) 
    230                   zetmp2 (ji,jj) = zetmp2 (ji,jj) + ediat(ji,jj,jk) * fse3t(ji,jj,jk) 
     185                  zetmp1 (ji,jj) = zetmp1 (ji,jj) + etot     (ji,jj,jk) * fse3t(ji,jj,jk) ! remineralisation 
     186                  zetmp2 (ji,jj) = zetmp2 (ji,jj) + etot_ndcy(ji,jj,jk) * fse3t(ji,jj,jk) ! production 
     187                  zetmp3 (ji,jj) = zetmp3 (ji,jj) + enano    (ji,jj,jk) * fse3t(ji,jj,jk) ! production 
     188                  zetmp4 (ji,jj) = zetmp4 (ji,jj) + ediat    (ji,jj,jk) * fse3t(ji,jj,jk) ! production 
    231189                  zdepmoy(ji,jj) = zdepmoy(ji,jj) + fse3t(ji,jj,jk) 
    232190               ENDIF 
     
    235193      END DO 
    236194      ! 
    237       emoy(:,:,:) = etot(:,:,:) 
     195      emoy(:,:,:) = etot(:,:,:)       ! remineralisation 
     196      zpar(:,:,:) = etot_ndcy(:,:,:)  ! diagnostic : PAR with no diurnal cycle  
    238197      ! 
    239198      DO jk = 1, nksrp 
     
    244203               IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
    245204                  z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 
    246                   emoy (ji,jj,jk) = zetmp (ji,jj) * z1_dep 
    247                   enano(ji,jj,jk) = zetmp1(ji,jj) * z1_dep 
    248                   ediat(ji,jj,jk) = zetmp2(ji,jj) * z1_dep 
     205                  emoy (ji,jj,jk) = zetmp1(ji,jj) * z1_dep 
     206                  zpar (ji,jj,jk) = zetmp2(ji,jj) * z1_dep 
     207                  enano(ji,jj,jk) = zetmp3(ji,jj) * z1_dep 
     208                  ediat(ji,jj,jk) = zetmp4(ji,jj) * z1_dep 
    249209               ENDIF 
    250210            END DO 
    251211         END DO 
    252212      END DO 
    253  
     213      ! 
    254214      IF( lk_iomput ) THEN 
    255215        IF( jnt == nrdttrc  ) THEN 
     
    259219      ELSE 
    260220         IF( ln_diatrc ) THEN        ! save output diagnostics 
    261             trc2d(:,:,  jp_pcs0_2d + 10) = heup(:,:  ) * tmask(:,:,1)   
     221            trc2d(:,:,  jp_pcs0_2d + 10) = heup(:,:  ) * tmask(:,:,1) 
    262222            trc3d(:,:,:,jp_pcs0_3d + 3)  = etot(:,:,:) * tmask(:,:,:) 
    263223         ENDIF 
    264224      ENDIF 
    265225      ! 
    266       CALL wrk_dealloc( jpi, jpj,      zdepmoy, zetmp, zetmp1, zetmp2 ) 
    267       CALL wrk_dealloc( jpi, jpj, jpk, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 
     226      CALL wrk_dealloc( jpi, jpj,      zqsr100, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 
     227      CALL wrk_dealloc( jpi, jpj, jpk, zpar, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 
    268228      ! 
    269229      IF( nn_timing == 1 )  CALL timing_stop('p4z_opt') 
     
    271231   END SUBROUTINE p4z_opt 
    272232 
    273    SUBROUTINE p4z_optsbc( kt ) 
    274       !!---------------------------------------------------------------------- 
    275       !!                  ***  routine p4z_optsbc  *** 
     233   SUBROUTINE p4z_opt_par( kt, pqsr, pekb, pekg, pekr, pe1, pe2, pe3, pe0 )  
     234      !!---------------------------------------------------------------------- 
     235      !!                  ***  routine p4z_opt_par  *** 
     236      !! 
     237      !! ** purpose :   compute PAR of each wavelength (Red-Green-Blue) 
     238      !!                for a given shortwave radiation 
     239      !! 
     240      !!---------------------------------------------------------------------- 
     241      !! * arguments 
     242      INTEGER, INTENT(in)                                       ::  kt            !   ocean time-step 
     243      REAL(wp), DIMENSION(jpi,jpj)    , INTENT(in)              ::  pqsr          !   shortwave 
     244      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in)              ::  pekb, pekg, pekr   ! wavelength (Red-Green-Blue) 
     245      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout)           ::  pe1 , pe2 , pe3   !  PAR ( R-G-B) 
     246      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout), OPTIONAL ::  pe0   
     247      !! * local variables 
     248      INTEGER    ::   ji, jj, jk     ! dummy loop indices 
     249      REAL(wp), DIMENSION(jpi,jpj)     ::  zqsr          !   shortwave 
     250      !!---------------------------------------------------------------------- 
     251 
     252      !  Real shortwave 
     253      IF( ln_varpar ) THEN  ;  zqsr(:,:) = par_varsw(:,:) * pqsr(:,:) 
     254      ELSE                  ;  zqsr(:,:) = xparsw         * pqsr(:,:) 
     255      ENDIF 
     256      ! 
     257      IF( PRESENT( pe0 ) ) THEN     !  W-level 
     258         ! 
     259         pe0(:,:,1) = pqsr(:,:) - 3. * zqsr(:,:)    !   ( 1 - 3 * alpha ) * q 
     260         pe1(:,:,1) = zqsr(:,:)          
     261         pe2(:,:,1) = zqsr(:,:) 
     262         pe3(:,:,1) = zqsr(:,:) 
     263         ! 
     264         DO jk = 2, nksrp + 1 
     265!CDIR NOVERRCHK 
     266            DO jj = 1, jpj 
     267!CDIR NOVERRCHK 
     268               DO ji = 1, jpi 
     269                  pe0(ji,jj,jk) = pe0(ji,jj,jk-1) * EXP( -fse3t(ji,jj,jk-1) * xsi0r ) 
     270                  pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -pekb(ji,jj,jk-1 ) ) 
     271                  pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -pekg(ji,jj,jk-1 ) ) 
     272                  pe3(ji,jj,jk) = pe3(ji,jj,jk-1) * EXP( -pekr(ji,jj,jk-1 ) ) 
     273               END DO 
     274              ! 
     275            END DO 
     276            ! 
     277         END DO 
     278        ! 
     279      ELSE   ! T- level 
     280        ! 
     281        pe1(:,:,1) = zqsr(:,:) * EXP( -0.5 * pekb(:,:,1) ) 
     282        pe2(:,:,1) = zqsr(:,:) * EXP( -0.5 * pekg(:,:,1) ) 
     283        pe3(:,:,1) = zqsr(:,:) * EXP( -0.5 * pekr(:,:,1) ) 
     284        ! 
     285        DO jk = 2, nksrp       
     286!CDIR NOVERRCHK 
     287           DO jj = 1, jpj 
     288!CDIR NOVERRCHK 
     289              DO ji = 1, jpi 
     290                 pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -0.5 * ( pekb(ji,jj,jk-1) + pekb(ji,jj,jk) ) ) 
     291                 pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -0.5 * ( pekg(ji,jj,jk-1) + pekg(ji,jj,jk) ) ) 
     292                 pe3(ji,jj,jk) = pe3(ji,jj,jk-1) * EXP( -0.5 * ( pekr(ji,jj,jk-1) + pekr(ji,jj,jk) ) ) 
     293              END DO 
     294           END DO 
     295        END DO     
     296        ! 
     297      ENDIF 
     298      !  
     299   END SUBROUTINE p4z_opt_par 
     300 
     301 
     302   SUBROUTINE p4z_opt_sbc( kt ) 
     303      !!---------------------------------------------------------------------- 
     304      !!                  ***  routine p4z_opt_sbc  *** 
    276305      !! 
    277306      !! ** purpose :   read and interpolate the variable PAR fraction 
     
    284313      !!---------------------------------------------------------------------- 
    285314      !! * arguments 
    286       INTEGER, INTENT( in  ) ::   kt   ! ocean time step 
     315      INTEGER ,                INTENT(in) ::   kt     ! ocean time step 
    287316 
    288317      !! * local declarations 
     
    297326         IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_par > 1 ) ) THEN 
    298327            CALL fld_read( kt, 1, sf_par ) 
    299             par_varsw(:,:) = ( sf_par(1)%fnow(:,:,1) )/3.0 
     328            par_varsw(:,:) = ( sf_par(1)%fnow(:,:,1) ) / 3.0 
    300329         ENDIF 
    301330      ENDIF 
     
    303332      IF( nn_timing == 1 )  CALL timing_stop('p4z_optsbc') 
    304333      ! 
    305    END SUBROUTINE p4z_optsbc 
     334   END SUBROUTINE p4z_opt_sbc 
    306335 
    307336   SUBROUTINE p4z_opt_init 
     
    347376      ! 
    348377      xparsw = parlux / 3.0 
     378      xsi0r  = 1.e0 / rn_si0 
    349379      ! 
    350380      ! Variable PAR at the surface of the ocean 
     
    372402      IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 
    373403      ! 
    374                          etot (:,:,:) = 0._wp 
    375                          enano(:,:,:) = 0._wp 
    376                          ediat(:,:,:) = 0._wp 
    377       IF( ln_qsr_bio )   etot3(:,:,:) = 0._wp 
     404                         etot     (:,:,:) = 0._wp 
     405                         etot_ndcy(:,:,:) = 0._wp 
     406                         enano    (:,:,:) = 0._wp 
     407                         ediat    (:,:,:) = 0._wp 
     408      IF( ln_qsr_bio )   etot3    (:,:,:) = 0._wp 
    378409      !  
    379410      IF( nn_timing == 1 )  CALL timing_stop('p4z_opt_init') 
     
    386417      !!                     ***  ROUTINE p4z_opt_alloc  *** 
    387418      !!---------------------------------------------------------------------- 
    388       ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc )  
     419      ALLOCATE( enano    (jpi,jpj,jpk), ediat(jpi,jpj,jpk), & 
     420        &       etot_ndcy(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc )  
    389421         ! 
    390422      IF( p4z_opt_alloc /= 0 ) CALL ctl_warn('p4z_opt_alloc : failed to allocate arrays.') 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r4996 r5206  
    134134            DO jj = 1 ,jpj 
    135135               DO ji = 1, jpi 
    136                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     136                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    137137                     zval = MAX( 1., zstrn(ji,jj) ) 
    138138                     zval = 1.5 * zval / ( 12. + zval ) 
     
    157157               DO ji = 1, jpi 
    158158                  ! Computation of the P-I slope for nanos and diatoms 
    159                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     159                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    160160                      ztn         = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
    161161                      zadap       = xadap * ztn / ( 2.+ ztn ) 
     
    196196 
    197197                  ! Computation of the P-I slope for nanos and diatoms 
    198                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     198                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    199199                      ztn         = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
    200200                      zadap       = ztn / ( 2.+ ztn ) 
     
    252252            DO ji = 1, jpi 
    253253 
    254                 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     254                IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    255255                   !    Si/C of diatoms 
    256256                   !    ------------------------ 
     
    302302!CDIR NOVERRCHK 
    303303            DO ji = 1, jpi 
    304                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     304               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    305305                  !  production terms for nanophyto. 
    306306                  zprorca(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trn(ji,jj,jk,jpphy) * rfact2 
     
    341341                     zprdch(ji,jj,jk) = zprdch(ji,jj,jk) * zmixdiat(ji,jj) 
    342342                  ENDIF 
    343                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     343                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    344344                     !  production terms for nanophyto. ( chlorophyll ) 
    345345                     znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 
     
    365365!CDIR NOVERRCHK 
    366366               DO ji = 1, jpi 
    367                   IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     367                  IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    368368                     !  production terms for nanophyto. ( chlorophyll ) 
    369369                     znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90

    r4996 r5206  
    136136            DO jj = 1, jpj 
    137137               DO ji = 1, jpi 
    138                   zcoef = ryyss * cvol(ji,jj,1)  
     138                  zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj)  
    139139                  rivalk(ji,jj) =   sf_river(jr_dic)%fnow(ji,jj,1)                                    & 
    140140                     &              * 1.E3        / ( 12. * zcoef + rtrn ) 
     
    187187      INTEGER  :: ierr, ierr1, ierr2, ierr3 
    188188      INTEGER  :: ios                 ! Local integer output status for namelist read 
     189      INTEGER  :: ik50               !  last level where depth less than 50 m 
    189190      REAL(wp) :: zexpide, zdenitide, zmaskt 
    190191      REAL(wp) :: ztimes_dust, ztimes_riv, ztimes_ndep  
     
    247248      ENDIF 
    248249 
     250      ! set the number of level over which river runoffs are applied  
     251      ! online configuration : computed in sbcrnf 
     252      IF( lk_offline ) THEN 
     253        nk_rnf(:,:) = 1 
     254        h_rnf (:,:) = fsdept(:,:,1) 
     255      ENDIF 
     256 
    249257      ! dust input from the atmosphere 
    250258      ! ------------------------------ 
     
    410418         CALL iom_close( numiron ) 
    411419         ! 
    412          DO jk = 1, 5 
     420         ik50 = 5        !  last level where depth less than 50 m 
     421         DO jk = jpkm1, 1, -1 
     422            IF( gdept_1d(jk) > 50. )  ik50 = jk - 1 
     423         END DO 
     424         IF (lwp) WRITE(numout,*) 
     425         IF (lwp) WRITE(numout,*) ' Level corresponding to 50m depth ',  ik50,' ', gdept_1d(ik50+1) 
     426         IF (lwp) WRITE(numout,*) 
     427         DO jk = 1, ik50 
    413428            DO jj = 2, jpjm1 
    414429               DO ji = fs_2, fs_jpim1 
     
    421436            END DO 
    422437         END DO 
    423          IF( cp_cfg == 'orca' .AND. jp_cfg == 2 ) THEN 
    424             ii0 = 176   ;   ii1 =  176        ! Southern Island : Kerguelen 
    425             ij0 =  37   ;   ij1 =   37  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     438         IF( cp_cfg == 'orca' ) THEN 
     439            IF( jp_cfg == 2 ) THEN 
     440               ii0 = 176   ;   ii1 =  176        ! Southern Island : Kerguelen 
     441               ij0 =  37   ;   ij1 =   37  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     442               ! 
     443               ii0 = 119   ;   ii1 =  119        ! South Georgia 
     444               ij0 =  29   ;   ij1 =   29  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     445               ! 
     446               ii0 = 111   ;   ii1 =  111        ! Falklands 
     447               ij0 =  35   ;   ij1 =   35  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     448               ! 
     449               ii0 = 168   ;   ii1 =  168        ! Crozet 
     450               ij0 =  40   ;   ij1 =   40  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     451               ! 
     452               ii0 = 119   ;   ii1 =  119        ! South Orkney 
     453               ij0 =  28   ;   ij1 =   28  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     454               ! 
     455               ii0 = 140   ;   ii1 =  140        ! Bouvet Island 
     456               ij0 =  33   ;   ij1 =   33  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     457               ! 
     458               ii0 = 178   ;   ii1 =  178        ! Prince edwards 
     459               ij0 =  34   ;   ij1 =   34  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     460               ! 
     461               ii0 =  43   ;   ii1 =   43        ! Balleny islands 
     462               ij0 =  21   ;   ij1 =   21  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
     463               ! 
     464            ELSE IF( jp_cfg == 1 ) THEN 
     465               ! 
     466               ii0 = 357   ;   ii1 =  357        ! Southern Island : Kerguelen 
     467               ij0 =  75   ;   ij1 =   76  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     468               ! 
     469               ii0 = 243   ;   ii1 =  243        ! South Georgia 
     470               ij0 =  57   ;   ij1 =   59  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     471               ! 
     472               ii0 = 227   ;   ii1 =  227        ! Falklands 
     473               ij0 =  71   ;   ij1 =   73  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     474               ! 
     475               ii0 = 326   ;   ii1 =  327        ! Crozet 
     476               ij0 =  79   ;   ij1 =   79  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     477               ! 
     478               ii0 = 243   ;   ii1 =  243        ! South Orkney 
     479               ij0 =  56   ;   ij1 =   56  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     480               ! 
     481               ii0 = 283   ;   ii1 =  286        ! Bouvet Island 
     482               ij0 =  66   ;   ij1 =   66  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     483               ! 
     484               ii0 = 361   ;   ii1 =  361        ! Prince edwards 
     485               ij0 =  67   ;   ij1 =   68  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     486               ! 
     487               ii0 =  91   ;   ii1 =   92        ! Balleny islands 
     488               ij0 =  42   ;   ij1 =   43  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp 
     489               ! 
     490            ELSE IF( jp_cfg == 05 ) THEN 
     491               ! 
     492               CALL ctl_warn( ' Coastal supply of iron modifications for southern Islands in ORCA_R05' ) 
     493               ! 
     494            ELSE IF( jp_cfg == 025 ) THEN 
     495               ! 
     496               CALL ctl_warn( ' Coastal supply of iron modifications for southern Islands in ORCA_R025' ) 
     497               ! 
     498            ENDIF 
    426499            ! 
    427             ii0 = 119   ;   ii1 =  119        ! South Georgia 
    428             ij0 =  29   ;   ij1 =   29  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    429             ! 
    430             ii0 = 111   ;   ii1 =  111        ! Falklands 
    431             ij0 =  35   ;   ij1 =   35  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    432             ! 
    433             ii0 = 168   ;   ii1 =  168        ! Crozet 
    434             ij0 =  40   ;   ij1 =   40  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    435             ! 
    436             ii0 = 119   ;   ii1 =  119        ! South Orkney 
    437             ij0 =  28   ;   ij1 =   28  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    438             ! 
    439             ii0 = 140   ;   ii1 =  140        ! Bouvet Island 
    440             ij0 =  33   ;   ij1 =   33  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    441             ! 
    442             ii0 = 178   ;   ii1 =  178        ! Prince edwards 
    443             ij0 =  34   ;   ij1 =   34  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    444             ! 
    445             ii0 =  43   ;   ii1 =   43        ! Balleny islands 
    446             ij0 =  21   ;   ij1 =   21  ;   zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) =  0.3_wp   
    447500         ENDIF 
    448501         CALL lbc_lnk( zcmask , 'T', 1. )      ! lateral boundary conditions on cmask   (sign unchanged) 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r4996 r5206  
    167167      ! ---------------------------------------------------------- 
    168168      IF( ln_river ) THEN 
    169          trn(:,:,1,jppo4) = trn(:,:,1,jppo4) + rivdip(:,:) * rfact2 
    170          trn(:,:,1,jpno3) = trn(:,:,1,jpno3) + rivdin(:,:) * rfact2 
    171          trn(:,:,1,jpfer) = trn(:,:,1,jpfer) + rivdic(:,:) * 5.e-5 * rfact2 
    172          trn(:,:,1,jpsil) = trn(:,:,1,jpsil) + rivdsi(:,:) * rfact2 
    173          trn(:,:,1,jpdic) = trn(:,:,1,jpdic) + rivdic(:,:) * rfact2 
    174          trn(:,:,1,jptal) = trn(:,:,1,jptal) + ( rivalk(:,:) - rno3 * rivdin(:,:) ) * rfact2 
     169         DO jj = 1, jpj 
     170            DO ji = 1, jpi 
     171               DO jk = 1, nk_rnf(ji,jj) 
     172                  trn(ji,jj,jk,jppo4) = trn(ji,jj,jk,jppo4) +  rivdip(ji,jj) * rfact2 
     173                  trn(ji,jj,jk,jpno3) = trn(ji,jj,jk,jpno3) +  rivdin(ji,jj) * rfact2 
     174                  trn(ji,jj,jk,jpfer) = trn(ji,jj,jk,jpfer) +  rivdic(ji,jj) * 5.e-5 * rfact2 
     175                  trn(ji,jj,jk,jpsil) = trn(ji,jj,jk,jpsil) +  rivdsi(ji,jj) * rfact2 
     176                  trn(ji,jj,jk,jpdic) = trn(ji,jj,jk,jpdic) +  rivdic(ji,jj) * rfact2 
     177                  trn(ji,jj,jk,jptal) = trn(ji,jj,jk,jptal) +  ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2 
     178               ENDDO 
     179            ENDDO 
     180         ENDDO 
    175181      ENDIF 
    176182       
     
    357363               ztrfer = biron(ji,jj,jk)       / ( concfediaz + biron(ji,jj,jk)       ) 
    358364               ztrpo4 = trn  (ji,jj,jk,jppo4) / ( concnnh4   + trn  (ji,jj,jk,jppo4) )  
    359                zlight =  ( 1.- EXP( -etot(ji,jj,jk) / diazolight ) )  
     365               zlight =  ( 1.- EXP( -etot_ndcy(ji,jj,jk) / diazolight ) )  
    360366               znitrpot(ji,jj,jk) =  MAX( 0.e0, ( 0.6 * tgfunc(ji,jj,jk) - 2.15 ) * r1_rday )   & 
    361367                 &         *  zfact * MIN( ztrfer, ztrpo4 ) * zlight 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90

    r4990 r5206  
    8383   USE sbc_oce , ONLY :   wndm       =>    wndm       !: 10m wind speed  
    8484   USE sbc_oce , ONLY :   qsr        =>    qsr        !: penetrative solar radiation (w m-2) 
     85   USE sbc_oce , ONLY :   qsr_mean   =>    qsr_mean   !: daily mean solar heat flux 
    8586   USE sbc_oce , ONLY :   emp        =>    emp        !: freshwater budget: volume flux               [Kg/m2/s] 
    8687   USE sbc_oce , ONLY :   emp_b      =>    emp_b      !: freshwater budget: volume flux               [Kg/m2/s] 
     
    9697   USE sbcrnf  , ONLY :   rnfmsk_z   =>    rnfmsk_z   !: mixed adv scheme in runoffs vicinity (vert.) 
    9798   USE sbcrnf  , ONLY :   h_rnf      =>    h_rnf      !: river runoff   [Kg/m2/s] 
     99   USE sbcrnf  , ONLY :   nk_rnf     =>    nk_rnf     !: depth of runoff in model level 
    98100 
    99101   USE trc_oce 
     
    135137# endif 
    136138 
     139   USE diaar5 , ONLY :   lk_diaar5  =>   lk_diaar5 
    137140#else 
    138141   !!---------------------------------------------------------------------- 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r5120 r5206  
    7171      CALL top_alloc()              ! allocate TOP arrays 
    7272 
    73 #if defined key_offline 
    74       ltrcdm2dc = .FALSE. 
    75 #endif 
    76  
    77       IF( ltrcdm2dc )CALL ctl_warn( ' Diurnal cycle on physics but not in PISCES or LOBSTER ' ) 
     73      IF( lk_offline )  ln_dm2dc = .FALSE. 
    7874 
    7975      IF( nn_cla == 1 )   & 
  • branches/2015/dev_r5204_CNRS_PISCES_dcy/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r4990 r5206  
    6969      ENDIF 
    7070      !     
    71       IF( ltrcdm2dc ) THEN 
    72          ! When Diurnal cycle, core bulk and LIM2  are activated, put daily mean qsr in qsr for TOP/biogeochemistery time-step 
    73          ! and save qsr with diurnal cycle in qsr_tmp 
    74          CALL wrk_alloc( jpi,jpj, zqsr_tmp ) 
    75          zqsr_tmp(:,:) = qsr     (:,:) 
    76          qsr     (:,:) = qsr_mean(:,:)     
    77       ENDIF 
    78       !     
    7971      IF( nn_dttrc /= 1 )   CALL trc_sub_stp( kt )  ! averaging physical variables for sub-stepping 
    8072      !     
     
    10698      ENDIF 
    10799      ! 
    108       IF( ltrcdm2dc ) THEN 
    109          ! put back qsr with diurnal cycle in qsr 
    110          qsr(:,:) = zqsr_tmp(:,:) 
    111          CALL wrk_dealloc( jpi,jpj, zqsr_tmp ) 
    112       ENDIF 
    113       ! 
    114100      ztrai = 0._wp                                                   !  content of all tracers 
    115101      DO jn = 1, jptra 
Note: See TracChangeset for help on using the changeset viewer.