- Timestamp:
- 2020-02-14T17:41:07+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.1_fix_cpl/src/OCE/SBC/sbccpl.F90
r12373 r12388 1261 1261 IF( srcv(jpr_co2)%laction ) atm_co2(:,:) = frcv(jpr_co2)%z3(:,:,1) 1262 1262 ! 1263 ! ! ================== !1264 ! ! ice skin temp. !1265 ! ! ================== !1266 #if defined key_si31267 ! needed by Met Office1268 IF( srcv(jpr_ts_ice)%laction ) THEN1269 WHERE ( frcv(jpr_ts_ice)%z3(:,:,:) > 0.0 ) ; tsfc_ice(:,:,:) = 0.01270 ELSEWHERE( frcv(jpr_ts_ice)%z3(:,:,:) < -60. ) ; tsfc_ice(:,:,:) = -60.1271 ELSEWHERE ; tsfc_ice(:,:,:) = frcv(jpr_ts_ice)%z3(:,:,:)1272 END WHERE1273 ENDIF1274 #endif1275 1263 ! ! ========================= ! 1276 1264 ! ! Mean Sea Level Pressure ! (taum) … … 1648 1636 !! sprecip solid precipitation over the ocean 1649 1637 !!---------------------------------------------------------------------- 1650 REAL(wp), INTENT(in) , DIMENSION(:,:) :: picefr ! ice fraction [0 to 1]1651 ! !! ! optional arguments, used only in 'mixed oce-ice' case1652 REAL(wp), INTENT(in) , DIMENSION(:,:,:), OPTIONAL :: palbi ! all skies ice albedo1653 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] 1657 1645 ! 1658 1646 INTEGER :: ji, jj, jl ! dummy loop index … … 1662 1650 REAL(wp), DIMENSION(jpi,jpj) :: zqns_tot, zqns_oce, zqsr_tot, zqsr_oce, zqprec_ice, zqemp_oce, zqemp_ice 1663 1651 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_i1652 REAL(wp), DIMENSION(jpi,jpj,jpl) :: zqns_ice, zqsr_ice, zdqns_ice, zqevap_ice, zevap_ice, zqtr_ice_top, ztsu 1665 1653 !!---------------------------------------------------------------------- 1666 1654 ! … … 2073 2061 ! 2074 2062 ! ! ===> 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) 2076 2064 ! 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 2080 2072 ! 2081 2073 ELSEIF( ln_cndflx .AND. .NOT.ln_cndemulate ) THEN !== conduction flux as surface forcing ==! … … 2083 2075 ! ! ===> here we must receive the qtr_ice_top array from the coupler 2084 2076 ! 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 2086 2105 ! 2087 2106 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.