Changeset 1463
- Timestamp:
- 2009-06-09T16:45:31+02:00 (15 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/LIM_SRC_2/ice_2.F90
r1229 r1463 66 66 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: rdvonif !: Lateral Variation of ice volume (only used for outputs) 67 67 68 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: sist !: Sea-Ice Surface Temperature (Kelvin ??? degree ??? I don't know)68 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: sist !: Sea-Ice Surface Temperature (Kelvin) 69 69 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: tfu !: Freezing/Melting point temperature of sea water at SSS 70 70 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: hicif !: Ice thickness -
trunk/NEMO/LIM_SRC_2/iceini_2.F90
r1229 r1463 68 68 ENDIF 69 69 70 tn_ice(:,: ) = sist(:,:) ! initialisation of ice temperature70 tn_ice(:,:,1) = sist(:,:) ! initialisation of ice temperature 71 71 fr_i (:,:) = 1.0 - frld(:,:) ! initialisation of sea-ice fraction 72 72 # if defined key_coupled 73 alb_ice(:,: ) = albege(:,:) ! sea-ice albedo73 alb_ice(:,:,1) = albege(:,:) ! sea-ice albedo 74 74 # endif 75 75 ! -
trunk/NEMO/LIM_SRC_2/limsbc_2.F90
r1370 r1463 173 173 ! computation the solar flux at ocean surface 174 174 #if defined key_coupled 175 zqsr = qsr_tot(ji,jj) + ( fstric(ji,jj) - qsr_ice(ji,jj ) ) * ( 1.0 - pfrld(ji,jj) )175 zqsr = qsr_tot(ji,jj) + ( fstric(ji,jj) - qsr_ice(ji,jj,1) ) * ( 1.0 - pfrld(ji,jj) ) 176 176 #else 177 177 zqsr = pfrld(ji,jj) * qsr(ji,jj) + ( 1. - pfrld(ji,jj) ) * fstric(ji,jj) … … 286 286 IF ( lk_cpl ) THEN 287 287 ! Ice surface temperature 288 tn_ice(:,: ) = sist(:,:) ! sea-ice surface temperature288 tn_ice(:,:,1) = sist(:,:) ! sea-ice surface temperature 289 289 ! Computation of snow/ice and ocean albedo 290 290 ! INTERFACE 3D versus 2D … … 292 292 zhicif(:,:,1) = hicif(:,:) ; zhsnif(:,:,1) = hsnif(:,:) 293 293 CALL albedo_ice( zsist, zhicif, zhsnif, zalbp, zalb ) 294 alb_ice(:,: ) = 0.5 * ( zalbp(:,:,1) + zalb (:,:,1) ) ! Ice albedo (mean clear and overcast skys)294 alb_ice(:,:,1) = 0.5 * ( zalbp(:,:,1) + zalb (:,:,1) ) ! Ice albedo (mean clear and overcast skys) 295 295 ENDIF 296 296 … … 300 300 CALL prt_ctl(tab2d_1=utau , clinfo1=' lim_sbc: utau : ', mask1=umask, & 301 301 & tab2d_2=vtau , clinfo2=' vtau : ' , mask2=vmask ) 302 CALL prt_ctl(tab2d_1=fr_i , clinfo1=' lim_sbc: fr_i : ', tab2d_2=tn_ice , clinfo2=' tn_ice : ')302 CALL prt_ctl(tab2d_1=fr_i , clinfo1=' lim_sbc: fr_i : ', tab2d_2=tn_ice(:,:,1), clinfo2=' tn_ice : ') 303 303 ENDIF 304 304 -
trunk/NEMO/LIM_SRC_2/limthd_2.F90
r1228 r1463 195 195 zfi = 1.0 - pfrld(ji,jj) 196 196 qldif(ji,jj) = tms(ji,jj) * rdt_ice & 197 & * ( ( qsr_tot(ji,jj) - qsr_ice(ji,jj ) * zfi ) * ( 1.0 - thcm(ji,jj) ) &198 & + ( qns_tot(ji,jj) - qns_ice(ji,jj ) * zfi ) &197 & * ( ( qsr_tot(ji,jj) - qsr_ice(ji,jj,1) * zfi ) * ( 1.0 - thcm(ji,jj) ) & 198 & + ( qns_tot(ji,jj) - qns_ice(ji,jj,1) * zfi ) & 199 199 & + frld(ji,jj) * ( fdtcn(ji,jj) + ( 1.0 - zindb ) * fsbbq(ji,jj) ) ) 200 200 #else … … 261 261 ! 262 262 ! put the variable in a 1-D array for thermodynamics process 263 CALL tab_2d_1d_2( nbpb, frld_1d (1:nbpb) , frld , jpi, jpj, npb(1:nbpb) ) 264 CALL tab_2d_1d_2( nbpb, h_ice_1d (1:nbpb) , hicif , jpi, jpj, npb(1:nbpb) ) 265 CALL tab_2d_1d_2( nbpb, h_snow_1d (1:nbpb) , hsnif , jpi, jpj, npb(1:nbpb) ) 266 CALL tab_2d_1d_2( nbpb, sist_1d (1:nbpb) , sist , jpi, jpj, npb(1:nbpb) ) 267 CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 1 ), tbif(:,:,1), jpi, jpj, npb(1:nbpb) ) 268 CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 2 ), tbif(:,:,2), jpi, jpj, npb(1:nbpb) ) 269 CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 3 ), tbif(:,:,3), jpi, jpj, npb(1:nbpb) ) 270 CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb) , qsr_ice , jpi, jpj, npb(1:nbpb) ) 271 CALL tab_2d_1d_2( nbpb, fr1_i0_1d (1:nbpb) , fr1_i0 , jpi, jpj, npb(1:nbpb) ) 272 CALL tab_2d_1d_2( nbpb, fr2_i0_1d (1:nbpb) , fr2_i0 , jpi, jpj, npb(1:nbpb) ) 273 CALL tab_2d_1d_2( nbpb, qns_ice_1d (1:nbpb) , qns_ice , jpi, jpj, npb(1:nbpb) ) 263 CALL tab_2d_1d_2( nbpb, frld_1d (1:nbpb) , frld , jpi, jpj, npb(1:nbpb) ) 264 CALL tab_2d_1d_2( nbpb, h_ice_1d (1:nbpb) , hicif , jpi, jpj, npb(1:nbpb) ) 265 CALL tab_2d_1d_2( nbpb, h_snow_1d (1:nbpb) , hsnif , jpi, jpj, npb(1:nbpb) ) 266 CALL tab_2d_1d_2( nbpb, sist_1d (1:nbpb) , sist , jpi, jpj, npb(1:nbpb) ) 267 CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 1 ), tbif(:,:,1) , jpi, jpj, npb(1:nbpb) ) 268 CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 2 ), tbif(:,:,2) , jpi, jpj, npb(1:nbpb) ) 269 CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 3 ), tbif(:,:,3) , jpi, jpj, npb(1:nbpb) ) 270 CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb) , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) 271 CALL tab_2d_1d_2( nbpb, fr1_i0_1d (1:nbpb) , fr1_i0 , jpi, jpj, npb(1:nbpb) ) 272 CALL tab_2d_1d_2( nbpb, fr2_i0_1d (1:nbpb) , fr2_i0 , jpi, jpj, npb(1:nbpb) ) 273 CALL tab_2d_1d_2( nbpb, qns_ice_1d(1:nbpb) , qns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 274 CALL tab_2d_1d_2( nbpb, dqns_ice_1d(1:nbpb) , dqns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 274 275 IF( .NOT. lk_cpl ) THEN 275 CALL tab_2d_1d_2( nbpb, qla_ice_1d (1:nbpb) , qla_ice, jpi, jpj, npb(1:nbpb) )276 CALL tab_2d_1d_2( nbpb, dqla_ice_1d(1:nbpb) , dqla_ice 276 CALL tab_2d_1d_2( nbpb, qla_ice_1d (1:nbpb) , qla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 277 CALL tab_2d_1d_2( nbpb, dqla_ice_1d(1:nbpb) , dqla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) 277 278 ENDIF 278 CALL tab_2d_1d_2( nbpb, dqns_ice_1d(1:nbpb) , dqns_ice , jpi, jpj, npb(1:nbpb) )279 279 CALL tab_2d_1d_2( nbpb, tfu_1d (1:nbpb) , tfu , jpi, jpj, npb(1:nbpb) ) 280 280 CALL tab_2d_1d_2( nbpb, sprecip_1d (1:nbpb) , sprecip , jpi, jpj, npb(1:nbpb) ) -
trunk/NEMO/LIM_SRC_2/limwri_2.F90
r1359 r1463 158 158 zcmo(ji,jj,15) = utaui_ice(ji,jj) 159 159 zcmo(ji,jj,16) = vtaui_ice(ji,jj) 160 zcmo(ji,jj,17) = qsr_ice(ji,jj )161 zcmo(ji,jj,18) = qns_ice(ji,jj )160 zcmo(ji,jj,17) = qsr_ice(ji,jj,1) 161 zcmo(ji,jj,18) = qns_ice(ji,jj,1) 162 162 zcmo(ji,jj,19) = sprecip(ji,jj) 163 163 END DO -
trunk/NEMO/LIM_SRC_2/limwri_dimg_2.h90
r1156 r1463 123 123 zcmo(ji,jj,15) = utaui_ice(ji,jj) 124 124 zcmo(ji,jj,16) = vtaui_ice(ji,jj) 125 zcmo(ji,jj,17) = qsr_ice(ji,jj )126 zcmo(ji,jj,18) = qns_ice(ji,jj )125 zcmo(ji,jj,17) = qsr_ice(ji,jj,1) 126 zcmo(ji,jj,18) = qns_ice(ji,jj,1) 127 127 zcmo(ji,jj,19) = sprecip(ji,jj) 128 128 END DO … … 166 166 rcmoy(ji,jj,15) = utaui_ice(ji,jj) 167 167 rcmoy(ji,jj,16) = vtaui_ice(ji,jj) 168 rcmoy(ji,jj,17) = qsr_ice(ji,jj )169 rcmoy(ji,jj,18) = qns_ice(ji,jj )168 rcmoy(ji,jj,17) = qsr_ice(ji,jj,1) 169 rcmoy(ji,jj,18) = qns_ice(ji,jj,1) 170 170 rcmoy(ji,jj,19) = sprecip(ji,jj) 171 171 END DO -
trunk/NEMO/OPA_SRC/DIA/diawri.F90
r1417 r1463 575 575 CALL histwrite( nid_T, "soicealb", it, alb_ice , ndim_hT, ndex_hT ) ! ice albedo 576 576 # else 577 CALL histwrite( nid_T, "soicetem", it, tn_ice 578 CALL histwrite( nid_T, "soicealb", it, alb_ice 577 CALL histwrite( nid_T, "soicetem", it, tn_ice(:,:,1) , ndim_hT, ndex_hT ) ! surf. ice temperature 578 CALL histwrite( nid_T, "soicealb", it, alb_ice(:,:,1), ndim_hT, ndex_hT ) ! ice albedo 579 579 # endif 580 580 #endif -
trunk/NEMO/OPA_SRC/SBC/albedo.F90
r1208 r1463 64 64 !! References : Shine and Hendersson-Sellers 1985, JGR, 90(D1), 2243-2250. 65 65 !!---------------------------------------------------------------------- 66 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pt_ice ! ice surface temperature 66 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pt_ice ! ice surface temperature (Kelvin) 67 67 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: ph_ice ! sea-ice thickness 68 68 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: ph_snw ! snow thickness -
trunk/NEMO/OPA_SRC/SBC/sbc_ice.F90
r1226 r1463 14 14 USE par_ice ! ice parameters 15 15 #endif 16 #if defined key_lim2 17 USE par_ice_2 ! ice parameters 18 #endif 16 19 17 20 IMPLICIT NONE 18 21 PRIVATE 19 22 20 #if defined key_lim321 23 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) :: qns_ice !: non solar heat flux over ice [W/m2] 22 24 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) :: qsr_ice !: solar heat flux over ice [W/m2] … … 26 28 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) :: tn_ice !: ice surface temperature [K] 27 29 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpl) :: alb_ice !: albedo of ice 28 #else29 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: qns_ice !: non solar heat flux over ice [W/m2]30 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: qsr_ice !: solar heat flux over ice [W/m2]31 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: qla_ice !: latent flux over ice32 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: dqla_ice !: latent sensibility over ice33 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: dqns_ice !: non solar heat flux sensibility over ice (LW+SEN+LA) [W/m2/K]34 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: tn_ice !: ice surface temperature [K]35 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: alb_ice !: albedo of ice36 #endif37 30 38 31 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: utaui_ice !: u-stress over ice (I-point) [N/m2] -
trunk/NEMO/OPA_SRC/SBC/sbccpl.F90
r1308 r1463 816 816 817 817 818 SUBROUTINE sbc_cpl_ice_flx( p_frld, palbi , psst , pist, & 819 & pqns_tot, pqns_ice, & 820 & pqsr_tot, pqsr_ice, & 821 & pemp_tot, pemp_ice, pdqns_ice, psprecip ) 818 SUBROUTINE sbc_cpl_ice_flx( p_frld , palbi , psst , pist , & 819 & pqns_tot, pqns_ice, pqsr_tot , pqsr_ice, & 820 & pemp_tot, pemp_ice, pdqns_ice, psprecip ) 822 821 !!---------------------------------------------------------------------- 823 822 !! *** ROUTINE sbc_cpl_ice_flx_rcv *** … … 863 862 !! wndm 10m wind module 864 863 !!---------------------------------------------------------------------- 865 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj ) :: p_frld ! lead fraction [0 to 1]866 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj ) :: palbi ! ice albedo867 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj ) :: psst ! sea surface temperature [Celcius]868 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj ) :: pist ! ice surface temperature [Kelvin]869 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pqns_tot ! total non solar heat flux [W/m2]870 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pqns_ice ! ice non solar heat flux [W/m2]871 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pqsr_tot ! total solar heat flux [W/m2]872 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pqsr_ice ! ice solar heat flux [W/m2]873 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pemp_tot ! total freshwater budget [Kg/m2/s]874 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pemp_ice ! solid freshwater budget over ice [Kg/m2/s]875 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: psprecip ! Net solid precipitation (=emp_ice) [Kg/m2/s]876 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pdqns_ice ! d(Q non solar)/d(Temperature) over ice864 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpl) :: p_frld ! lead fraction [0 to 1] 865 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpl) :: palbi ! ice albedo 866 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj ) :: psst ! sea surface temperature [Celcius] 867 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpl) :: pist ! ice surface temperature [Kelvin] 868 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pqns_tot ! total non solar heat flux [W/m2] 869 REAL(wp), INTENT( out), DIMENSION(jpi,jpj,jpl) :: pqns_ice ! ice non solar heat flux [W/m2] 870 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pqsr_tot ! total solar heat flux [W/m2] 871 REAL(wp), INTENT( out), DIMENSION(jpi,jpj,jpl) :: pqsr_ice ! ice solar heat flux [W/m2] 872 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pemp_tot ! total freshwater budget [Kg/m2/s] 873 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: pemp_ice ! solid freshwater budget over ice [Kg/m2/s] 874 REAL(wp), INTENT( out), DIMENSION(jpi,jpj ) :: psprecip ! Net solid precipitation (=emp_ice) [Kg/m2/s] 875 REAL(wp), INTENT( out), DIMENSION(jpi,jpj,jpl) :: pdqns_ice ! d(Q non solar)/d(Temperature) over ice 877 876 !! 878 877 INTEGER :: ji, jj ! dummy loop indices … … 895 894 zsnow (:,:) = frcv(:,:,jpr_snow) 896 895 CASE( 'oce and ice' ) ! received fields: jpr_sbpr, jpr_semp, jpr_oemp 897 pemp_tot(:,:) = p_frld(:,: ) * frcv(:,:,jpr_oemp) + (1.- p_frld(:,:)) * frcv(:,:,jpr_sbpr)896 pemp_tot(:,:) = p_frld(:,:,1) * frcv(:,:,jpr_oemp) + (1.- p_frld(:,:,1)) * frcv(:,:,jpr_sbpr) 898 897 pemp_ice(:,:) = frcv(:,:,jpr_semp) 899 898 zsnow (:,:) = - frcv(:,:,jpr_semp) + frcv(:,:,jpr_ievp) … … 925 924 ! ! ========================= ! 926 925 CASE( 'conservative' ) ! the required fields are directly provided 927 pqns_tot(:,: ) = frcv(:,:,jpr_qnsmix)928 pqns_ice(:,: ) = frcv(:,:,jpr_qnsice)926 pqns_tot(:,: ) = frcv(:,:,jpr_qnsmix) 927 pqns_ice(:,:,1) = frcv(:,:,jpr_qnsice) 929 928 CASE( 'oce and ice' ) ! the total flux is computed from ocean and ice fluxes 930 pqns_tot(:,: ) = p_frld(:,:) * frcv(:,:,jpr_qnsoce) + ( 1.- p_frld(:,:) ) * frcv(:,:,jpr_qnsice)931 pqns_ice(:,: ) = frcv(:,:,jpr_qnsice)929 pqns_tot(:,: ) = p_frld(:,:,1) * frcv(:,:,jpr_qnsoce) + ( 1.- p_frld(:,:,1) ) * frcv(:,:,jpr_qnsice) 930 pqns_ice(:,:,1) = frcv(:,:,jpr_qnsice) 932 931 CASE( 'mixed oce-ice' ) ! the ice flux is cumputed from the total flux, the SST and ice informations 933 pqns_tot(:,:) = frcv(:,:,jpr_qnsmix) 934 pqns_ice(:,:) = frcv(:,:,jpr_qnsmix) & 935 & + frcv(:,:,jpr_dqnsdt) * ( pist(:,:) - ( (rt0 + psst(:,:))*p_frld(:,:) + pist(:,:)*(1. - p_frld(:,:)) ) ) 932 pqns_tot(:,: ) = frcv(:,:,jpr_qnsmix) 933 pqns_ice(:,:,1) = frcv(:,:,jpr_qnsmix) & 934 & + frcv(:,:,jpr_dqnsdt) * ( pist(:,:,1) - ( (rt0 + psst(:,: ) ) * p_frld(:,:,1) & 935 & + pist(:,:,1) * ( 1. - p_frld(:,:,1) ) ) ) 936 936 END SELECT 937 937 ! ! snow melting heat flux .... 938 938 ! energy for melting solid precipitation over free ocean 939 939 zcoef = xlsn / rhosn 940 pqns_tot(:,:) = pqns_tot(:,:) - p_frld(:,: ) * zsnow(:,:) * zcoef940 pqns_tot(:,:) = pqns_tot(:,:) - p_frld(:,:,1) * zsnow(:,:) * zcoef 941 941 !!gm 942 942 !! currently it is taken into account in leads budget but not in the qns_tot, and thus not in … … 951 951 ! ! ========================= ! 952 952 CASE( 'conservative' ) 953 pqsr_tot(:,: ) = frcv(:,:,jpr_qsrmix)954 pqsr_ice(:,: ) = frcv(:,:,jpr_qsrice)953 pqsr_tot(:,: ) = frcv(:,:,jpr_qsrmix) 954 pqsr_ice(:,:,1) = frcv(:,:,jpr_qsrice) 955 955 CASE( 'oce and ice' ) 956 pqsr_tot(:,: ) = p_frld(:,:) * frcv(:,:,jpr_qsroce) + ( 1.- p_frld(:,:) ) * frcv(:,:,jpr_qsrice)957 pqsr_ice(:,: ) = frcv(:,:,jpr_qsrice)956 pqsr_tot(:,: ) = p_frld(:,:,1) * frcv(:,:,jpr_qsroce) + ( 1.- p_frld(:,:,1) ) * frcv(:,:,jpr_qsrice) 957 pqsr_ice(:,:,1) = frcv(:,:,jpr_qsrice) 958 958 CASE( 'mixed oce-ice' ) 959 pqsr_tot(:,: ) = frcv(:,:,jpr_qsrmix)959 pqsr_tot(:,: ) = frcv(:,:,jpr_qsrmix) 960 960 ! Create solar heat flux over ice using incoming solar heat flux and albedos 961 961 ! ( see OASIS3 user guide, 5th edition, p39 ) 962 pqsr_ice(:,: ) = frcv(:,:,jpr_qsrmix) * ( 1.- palbi(:,:) ) &963 & / ( 1.- ( albedo_oce_mix(:,:) * ( 1.- p_frld(:,:) ) &964 & + palbi (:,:) * p_frld(:,:) ) )962 pqsr_ice(:,:,1) = frcv(:,:,jpr_qsrmix) * ( 1.- palbi(:,:,1) ) & 963 & / ( 1.- ( albedo_oce_mix(:,: ) * ( 1.- p_frld(:,:,1) ) & 964 & + palbi (:,:,1) * p_frld(:,:,1) ) ) 965 965 END SELECT 966 966 … … 968 968 SELECT CASE( TRIM( cn_rcv_dqnsdt ) ) 969 969 CASE ('coupled') 970 pdqns_ice(:,: ) = frcv(:,:,jpr_dqnsdt)970 pdqns_ice(:,:,1) = frcv(:,:,jpr_dqnsdt) 971 971 END SELECT 972 972 … … 1009 1009 CASE( 'oce only' ) ; ztmp1(:,:) = tn(:,:,1) + rt0 1010 1010 CASE( 'weighted oce and ice' ) ; ztmp1(:,:) = ( tn(:,:,1) + rt0 ) * zfr_l(:,:) 1011 ztmp2(:,:) = tn_ice(:,: )* fr_i(:,:)1012 CASE( 'mixed oce-ice' ) ; ztmp1(:,:) = ( tn(:,:,1) + rt0 ) * zfr_l(:,:) + tn_ice(:,: ) * fr_i(:,:)1011 ztmp2(:,:) = tn_ice(:,:,1) * fr_i(:,:) 1012 CASE( 'mixed oce-ice' ) ; ztmp1(:,:) = ( tn(:,:,1) + rt0 ) * zfr_l(:,:) + tn_ice(:,:,1) * fr_i(:,:) 1013 1013 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of cn_snd_temperature' ) 1014 1014 END SELECT … … 1021 1021 ! ! ------------------------- ! 1022 1022 IF( ssnd(jps_albice)%laction ) THEN ! ice 1023 ztmp1(:,:) = alb_ice(:,: ) * fr_i(:,:)1023 ztmp1(:,:) = alb_ice(:,:,1) * fr_i(:,:) 1024 1024 CALL cpl_prism_snd( jps_albice, isec, ztmp1, info ) 1025 1025 ENDIF 1026 1026 IF( ssnd(jps_albmix)%laction ) THEN ! mixed ice-ocean 1027 ztmp1(:,:) = albedo_oce_mix(:,:) * zfr_l(:,:) + alb_ice(:,: ) * fr_i(:,:)1027 ztmp1(:,:) = albedo_oce_mix(:,:) * zfr_l(:,:) + alb_ice(:,:,1) * fr_i(:,:) 1028 1028 CALL cpl_prism_snd( jps_albmix, isec, ztmp1, info ) 1029 1029 ENDIF … … 1155 1155 END SUBROUTINE sbc_cpl_ice_tau 1156 1156 ! 1157 SUBROUTINE sbc_cpl_ice_flx( p_frld, palbi , psst , pist, & 1158 & pqns_tot, pqns_ice, & 1159 & pqsr_tot, pqsr_ice, & 1160 & pemp_tot, pemp_ice, pdqns_ice, psprecip ) 1161 REAL(wp), INTENT(in ), DIMENSION(:,:) :: p_frld ! lead fraction [0 to 1] 1162 REAL(wp), INTENT(in ), DIMENSION(:,:) :: palbi ! ice albedo 1163 REAL(wp), INTENT(in ), DIMENSION(:,:) :: psst ! sea surface temperature [Celcius] 1164 REAL(wp), INTENT(in ), DIMENSION(:,:) :: pist ! ice surface temperature [Celcius] 1165 REAL(wp), INTENT( out), DIMENSION(:,:) :: pqns_tot ! total non solar heat flux [W/m2] 1166 REAL(wp), INTENT( out), DIMENSION(:,:) :: pqns_ice ! ice non solar heat flux [W/m2] 1167 REAL(wp), INTENT( out), DIMENSION(:,:) :: pqsr_tot ! total solar heat flux [W/m2] 1168 REAL(wp), INTENT( out), DIMENSION(:,:) :: pqsr_ice ! ice solar heat flux [W/m2] 1169 REAL(wp), INTENT( out), DIMENSION(:,:) :: pemp_tot ! total freshwater budget [Kg/m2/s] 1170 REAL(wp), INTENT( out), DIMENSION(:,:) :: pemp_ice ! ice solid freshwater budget [Kg/m2/s] 1171 REAL(wp), INTENT( out), DIMENSION(:,:) :: pdqns_ice ! d(Q non solar)/d(Temperature) over ice 1172 REAL(wp), INTENT( out), DIMENSION(:,:) :: psprecip ! solid precipitation [Kg/m2/s] 1173 WRITE(*,*) 'sbc_cpl_snd: You should not have seen this print! error?', p_frld(1,1), palbi(1,1), psst(1,1), pist(1,1) 1157 SUBROUTINE sbc_cpl_ice_flx( p_frld , palbi , psst , pist , & 1158 & pqns_tot, pqns_ice, pqsr_tot , pqsr_ice, & 1159 & pemp_tot, pemp_ice, pdqns_ice, psprecip ) 1160 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: p_frld ! lead fraction [0 to 1] 1161 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: palbi ! ice albedo 1162 REAL(wp), INTENT(in ), DIMENSION(:,: ) :: psst ! sea surface temperature [Celcius] 1163 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pist ! ice surface temperature [Kelvin] 1164 REAL(wp), INTENT( out), DIMENSION(:,: ) :: pqns_tot ! total non solar heat flux [W/m2] 1165 REAL(wp), INTENT( out), DIMENSION(:,:,:) :: pqns_ice ! ice non solar heat flux [W/m2] 1166 REAL(wp), INTENT( out), DIMENSION(:,: ) :: pqsr_tot ! total solar heat flux [W/m2] 1167 REAL(wp), INTENT( out), DIMENSION(:,:,:) :: pqsr_ice ! ice solar heat flux [W/m2] 1168 REAL(wp), INTENT( out), DIMENSION(:,: ) :: pemp_tot ! total freshwater budget [Kg/m2/s] 1169 REAL(wp), INTENT( out), DIMENSION(:,: ) :: pemp_ice ! ice solid freshwater budget [Kg/m2/s] 1170 REAL(wp), INTENT( out), DIMENSION(:,:,:) :: pdqns_ice ! d(Q non solar)/d(Temperature) over ice 1171 REAL(wp), INTENT( out), DIMENSION(:,: ) :: psprecip ! solid precipitation [Kg/m2/s] 1172 WRITE(*,*) 'sbc_cpl_snd: You should not have seen this print! error?', p_frld(1,1,1), palbi(1,1,1), psst(1,1), pist(1,1,1) 1174 1173 ! stupid definition to avoid warning message when compiling... 1175 pqns_tot(:,:) = 0. ; pqns_ice(:,: ) = 0. ; pdqns_ice(:,:) = 0.1176 pqsr_tot(:,:) = 0. ; pqsr_ice(:,: ) = 0.1177 pemp_tot(:,:) = 0. ; pemp_ice(:,:) = 0. ; psprecip(:,:) = 0.1174 pqns_tot(:,:) = 0. ; pqns_ice(:,:,:) = 0. ; pdqns_ice(:,:,:) = 0. 1175 pqsr_tot(:,:) = 0. ; pqsr_ice(:,:,:) = 0. 1176 pemp_tot(:,:) = 0. ; pemp_ice(:,:) = 0. ; psprecip(:,:) = 0. 1178 1177 END SUBROUTINE sbc_cpl_ice_flx 1179 1178 -
trunk/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r1347 r1463 92 92 !! 93 93 INTEGER :: ji, jj ! dummy loop indices 94 REAL(wp), DIMENSION(jpi,jpj,1) :: alb_ice_os ! albedo of the ice under overcast sky95 REAL(wp), DIMENSION(jpi,jpj,1) :: alb_ice_cs ! albedo of ice under clear sky94 REAL(wp), DIMENSION(jpi,jpj,1) :: zalb_ice_os ! albedo of the ice under overcast sky 95 REAL(wp), DIMENSION(jpi,jpj,1) :: zalb_ice_cs ! albedo of ice under clear sky 96 96 REAL(wp), DIMENSION(jpi,jpj,1) :: zsist ! surface ice temperature (K) 97 REAL(wp), DIMENSION(jpi,jpj,1) :: zhicif ! ice thickness98 REAL(wp), DIMENSION(jpi,jpj,1) :: zhsnif ! snow thickness99 REAL(wp), DIMENSION(jpi,jpj,1) :: zqns_ice ! non solar sea-ice heat flux100 REAL(wp), DIMENSION(jpi,jpj,1) :: zqsr_ice ! solar sea-ice heat flux101 REAL(wp), DIMENSION(jpi,jpj,1) :: zqla_ice ! ice latent heat flux102 REAL(wp), DIMENSION(jpi,jpj,1) :: zdqns_ice ! sensitivity ice net heat flux103 REAL(wp), DIMENSION(jpi,jpj,1) :: zdqla_ice ! sensitivity ice latent heat flux104 97 !!---------------------------------------------------------------------- 105 98 … … 130 123 131 124 zsist (:,:,1) = sist (:,:) + rt0 * ( 1. - tmask(:,:,1) ) 132 zhicif(:,:,1) = hicif(:,:)133 zhsnif(:,:,1) = hsnif(:,:)134 125 135 126 ! ... ice albedo (clear sky and overcast sky) 136 CALL albedo_ice( zsist, zhicif, zhsnif, alb_ice_cs,alb_ice_os )127 CALL albedo_ice( zsist, reshape( hicif, (/jpi,jpj,1/) ), reshape( hsnif, (/jpi,jpj,1/) ), zalb_ice_cs, zalb_ice_os ) 137 128 138 129 ! ... Sea-ice surface boundary conditions output from bulk formulae : … … 151 142 SELECT CASE( ksbc ) 152 143 CASE( 3 ) ! CLIO bulk formulation 153 CALL blk_ice_clio( zsist, alb_ice_cs, alb_ice_os ,&154 & utaui_ice , vtaui_ice , zqns_ice , zqsr_ice,&155 & zqla_ice , zdqns_ice , zdqla_ice , &156 & tprecip , sprecip ,&157 & fr1_i0 , fr2_i0, cl_grid, jpl )144 CALL blk_ice_clio( zsist, zalb_ice_cs, zalb_ice_os , & 145 & utaui_ice , vtaui_ice , qns_ice , qsr_ice, & 146 & qla_ice , dqns_ice , dqla_ice , & 147 & tprecip , sprecip , & 148 & fr1_i0 , fr2_i0 , cl_grid, jpl ) 158 149 159 150 CASE( 4 ) ! CORE bulk formulation 160 CALL blk_ice_core( zsist, ui_ice , vi_ice , alb_ice_cs,&161 & utaui_ice , vtaui_ice , zqns_ice , zqsr_ice, &162 & zqla_ice , zdqns_ice , zdqla_ice ,&163 & tprecip , sprecip , 151 CALL blk_ice_core( zsist, ui_ice , vi_ice , zalb_ice_cs, & 152 & utaui_ice , vtaui_ice , qns_ice , qsr_ice, & 153 & qla_ice , dqns_ice , dqla_ice , & 154 & tprecip , sprecip , & 164 155 & fr1_i0 , fr2_i0 , cl_grid, jpl ) 165 156 CASE( 5 ) ! Coupled formulation : atmosphere-ice stress only (fluxes provided after ice dynamics) 166 157 CALL sbc_cpl_ice_tau( utaui_ice , vtaui_ice ) 167 158 END SELECT 168 169 qsr_ice(:,:) = zqsr_ice(:,:,1)170 qns_ice(:,:) = zqns_ice(:,:,1) ; dqns_ice(:,:) = zdqns_ice(:,:,1)171 qla_ice(:,:) = zqla_ice(:,:,1) ; dqla_ice(:,:) = zdqla_ice(:,:,1)172 159 173 160 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 198 185 ENDIF 199 186 #if defined key_coupled 200 IF( ksbc == 5 ) CALL sbc_cpl_ice_flx( frld, alb_ice_cs , sst_m, sist, & 201 & qns_tot, qns_ice, & 202 & qsr_tot, qsr_ice, & 203 & emp_tot, emp_ice, dqns_ice, sprecip ) 187 IF( ksbc == 5 ) CALL sbc_cpl_ice_flx( frld , zalb_ice_cs , sst_m , sist , & 188 & qns_tot, qns_ice , qsr_tot , qsr_ice, & 189 & emp_tot, emp_ice , dqns_ice, sprecip ) 204 190 #endif 205 191 CALL lim_thd_2 ( kt ) ! Ice thermodynamics
Note: See TracChangeset
for help on using the changeset viewer.