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 5357 for branches/2015/dev_r5218_CNRS17_coupling/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90 – NEMO

Ignore:
Timestamp:
2015-06-04T20:39:20+02:00 (9 years ago)
Author:
clem
Message:

LIM3: change the interface between the ice and atm for both coupled and forced modes. Some work still needs to be done to deal with sublimation in coupled mode.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5218_CNRS17_coupling/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r5352 r5357  
    4848   PRIVATE 
    4949 
    50    PUBLIC   lim_thd        ! called by limstp module 
    51    PUBLIC   lim_thd_init   ! called by sbc_lim_init 
     50   PUBLIC   lim_thd         ! called by limstp module 
     51   PUBLIC   lim_thd_init    ! called by sbc_lim_init 
    5252 
    5353   !! * Substitutions 
     
    9090      REAL(wp), PARAMETER :: zch        = 0.0057_wp       ! heat transfer coefficient 
    9191      ! 
    92       REAL(wp), POINTER, DIMENSION(:,:) ::  zqsr, zqns 
    9392      !!------------------------------------------------------------------- 
    94       CALL wrk_alloc( jpi,jpj, zqsr, zqns ) 
    9593 
    9694      IF( nn_timing == 1 )  CALL timing_start('limthd') 
     
    134132      ! 2) Partial computation of forcing for the thermodynamic sea ice model.      ! 
    135133      !-----------------------------------------------------------------------------! 
    136  
    137       !--- Ocean solar and non solar fluxes to be used in zqld 
    138       IF ( .NOT. ln_cpl ) THEN   ! --- forced case, fluxes to the lead are the same as over the ocean 
    139          ! 
    140          zqsr(:,:) = qsr(:,:)      ; zqns(:,:) = qns(:,:) 
    141          ! 
    142       ELSE                       ! --- coupled case, fluxes to the lead are total - intercepted 
    143          ! 
    144          zqsr(:,:) = qsr_tot(:,:)  ; zqns(:,:) = qns_tot(:,:) 
    145          ! 
    146          DO jl = 1, jpl 
    147             DO jj = 1, jpj 
    148                DO ji = 1, jpi 
    149                   zqsr(ji,jj) = zqsr(ji,jj) - qsr_ice(ji,jj,jl) * a_i_b(ji,jj,jl) 
    150                   zqns(ji,jj) = zqns(ji,jj) - qns_ice(ji,jj,jl) * a_i_b(ji,jj,jl) 
    151                END DO 
    152             END DO 
    153          END DO 
    154          ! 
    155       ENDIF 
    156  
    157134      DO jj = 1, jpj 
    158135         DO ji = 1, jpi 
     
    165142            !           !  temperature and turbulent mixing (McPhee, 1992) 
    166143            ! 
    167  
    168144            ! --- Energy received in the lead, zqld is defined everywhere (J.m-2) --- ! 
    169             ! REMARK valid at least in forced mode from clem 
    170             ! precip is included in qns but not in qns_ice 
    171             IF ( ln_cpl ) THEN 
    172                zqld =  tmask(ji,jj,1) * rdt_ice *  & 
    173                   &    (   zqsr(ji,jj) * frq_m(ji,jj) + zqns(ji,jj)                     &   ! pfrld already included in coupled mode 
    174                   &    + ( pfrld(ji,jj)**rn_betas - pfrld(ji,jj) ) * sprecip(ji,jj) *   &   ! heat content of precip 
    175                   &      ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus )   & 
    176                   &    + ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 ) ) 
    177             ELSE 
    178                zqld =  tmask(ji,jj,1) * rdt_ice *  & 
    179                   &      ( pfrld(ji,jj) * ( zqsr(ji,jj) * frq_m(ji,jj) + zqns(ji,jj) )   & 
    180                   &    + ( pfrld(ji,jj)**rn_betas - pfrld(ji,jj) ) * sprecip(ji,jj) *    &  ! heat content of precip 
    181                   &      ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus )    & 
    182                   &    + ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 ) ) 
    183             ENDIF 
     145            zqld =  tmask(ji,jj,1) * rdt_ice *  & 
     146               &    ( pfrld(ji,jj) * qsr_oce(ji,jj) * frq_m(ji,jj) + pfrld(ji,jj) * qns_oce(ji,jj) + qemp_oce(ji,jj) ) 
    184147 
    185148            ! --- Energy needed to bring ocean surface layer until its freezing (<0, J.m-2) --- ! 
     
    208171            ! Net heat flux on top of ice-ocean [W.m-2] 
    209172            ! ----------------------------------------- 
    210             !     heat flux at the ocean surface + precip 
    211             !   + heat flux at the ice   surface  
    212             hfx_in(ji,jj) = hfx_in(ji,jj)                                                                                         &  
    213                ! heat flux above the ocean 
    214                &    +             pfrld(ji,jj)   * ( zqns(ji,jj) + zqsr(ji,jj) )                                                  & 
    215                ! latent heat of precip (note that precip is included in qns but not in qns_ice) 
    216                &    +   ( 1._wp - pfrld(ji,jj) ) * sprecip(ji,jj) * ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus )  & 
    217                &    +   ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 )          & 
    218                ! heat flux above the ice 
    219                &    +   SUM(    a_i_b(ji,jj,:)   * ( qns_ice(ji,jj,:) + qsr_ice(ji,jj,:) ) ) 
     173            hfx_in(ji,jj) = qns_tot(ji,jj) + qsr_tot(ji,jj)  
    220174 
    221175            ! ----------------------------------------------------------------------------- 
    222             ! Net heat flux that is retroceded to the ocean or taken from the ocean [W.m-2] 
     176            ! Net heat flux on top of the ocean after ice thermo (1st step) [W.m-2] 
    223177            ! ----------------------------------------------------------------------------- 
    224178            !     First  step here              :  non solar + precip - qlead - qturb 
    225179            !     Second step in limthd_dh      :  heat remaining if total melt (zq_rema)  
    226180            !     Third  step in limsbc         :  heat from ice-ocean mass exchange (zf_mass) + solar 
    227             hfx_out(ji,jj) = hfx_out(ji,jj)                                                                                       &  
    228                ! Non solar heat flux received by the ocean 
    229                &    +        pfrld(ji,jj) * zqns(ji,jj)                                                                            & 
    230                ! latent heat of precip (note that precip is included in qns but not in qns_ice) 
    231                &    +      ( pfrld(ji,jj)**rn_betas - pfrld(ji,jj) ) * sprecip(ji,jj)       & 
    232                &         * ( cpic * ( MIN( tatm_ice(ji,jj), rt0_snow ) - rt0 ) - lfus )  & 
    233                &    +      ( 1._wp - pfrld(ji,jj) ) * ( tprecip(ji,jj) - sprecip(ji,jj) ) * rcp * ( tatm_ice(ji,jj) - rt0 )       & 
    234                ! heat flux taken from the ocean where there is open water ice formation 
    235                &    -      qlead(ji,jj) * r1_rdtice                                                                               & 
    236                ! heat flux taken from the ocean during bottom growth/melt (fhld should be 0 while bott growth) 
    237                &    -      at_i(ji,jj) * fhtur(ji,jj)                                                                             & 
    238                &    -      at_i(ji,jj) *  fhld(ji,jj) 
    239  
     181            hfx_out(ji,jj) =   pfrld(ji,jj) * qns_oce(ji,jj) + qemp_oce(ji,jj)  &  ! Non solar heat flux received by the ocean                
     182               &             - qlead(ji,jj) * r1_rdtice                         &  ! heat flux taken from the ocean where there is open water ice formation 
     183               &             - at_i(ji,jj) * fhtur(ji,jj)                       &  ! heat flux taken by turbulence 
     184               &             - at_i(ji,jj) *  fhld(ji,jj)                          ! heat flux taken during bottom growth/melt  
     185                                                                                   !    (fhld should be 0 while bott growth) 
    240186         END DO 
    241187      END DO 
     
    410356      IF( ln_limdiahsb ) CALL lim_cons_hsm(1, 'limthd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    411357 
    412       CALL wrk_dealloc( jpi,jpj, zqsr, zqns ) 
    413  
    414358      !------------------------------------------------------------------------------| 
    415359      !  6) Transport of ice between thickness categories.                           | 
     
    470414   END SUBROUTINE lim_thd  
    471415 
     416  
    472417   SUBROUTINE lim_thd_temp( kideb, kiut ) 
    473418      !!----------------------------------------------------------------------- 
     
    568513         END DO 
    569514          
    570          CALL tab_2d_1d( nbpb, tatm_ice_1d(1:nbpb), tatm_ice(:,:)  , jpi, jpj, npb(1:nbpb) ) 
     515         CALL tab_2d_1d( nbpb, qprec_ice_1d(1:nbpb), qprec_ice(:,:) , jpi, jpj, npb(1:nbpb) ) 
    571516         CALL tab_2d_1d( nbpb, qsr_ice_1d (1:nbpb), qsr_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
    572517         CALL tab_2d_1d( nbpb, fr1_i0_1d  (1:nbpb), fr1_i0          , jpi, jpj, npb(1:nbpb) ) 
     
    574519         CALL tab_2d_1d( nbpb, qns_ice_1d (1:nbpb), qns_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
    575520         CALL tab_2d_1d( nbpb, ftr_ice_1d (1:nbpb), ftr_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
    576          IF( .NOT. ln_cpl ) THEN 
    577             CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb), qla_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
    578             CALL tab_2d_1d( nbpb, dqla_ice_1d(1:nbpb), dqla_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 
    579          ENDIF 
     521         CALL tab_2d_1d( nbpb, evap_ice_1d (1:nbpb), evap_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 
    580522         CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 
    581523         CALL tab_2d_1d( nbpb, t_bo_1d     (1:nbpb), t_bo            , jpi, jpj, npb(1:nbpb) ) 
Note: See TracChangeset for help on using the changeset viewer.