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 12388 for NEMO/branches/UKMO – NEMO

Changeset 12388 for NEMO/branches/UKMO


Ignore:
Timestamp:
2020-02-14T17:41:07+01:00 (4 years ago)
Author:
dancopsey
Message:

Add in Ed's code to get sea ice skin temperatures from JULES and use that in the melt pond refreezing code.

Location:
NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/ICE/icethd_zdf_bl99.F90

    r12189 r12388  
    771771      !     bottom ice conduction flux 
    772772      DO ji = 1, npti 
    773          qcn_ice_bot_1d(ji) =  - zkappa_i(ji,nlay_i) * zg1  * ( t_bo_1d(ji ) - t_i_1d (ji,nlay_i) ) 
     773         qcn_ice_bot_1d(ji) = - zkappa_i(ji,nlay_i) * zg1  * ( t_bo_1d(ji ) - t_i_1d (ji,nlay_i) ) 
    774774      END DO 
    775775      !     surface ice conduction flux 
     
    785785         DO ji = 1, npti 
    786786            qcn_ice_top_1d(ji) = qcn_ice_1d(ji) 
    787             ! 
     787         END DO 
     788         ! 
     789      ENDIF 
     790      !     surface ice temperature 
     791      IF( k_cnd == np_cnd_ON .AND. ln_cndemulate ) THEN 
     792         ! 
     793         DO ji = 1, npti 
    788794            t_su_1d(ji) = (  qcn_ice_top_1d(ji) &            ! calculate surface temperature 
    789795               &           +           isnow(ji)   * zkappa_s(ji,0) * zg1s * t_s_1d(ji,1) & 
     
    866872         t_i_1d    (1:npti,:) = ztiold        (1:npti,:) 
    867873         qcn_ice_1d(1:npti)   = qcn_ice_top_1d(1:npti) 
    868  
    869          !!clem 
    870          ! remettre t_su_1d, qns_ice_1d et dqns_ice_1d comme avant puisqu'on devrait faire comme si on avant conduction = input 
    871          !clem 
    872874      ENDIF 
    873875      ! 
  • NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/OCE/SBC/sbc_ice.F90

    r11916 r12388  
    7070   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   wndm_ice       !: wind speed module at T-point                 [m/s] 
    7171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   sstfrz         !: wind speed module at T-point                 [m/s] 
    72    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tsfc_ice       !: sea ice surface skin temperature (on categories) 
    7372#endif 
    7473 
     
    133132         &      qemp_ice(jpi,jpj)     , qevap_ice(jpi,jpj,jpl) , qemp_oce   (jpi,jpj)     ,   & 
    134133         &      qns_oce (jpi,jpj)     , qsr_oce  (jpi,jpj)     , emp_oce    (jpi,jpj)     ,   & 
    135          &      emp_ice (jpi,jpj)     , tsfc_ice (jpi,jpj,jpl) , sstfrz     (jpi,jpj)     , STAT= ierr(2) ) 
     134         &      emp_ice (jpi,jpj)     , sstfrz   (jpi,jpj)     , STAT= ierr(2) ) 
    136135#endif 
    137136 
  • NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/OCE/SBC/sbccpl.F90

    r12373 r12388  
    12611261      IF( srcv(jpr_co2)%laction )   atm_co2(:,:) = frcv(jpr_co2)%z3(:,:,1) 
    12621262      ! 
    1263       !                                                      ! ================== ! 
    1264       !                                                      !   ice skin temp.   ! 
    1265       !                                                      ! ================== ! 
    1266 #if defined key_si3 
    1267       ! needed by Met Office 
    1268       IF( srcv(jpr_ts_ice)%laction ) THEN  
    1269          WHERE    ( frcv(jpr_ts_ice)%z3(:,:,:) > 0.0  )   ;   tsfc_ice(:,:,:) = 0.0  
    1270          ELSEWHERE( frcv(jpr_ts_ice)%z3(:,:,:) < -60. )   ;   tsfc_ice(:,:,:) = -60. 
    1271          ELSEWHERE                                        ;   tsfc_ice(:,:,:) = frcv(jpr_ts_ice)%z3(:,:,:) 
    1272          END WHERE 
    1273       ENDIF  
    1274 #endif 
    12751263      !                                                      ! ========================= !  
    12761264      !                                                      ! Mean Sea Level Pressure   !   (taum)  
     
    16481636      !!                   sprecip           solid precipitation over the ocean   
    16491637      !!---------------------------------------------------------------------- 
    1650       REAL(wp), INTENT(in), DIMENSION(:,:)             ::   picefr     ! ice fraction                [0 to 1] 
    1651       !                                                !!           ! optional arguments, used only in 'mixed oce-ice' case 
    1652       REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   palbi      ! all skies ice albedo  
    1653       REAL(wp), INTENT(in), DIMENSION(:,:  ), OPTIONAL ::   psst       ! sea surface temperature     [Celsius] 
    1654       REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   pist       ! ice surface temperature     [Kelvin] 
    1655       REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   phs        ! snow depth                  [m] 
    1656       REAL(wp), INTENT(in), DIMENSION(:,:,:), OPTIONAL ::   phi        ! ice thickness               [m] 
     1638      REAL(wp), INTENT(in)   , DIMENSION(:,:)             ::   picefr     ! ice fraction                [0 to 1] 
     1639      !                                                   !!           ! optional arguments, used only in 'mixed oce-ice' case or for Met-Office coupling 
     1640      REAL(wp), INTENT(in)   , DIMENSION(:,:,:), OPTIONAL ::   palbi      ! all skies ice albedo  
     1641      REAL(wp), INTENT(in)   , DIMENSION(:,:  ), OPTIONAL ::   psst       ! sea surface temperature     [Celsius] 
     1642      REAL(wp), INTENT(inout), DIMENSION(:,:,:), OPTIONAL ::   pist       ! ice surface temperature     [Kelvin] => inout for Met-Office 
     1643      REAL(wp), INTENT(in)   , DIMENSION(:,:,:), OPTIONAL ::   phs        ! snow depth                  [m] 
     1644      REAL(wp), INTENT(in)   , DIMENSION(:,:,:), OPTIONAL ::   phi        ! ice thickness               [m] 
    16571645      ! 
    16581646      INTEGER  ::   ji, jj, jl   ! dummy loop index 
     
    16621650      REAL(wp), DIMENSION(jpi,jpj)     ::   zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice 
    16631651      REAL(wp), DIMENSION(jpi,jpj)     ::   zevap_ice_total 
    1664       REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice, zevap_ice    !!gm , zfrqsr_tr_i 
     1652      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice, zevap_ice, zqtr_ice_top, ztsu 
    16651653      !!---------------------------------------------------------------------- 
    16661654      ! 
     
    20732061         ! 
    20742062         !                    ! ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) 
    2075          ztri = 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice    ! surface transmission parameter (Grenfell Maykut 77) 
     2063         ztri = 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice    ! surface transmission when hi>10cm (Grenfell Maykut 77) 
    20762064         ! 
    2077          qtr_ice_top(:,:,:) = ztri * qsr_ice(:,:,:) 
    2078          WHERE( phs(:,:,:) >= 0.0_wp )   qtr_ice_top(:,:,:) = 0._wp            ! snow fully opaque 
    2079          WHERE( phi(:,:,:) <= 0.1_wp )   qtr_ice_top(:,:,:) = qsr_ice(:,:,:)   ! thin ice transmits all solar radiation 
     2065         WHERE    ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) <  0.1_wp )       ! linear decrease from hi=0 to 10cm   
     2066            zqtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( ztri + ( 1._wp - ztri ) * ( 1._wp - phi(:,:,:) * 10._wp ) ) 
     2067         ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp )       ! constant (ztri) when hi>10cm 
     2068            zqtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ztri 
     2069         ELSEWHERE                                                         ! zero when hs>0 
     2070            zqtr_ice_top(:,:,:) = 0._wp 
     2071         END WHERE 
    20802072         !      
    20812073      ELSEIF( ln_cndflx .AND. .NOT.ln_cndemulate ) THEN      !==  conduction flux as surface forcing  ==! 
     
    20832075         !                    ! ===> here we must receive the qtr_ice_top array from the coupler 
    20842076         !                           for now just assume zero (fully opaque ice) 
    2085          qtr_ice_top(:,:,:) = 0._wp 
     2077         zqtr_ice_top(:,:,:) = 0._wp 
     2078         ! 
     2079      ENDIF 
     2080      ! 
     2081      IF( ln_mixcpl ) THEN 
     2082         DO jl=1,jpl 
     2083            qtr_ice_top(:,:,jl) = qtr_ice_top(:,:,jl) * xcplmask(:,:,0) + zqtr_ice_top(:,:,jl) * zmsk(:,:) 
     2084         ENDDO 
     2085      ELSE 
     2086         qtr_ice_top(:,:,:) = zqtr_ice_top(:,:,:) 
     2087      ENDIF 
     2088      !                                                      ! ================== ! 
     2089      !                                                      !   ice skin temp.   ! 
     2090      !                                                      ! ================== ! 
     2091      ! needed by Met Office 
     2092      IF( srcv(jpr_ts_ice)%laction ) THEN  
     2093         WHERE    ( frcv(jpr_ts_ice)%z3(:,:,:) > 0.0  )   ;   ztsu(:,:,:) = 0.0 + rt0  
     2094         ELSEWHERE( frcv(jpr_ts_ice)%z3(:,:,:) < -60. )   ;   ztsu(:,:,:) = -60. + rt0 
     2095         ELSEWHERE                                        ;   ztsu(:,:,:) = frcv(jpr_ts_ice)%z3(:,:,:) + rt0 
     2096         END WHERE 
     2097         ! 
     2098         IF( ln_mixcpl ) THEN 
     2099            DO jl=1,jpl 
     2100               pist(:,:,jl) = pist(:,:,jl) * xcplmask(:,:,0) + ztsu(:,:,jl) * zmsk(:,:) 
     2101            ENDDO 
     2102         ELSE 
     2103            pist(:,:,:) = ztsu(:,:,:) 
     2104         ENDIF 
    20862105         ! 
    20872106      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.