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 4306 for branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2 – NEMO

Ignore:
Timestamp:
2013-11-21T15:59:57+01:00 (10 years ago)
Author:
cetlod
Message:

dev_MERGE_2013 : merge in the solar mean flux branch from MERCATOR, see ticket #1187

Location:
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2/ice_2.F90

    r4161 r4306  
    6363 
    6464   !!* Ice Rheology 
     65 
     66   LOGICAL , PUBLIC::  ltrcdm2dc_ice = .FALSE.              !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
     67 
    6568# if defined key_lim2_vp 
    6669   !                                                      !!* VP rheology * 
     
    108111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qdtcn         !: energy from the ice to the ocean point (at a factor 2) 
    109112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   thcm          !: part of the solar energy used in the lead heat budget 
     113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fstric_daymean!: Solar flux transmitted trough the ice, for day mean of qsr ( PISCES, with dirunal cycle ) 
    110114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fstric        !: Solar flux transmitted trough the ice 
    111115   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ffltbif       !: linked with the max heat contained in brine pockets (?) 
     
    167171         &     tbif  (jpi,jpj,jplayersp1)                           , STAT=ierr(5)) 
    168172 
     173      IF( ltrcdm2dc_ice ) ALLOCATE(fstric_daymean(jpi,jpj), STAT=ierr(6) ) 
     174 
    169175      !* moment used in the advection scheme 
    170176      ALLOCATE(sxice (jpi,jpj) , syice (jpi,jpj) , sxxice(jpi,jpj) ,     & 
     
    193199   !!   Default option         Empty module        NO LIM 2.0 sea-ice model 
    194200   !!---------------------------------------------------------------------- 
     201   LOGICAL , PUBLIC::  ltrcdm2dc_ice = .FALSE.              !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
    195202#endif 
    196203   !!----------------------------------------------------------------- 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90

    r4147 r4306  
    7676      CALL ctl_opn( numnam_ice_cfg, 'namelist_ice_cfg',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 
    7777      CALL ctl_opn( numoni,         'output.namelist.ice', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 
     78      ! When Diurnal cycle, core bulk and LIM2  are activated,  
     79      ! a daily mean qsr is computed for tracer/biogeochemistery model                                 ! 
     80      IF( ltrcdm2dc ) ltrcdm2dc_ice = .TRUE. 
     81 
     82      !                                ! Open the namelist file  
    7883      !     
    7984      CALL ice_run_2                   ! read in namelist some run parameters 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r4292 r4306  
    4848   PUBLIC   lim_sbc_flx_2      ! called by sbc_ice_lim_2 
    4949   PUBLIC   lim_sbc_tau_2      ! called by sbc_ice_lim_2 
     50   PUBLIC   lim_bio_meanqsr_2  ! called by sbc_ice_lim_2 
    5051 
    5152   REAL(wp)  ::   r1_rdtice            ! = 1. / rdt_ice  
     
    437438   END SUBROUTINE lim_sbc_tau_2 
    438439 
     440   SUBROUTINE lim_bio_meanqsr_2 
     441      !!--------------------------------------------------------------------- 
     442      !!                     ***  ROUTINE lim_bio_meanqsr 
     443      !! 
     444      !! ** Purpose :   provide daily qsr_mean for PISCES when  
     445      !!                analytic diurnal cycle is applied in physic 
     446      !! 
     447      !! ** Method  :   add part under ice 
     448      !! 
     449      !!--------------------------------------------------------------------- 
     450 
     451      qsr_mean(:,:) =  pfrld(:,:) * qsr_mean(:,:) + ( 1. - pfrld(:,:) ) * fstric_daymean(:,:) 
     452 
     453   END SUBROUTINE lim_bio_meanqsr_2 
    439454 
    440455   SUBROUTINE lim_sbc_init_2 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r4292 r4306  
    139139      rdq_ice(:,:) = 0.e0   ! heat content associated with rdm_ice 
    140140      zmsk (:,:,:) = 0.e0 
     141      IF( ltrcdm2dc_ice  ) fstric_daymean (:,:) = 0.e0   ! part of solar radiation absorbing inside the ice 
    141142 
    142143      ! set to zero snow thickness smaller than epsi04 
     
    286287         CALL tab_2d_1d_2( nbpb, tbif_1d    (1:nbpb , 3 ), tbif(:,:,3)    , jpi, jpj, npb(1:nbpb) ) 
    287288         CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb)     , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) 
     289         IF( ltrcdm2dc_ice ) & 
     290         & CALL tab_2d_1d_2( nbpb, qsr_ice_mean_1d (1:nbpb), qsr_ice_mean(:,:,1), jpi, jpj, npb(1:nbpb) ) 
    288291         CALL tab_2d_1d_2( nbpb, fr1_i0_1d  (1:nbpb)     , fr1_i0         , jpi, jpj, npb(1:nbpb) ) 
    289292         CALL tab_2d_1d_2( nbpb, fr2_i0_1d  (1:nbpb)     , fr2_i0         , jpi, jpj, npb(1:nbpb) ) 
     
    335338         CALL tab_1d_2d_2( nbpb, qsr_ice(:,:,1), npb, qsr_ice_1d(1:nbpb)  , jpi, jpj ) 
    336339         CALL tab_1d_2d_2( nbpb, qns_ice(:,:,1), npb, qns_ice_1d(1:nbpb)  , jpi, jpj ) 
    337          IF( .NOT. lk_cpl )   CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb)  , jpi, jpj ) 
     340         IF( ltrcdm2dc_ice )THEN 
     341            CALL tab_1d_2d_2( nbpb, fstric_daymean     , npb, fstbif_daymean_1d (1:nbpb)  , jpi, jpj ) 
     342            CALL tab_1d_2d_2( nbpb, qsr_ice_mean(:,:,1), npb,    qsr_ice_mean_1d(1:nbpb)  , jpi, jpj ) 
     343         ENDIF 
     344         IF( .NOT. lk_cpl )   CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb)             , jpi, jpj ) 
    338345         ! 
    339346      ENDIF 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90

    r3625 r4306  
    273273       END DO 
    274274 
     275       IF( ltrcdm2dc_ice )THEN 
     276 
     277          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 ) ) 
     280             zi0(ji)  = zihsn * ( fr1_i0_1d(ji) + zihic * fr2_i0_1d(ji) ) 
     281             zexp     = MIN( zone , EXP( -1.5 * ( h_ice_1d(ji) - zhsu ) ) ) 
     282             fstbif_daymean_1d(ji) = zi0(ji) * qsr_ice_mean_1d(ji) * zexp 
     283          END DO 
     284 
     285       ENDIF 
     286 
    275287       !-------------------------------------------------------------------------------- 
    276288       !  4. Computation of the surface temperature : determined by considering the  
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90

    r4147 r4306  
    1313   !!---------------------------------------------------------------------- 
    1414   USE par_ice_2 
     15   USE ice_2 
    1516 
    1617   IMPLICIT NONE 
     
    5455      fstbif_1d   ,     &  !:    "                  "      fstric 
    5556      fltbif_1d   ,     &  !:    "                  "      ffltbif 
     57      fstbif_daymean_1d, & !:    "                  " fstric_daymean 
    5658      fscbq_1d    ,     &  !:    "                  "      fscmcbq 
    5759      qsr_ice_1d  ,     &  !:    "                  "      qsr_ice 
     60      qsr_ice_mean_1d , &  !:    "                  "      qsr_ice_mean 
    5861      fr1_i0_1d   ,     &  !:    "                  "      fr1_i0 
    5962      fr2_i0_1d   ,     &  !:    "                  "      fr2_i0 
     
    9699      !!---------------------------------------------------------------------- 
    97100      USE lib_mpp        ! MPP library 
    98       INTEGER :: ierr(4) 
     101      INTEGER :: ierr(5) 
    99102      !!---------------------------------------------------------------------- 
    100103      ! 
     
    119122         &      tbif_1d(jpij, jplayersp1), Stat=ierr(4)) 
    120123         ! 
     124      IF( ltrcdm2dc_ice )ALLOCATE(fstbif_daymean_1d(jpij),qsr_ice_mean_1d(jpij),Stat=ierr(5)) 
     125         ! 
    121126      thd_ice_alloc_2 = MAXVAL(ierr) 
    122127      IF( thd_ice_alloc_2 /= 0 )   CALL ctl_warn('thd_ice_alloc_2: failed to allocate arrays') 
Note: See TracChangeset for help on using the changeset viewer.