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 9977 for NEMO/branches/UKMO/dev_r9888_proto_GO8_package/src/ICE/icethd_zdf_bl99.F90 – NEMO

Ignore:
Timestamp:
2018-07-20T10:24:45+02:00 (6 years ago)
Author:
davestorkey
Message:

UKMO/dev_r9888_proto_GO8_package branch: merge in changes from trunk to rev 9922.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/dev_r9888_proto_GO8_package/src/ICE/icethd_zdf_bl99.F90

    r9892 r9977  
    178178      !------------- 
    179179      ! --- Transmission/absorption of solar radiation in the ice --- ! 
    180       zradtr_s(1:npti,0) = qsr_ice_tr_1d(1:npti) 
     180      zradtr_s(1:npti,0) = qtr_ice_top_1d(1:npti) 
    181181      DO jk = 1, nlay_s 
    182182         DO ji = 1, npti 
     
    188188      END DO 
    189189      ! 
    190       zradtr_i(1:npti,0) = zradtr_s(1:npti,nlay_s) * isnow(1:npti) + qsr_ice_tr_1d(1:npti) * ( 1._wp - isnow(1:npti) ) 
     190      zradtr_i(1:npti,0) = zradtr_s(1:npti,nlay_s) * isnow(1:npti) + qtr_ice_top_1d(1:npti) * ( 1._wp - isnow(1:npti) ) 
    191191      DO jk = 1, nlay_i  
    192192         DO ji = 1, npti 
     
    198198      END DO 
    199199      ! 
    200       ftr_ice_1d(1:npti) = zradtr_i(1:npti,nlay_i)   ! record radiation transmitted below the ice 
     200      qtr_ice_bot_1d(1:npti) = zradtr_i(1:npti,nlay_i)   ! record radiation transmitted below the ice 
    201201      ! 
    202202      iconv    = 0          ! number of iterations 
     
    330330 
    331331            DO ji = 1, npti 
    332                zfnet(ji) = qsr_ice_1d(ji) - qsr_ice_tr_1d(ji) + qns_ice_1d(ji) ! net heat flux = net - transmitted solar + non solar 
     332               zfnet(ji) = qsr_ice_1d(ji) - qtr_ice_top_1d(ji) + qns_ice_1d(ji) ! net heat flux = net - transmitted solar + non solar 
    333333            END DO 
    334334            ! 
     
    728728      !----------------------------- 
    729729      ! 
    730       ! --- update conduction fluxes 
    731       ! 
     730      ! --- calculate conduction fluxes (positive downward) 
     731 
    732732      DO ji = 1, npti 
    733733         !                                ! surface ice conduction flux 
    734          fc_su(ji)   =  -           isnow(ji)   * zkappa_s(ji,0) * zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) )  & 
    735             &           - ( 1._wp - isnow(ji) ) * zkappa_i(ji,0) * zg1  * ( t_i_1d(ji,1) - t_su_1d(ji) ) 
     734         qcn_ice_top_1d(ji) =  -           isnow(ji)   * zkappa_s(ji,0)      * zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) )  & 
     735            &                  - ( 1._wp - isnow(ji) ) * zkappa_i(ji,0)      * zg1  * ( t_i_1d(ji,1) - t_su_1d(ji) ) 
    736736         !                                ! bottom ice conduction flux 
    737          fc_bo_i(ji) =  - zkappa_i(ji,nlay_i) * zg1 * ( t_bo_1d(ji) - t_i_1d(ji,nlay_i) ) 
     737         qcn_ice_bot_1d(ji) =                          - zkappa_i(ji,nlay_i) * zg1  * ( t_bo_1d(ji ) - t_i_1d (ji,nlay_i) ) 
    738738      END DO 
    739739       
     
    750750         ! 
    751751         DO ji = 1, npti 
    752             hfx_err_dif_1d(ji) = hfx_err_dif_1d(ji) - ( fc_su(ji)      - qcn_ice_1d(ji) ) * a_i_1d(ji)  
     752            hfx_err_dif_1d(ji) = hfx_err_dif_1d(ji) - ( qcn_ice_top_1d(ji) - qcn_ice_1d(ji) ) * a_i_1d(ji)  
    753753         END DO 
    754754         ! 
     
    770770                
    771771               IF( t_su_1d(ji) < rt0 ) THEN  ! case T_su < 0degC 
    772                   zhfx_err = ( qns_ice_1d(ji) + qsr_ice_1d(ji)    - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice )*a_i_1d(ji) 
     772                  zhfx_err = ( qns_ice_1d(ji)     + qsr_ice_1d(ji)     - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji)  & 
     773                     &       + zdq * r1_rdtice ) * a_i_1d(ji) 
    773774               ELSE                          ! case T_su = 0degC 
    774                   zhfx_err = ( fc_su(ji)      + qsr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice )*a_i_1d(ji) 
     775                  zhfx_err = ( qcn_ice_top_1d(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji)  & 
     776                     &       + zdq * r1_rdtice ) * a_i_1d(ji) 
    775777               ENDIF 
    776778                
    777779            ELSEIF( k_jules == np_jules_ACTIVE ) THEN 
    778780             
    779                zhfx_err = ( fc_su(ji) + qsr_ice_tr_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice ) * a_i_1d(ji) 
     781               zhfx_err    = ( qcn_ice_top_1d(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji)  & 
     782                  &          + zdq * r1_rdtice ) * a_i_1d(ji) 
    780783             
    781784            ENDIF 
     
    787790            hfx_dif_1d(ji) = hfx_dif_1d(ji) - zdq * r1_rdtice * a_i_1d(ji) 
    788791            ! 
    789          END DO 
    790          ! 
    791          ! --- SIMIP diagnostics 
    792          ! 
    793          DO ji = 1, npti 
    794             !--- Conduction fluxes (positive downwards) 
    795             diag_fc_bo_1d(ji) = diag_fc_bo_1d(ji) + fc_bo_i(ji) * a_i_1d(ji) / at_i_1d(ji) 
    796             diag_fc_su_1d(ji) = diag_fc_su_1d(ji) + fc_su  (ji) * a_i_1d(ji) / at_i_1d(ji) 
    797     
    798             !--- Snow-ice interfacial temperature (diagnostic SIMIP) 
    799             zfac = rn_cnd_s * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) 
    800             IF( h_s_1d(ji) >= zhs_min ) THEN 
    801                t_si_1d(ji) = ( rn_cnd_s       * zh_i(ji) * t_s_1d(ji,1) +   & 
    802                   &            ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) / MAX( epsi10, zfac ) 
    803             ELSE 
    804                t_si_1d(ji) = t_su_1d(ji) 
    805             ENDIF 
    806792         END DO 
    807793         ! 
     
    827813      IF( k_jules == np_jules_EMULE ) THEN 
    828814         ! Restore temperatures to their initial values 
    829          t_s_1d    (1:npti,:) = ztsold(1:npti,:) 
    830          t_i_1d    (1:npti,:) = ztiold(1:npti,:) 
    831          qcn_ice_1d(1:npti)   = fc_su (1:npti) 
     815         t_s_1d    (1:npti,:) = ztsold        (1:npti,:) 
     816         t_i_1d    (1:npti,:) = ztiold        (1:npti,:) 
     817         qcn_ice_1d(1:npti)   = qcn_ice_top_1d(1:npti) 
    832818      ENDIF 
    833819      ! 
     820      ! --- SIMIP diagnostics 
     821      ! 
     822      DO ji = 1, npti          
     823         !--- Snow-ice interfacial temperature (diagnostic SIMIP) 
     824         zfac = rn_cnd_s * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) 
     825         IF( h_s_1d(ji) >= zhs_min ) THEN 
     826            t_si_1d(ji) = ( rn_cnd_s       * zh_i(ji) * t_s_1d(ji,1) +   & 
     827               &            ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) / MAX( epsi10, zfac ) 
     828         ELSE 
     829            t_si_1d(ji) = t_su_1d(ji) 
     830         ENDIF 
     831      END DO 
     832      ! 
    834833   END SUBROUTINE ice_thd_zdf_BL99 
    835  
    836834 
    837835#else 
Note: See TracChangeset for help on using the changeset viewer.