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 3858 for branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H – NEMO

Ignore:
Timestamp:
2013-04-03T11:59:02+02:00 (11 years ago)
Author:
cbricaud
Message:

commit first draft of MERCATOR3_QSRMEAN24H

Location:
branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO
Files:
11 edited

Legend:

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

    r3625 r3858  
    6262 
    6363   !!* Ice Rheology 
     64 
     65   LOGICAL , PUBLIC::  ltrcdm2dc_ice = .FALSE.              !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
     66 
    6467# if defined key_lim2_vp 
    6568   !                                                      !!* VP rheology * 
     
    107110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qdtcn         !: energy from the ice to the ocean point (at a factor 2) 
    108111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   thcm          !: part of the solar energy used in the lead heat budget 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fstric_daymean!: Solar flux transmitted trough the ice, for day mean of qsr ( PISCES, with dirunal cycle ) 
    109113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fstric        !: Solar flux transmitted trough the ice 
    110114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ffltbif       !: linked with the max heat contained in brine pockets (?) 
     
    166170         &     tbif  (jpi,jpj,jplayersp1)                           , STAT=ierr(5)) 
    167171 
     172      IF( ltrcdm2dc_ice ) ALLOCATE(fstric_daymean(jpi,jpj), STAT=ierr(6) ) 
     173 
    168174      !* moment used in the advection scheme 
    169175      ALLOCATE(sxice (jpi,jpj) , syice (jpi,jpj) , sxxice(jpi,jpj) ,     & 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r3625 r3858  
    4747   PUBLIC   lim_sbc_flx_2      ! called by sbc_ice_lim_2 
    4848   PUBLIC   lim_sbc_tau_2      ! called by sbc_ice_lim_2 
     49   PUBLIC   lim_bio_meanqsr_2  ! called by sbc_ice_lim_2 
    4950 
    5051   REAL(wp)  ::   r1_rdtice            ! = 1. / rdt_ice  
     
    433434   END SUBROUTINE lim_sbc_tau_2 
    434435 
     436   SUBROUTINE lim_bio_meanqsr_2 
     437      !!--------------------------------------------------------------------- 
     438      !!                     ***  ROUTINE lim_bio_meanqsr 
     439      !! 
     440      !! ** Purpose :   provide daily qsr_mean for PISCES when  
     441      !!                analytic diurnal cycle is applied in physic 
     442      !! 
     443      !! ** Method  :   add part under ice 
     444      !! 
     445      !!--------------------------------------------------------------------- 
     446 
     447      qsr_mean(:,:) =  qsr_mean(:,:) + ( 1. - frld(:,:) ) * fstric_daymean(:,:) 
     448 
     449   END SUBROUTINE lim_bio_meanqsr_2 
    435450 
    436451   SUBROUTINE lim_sbc_init_2 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r3625 r3858  
    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 
     
    335336         CALL tab_1d_2d_2( nbpb, qsr_ice(:,:,1), npb, qsr_ice_1d(1:nbpb)  , jpi, jpj ) 
    336337         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 ) 
     338         IF( .NOT. lk_cpl )   CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb)             , jpi, jpj ) 
     339         IF( ltrcdm2dc_ice  ) CALL tab_1d_2d_2( nbpb, fstric_daymean, npb, fstbif_daymean_1d (1:nbpb)     , jpi, jpj ) 
    338340         ! 
    339341      ENDIF 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90

    r3625 r3858  
    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_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_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90

    r3625 r3858  
    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 
     
    119121         &      tbif_1d(jpij, jplayersp1), Stat=ierr(4)) 
    120122         ! 
     123      IF( ltrcdm2dc_ice )ALLOCATE(fstbif_daymean_1d(jpij),Stat=ierr(5)) 
     124         ! 
    121125      thd_ice_alloc_2 = MAXVAL(ierr) 
    122126      IF( thd_ice_alloc_2 /= 0 )   CALL ctl_warn('thd_ice_alloc_2: failed to allocate arrays') 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r3680 r3858  
    5757   !!---------------------------------------------------------------------- 
    5858   LOGICAL , PUBLIC ::   lhftau = .FALSE.        !: HF tau used in TKE: mean(stress module) - module(mean stress) 
     59   LOGICAL , PUBLIC ::   ltrcdm2dc               !: In case of Diurnal Cycle short wave, compute a Daily Mean short waves flux 
    5960   !!                                   !!   now    ! before   !! 
    6061   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   utau   , utau_b   !: sea surface i-stress (ocean referential)     [N/m2] 
     
    6465   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wndm              !: wind speed module at T-point (=|U10m-Uoce|)  [m/s] 
    6566   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsr               !: sea heat flux:     solar                     [W/m2] 
     67   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:),TARGET ::   qsr_mean          !: daily mean sea heat flux: solar              [W/m2] 
    6668   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qns    , qns_b    !: sea heat flux: non solar                     [W/m2] 
    6769   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsr_tot           !: total     solar heat flux (over sea and ice) [W/m2] 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r3772 r3858  
    186186      CALL fld_read( kt, nn_fsbc, sf )             ! input fields provided at the current time-step 
    187187 
     188      ! If diurnal cycle is activated, compute a daily mean short waves flux for biogeochemistery  
     189#if defined key_top 
     190      IF( ltrcdm2dc )CALL blk_bio_meanqsr 
     191#endif 
     192 
    188193      !                                            ! compute the surface ocean fluxes using CORE bulk formulea 
    189194      IF( MOD( kt - 1, nn_fsbc ) == 0 )   CALL blk_oce_core( kt, sf, sst_m, ssu_m, ssv_m ) 
     
    423428      ! 
    424429   END SUBROUTINE blk_oce_core 
    425     
     430   
     431   SUBROUTINE blk_bio_meanqsr 
     432      !!--------------------------------------------------------------------- 
     433      !!                     ***  ROUTINE blk_bio_meanqsr 
     434      !!                      
     435      !! ** Purpose :   provide daily qsr_mean for PISCES when 
     436      !!                analytic diurnal cycle is applied in physic 
     437      !!                 
     438      !! ** Method  :   add part where there is no ice 
     439      !!  
     440      !!--------------------------------------------------------------------- 
     441      INTEGER  :: ji,jj 
     442      REAL(wp) :: zfrld 
     443      !!--------------------------------------------------------------------- 
     444      IF( nn_timing == 1 )  CALL timing_start('blk_bio_meanqsr') 
     445 
     446      qsr_mean(:,:) = (1. - albo ) *  sf(jp_qsr)%fnow(:,:,1) 
     447 
     448      IF( nn_timing == 1 )  CALL timing_stop('blk_bio_meanqsr') 
     449 
     450   END SUBROUTINE blk_bio_meanqsr 
     451  
    426452    
    427453   SUBROUTINE blk_ice_core(  pst   , pui   , pvi   , palb ,   & 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r3680 r3858  
    238238      IF( ln_limdyn    )   CALL lim_sbc_tau_2( kt, ub(:,:,1), vb(:,:,1) )  ! using before instantaneous surf. currents 
    239239      ! 
     240#if defined key_top 
     241      IF( ltrcdm2dc_ice )CALL lim_bio_meanqsr_2 
     242#endif 
     243      ! 
    240244      CALL wrk_dealloc( jpi,jpj,1, zalb_ice_os, zalb_ice_cs, zsist ) 
    241245      ! 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90

    r3680 r3858  
    9797   USE sbc_oce , ONLY :   wndm       =>    wndm       !: 10m wind speed  
    9898   USE sbc_oce , ONLY :   qsr        =>    qsr        !: penetrative solar radiation (w m-2)   
     99   USE sbc_oce , ONLY :   qsr_mean                    !: penetrative solar radiation (w m-2)   
    99100   USE sbc_oce , ONLY :   emp        =>    emp        !: freshwater budget: volume flux               [Kg/m2/s] 
    100101   USE sbc_oce , ONLY :   emp_b      =>    emp_b      !: freshwater budget: volume flux               [Kg/m2/s] 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r3680 r3858  
    1717   !!---------------------------------------------------------------------- 
    1818   USE oce_trc         ! shared variables between ocean and passive tracers 
     19   USE ice_2           ! LIM sea-ice variables 
    1920   USE trc             ! passive tracers common variables 
    2021   USE trcrst          ! passive tracers restart 
     
    2829   USE zpshde          ! partial step: hor. derivative   (zps_hde routine) 
    2930   USE prtctl_trc      ! Print control passive tracers (prt_ctl_trc_init routine) 
    30    USE trcsub       ! variables to substep passive tracers 
    31     
     31   USE trcsub          ! variables to substep passive tracers 
     32   USE lib_mpp         ! distribued memory computing library 
     33  
    3234   IMPLICIT NONE 
    3335   PRIVATE 
     
    5759      !!--------------------------------------------------------------------- 
    5860      INTEGER ::   jk, jn, jl    ! dummy loop indices 
     61      INTEGER ::   ierr 
    5962      CHARACTER (len=25) :: charout 
    6063      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  ztrcdta   ! 4D  workspace 
     
    6972      CALL top_alloc()              ! allocate TOP arrays 
    7073 
    71       IF( ln_dm2dc .AND. lk_pisces )    & 
    72          &  CALL ctl_stop( ' The diurnal cycle is not compatible with PISCES ' ) 
     74      IF( ln_dm2dc .AND. lk_pisces )THEN 
     75         CALL ctl_warn( ' Diurnal cycle on physics but not in PISCES or LOBSTER ' ) 
     76         ltrcdm2dc     = .TRUE. 
     77         ltrcdm2dc_ice = .TRUE. 
     78         ALLOCATE( qsr_mean(jpi,jpj) , STAT = ierr ) 
     79 
     80         IF( lk_mpp    )   CALL mpp_sum ( ierr ) 
     81         IF( ierr  > 0 )   CALL ctl_warn('trc_ini: allocation of arrays qsr_mean failed') 
     82 
     83      ENDIF 
    7384 
    7485      IF( nn_cla == 1 )   & 
  • branches/2013/dev_r3856_MERCATOR3_QSRMEAN24H/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r3680 r3858  
    6666      ENDIF 
    6767      !     
    68      IF( nn_dttrc /= 1 )   CALL trc_sub_stp( kt )  ! averaging physical variables for sub-stepping 
    69  
    70      IF( MOD( kt , nn_dttrc ) == 0 ) THEN      ! only every nn_dttrc time step 
     68      IF( ln_dm2dc .AND. lk_pisces )THEN 
     69         qsr(:,:) = qsr_mean(:,:) 
     70      ENDIF 
     71      !     
     72      IF( nn_dttrc /= 1 )   CALL trc_sub_stp( kt )  ! averaging physical variables for sub-stepping 
     73      !     
     74      IF( MOD( kt , nn_dttrc ) == 0 ) THEN      ! only every nn_dttrc time step 
    7175         ! 
    7276         IF(ln_ctl) THEN 
Note: See TracChangeset for help on using the changeset viewer.