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/OPA_SRC/SBC/sbcblk_core.F90 – NEMO

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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r4245 r4306  
    4949   PUBLIC   sbc_blk_core         ! routine called in sbcmod module 
    5050   PUBLIC   blk_ice_core         ! routine called in sbc_ice_lim module 
     51   PUBLIC   blk_ice_meanqsr      ! routine called in sbc_ice_lim module 
    5152   PUBLIC   turb_core_2z         ! routine calles in sbcblk_mfs module 
    5253 
     
    189190      !                                            ! compute the surface ocean fluxes using CORE bulk formulea 
    190191      IF( MOD( kt - 1, nn_fsbc ) == 0 )   CALL blk_oce_core( kt, sf, sst_m, ssu_m, ssv_m ) 
     192 
     193      ! If diurnal cycle is activated, compute a daily mean short waves flux for biogeochemistery  
     194      IF( ltrcdm2dc )   CALL blk_bio_meanqsr 
    191195 
    192196#if defined key_cice 
     
    438442      ! 
    439443   END SUBROUTINE blk_oce_core 
    440     
     444   
     445   SUBROUTINE blk_bio_meanqsr 
     446      !!--------------------------------------------------------------------- 
     447      !!                     ***  ROUTINE blk_bio_meanqsr 
     448      !!                      
     449      !! ** Purpose :   provide daily qsr_mean for PISCES when 
     450      !!                analytic diurnal cycle is applied in physic 
     451      !!                 
     452      !! ** Method  :   add part where there is no ice 
     453      !!  
     454      !!--------------------------------------------------------------------- 
     455      IF( nn_timing == 1 )  CALL timing_start('blk_bio_meanqsr') 
     456 
     457      qsr_mean(:,:) = (1. - albo ) *  sf(jp_qsr)%fnow(:,:,1) 
     458 
     459      IF( nn_timing == 1 )  CALL timing_stop('blk_bio_meanqsr') 
     460 
     461   END SUBROUTINE blk_bio_meanqsr 
     462  
     463  
     464   SUBROUTINE blk_ice_meanqsr(palb,p_qsr_mean,pdim) 
     465      !!--------------------------------------------------------------------- 
     466      !! 
     467      !! ** Purpose :   provide the daily qsr_mean over sea_ice for PISCES when 
     468      !!                analytic diurnal cycle is applied in physic 
     469      !! 
     470      !! ** Method  :   compute qsr 
     471      !!  
     472      !!--------------------------------------------------------------------- 
     473      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   palb       ! ice albedo (clear sky) (alb_ice_cs)               [%] 
     474      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   p_qsr_mean !     solar heat flux over ice (T-point)         [W/m2] 
     475      INTEGER                   , INTENT(in   ) ::   pdim       ! number of ice categories 
     476      !! 
     477      INTEGER  ::   ijpl          ! number of ice categories (size of 3rd dim of input arrays) 
     478      INTEGER  ::   ji, jj, jl    ! dummy loop indices 
     479      REAL(wp) ::   zztmp         ! temporary variable 
     480      !!--------------------------------------------------------------------- 
     481      IF( nn_timing == 1 )  CALL timing_start('blk_ice_meanqsr') 
     482      ! 
     483      ijpl  = pdim                            ! number of ice categories 
     484      zztmp = 1. / ( 1. - albo ) 
     485      !                                     ! ========================== ! 
     486      DO jl = 1, ijpl                       !  Loop over ice categories  ! 
     487         !                                  ! ========================== ! 
     488         DO jj = 1 , jpj 
     489            DO ji = 1, jpi 
     490                  p_qsr_mean(ji,jj,jl) = zztmp * ( 1. - palb(ji,jj,jl) ) * qsr_mean(ji,jj) 
     491            END DO 
     492         END DO 
     493      END DO 
     494      ! 
     495      IF( nn_timing == 1 )  CALL timing_stop('blk_ice_meanqsr') 
     496      ! 
     497   END SUBROUTINE blk_ice_meanqsr   
     498  
    441499    
    442500   SUBROUTINE blk_ice_core(  pst   , pui   , pvi   , palb ,   & 
Note: See TracChangeset for help on using the changeset viewer.