Changeset 11304 for NEMO/branches/2019
- Timestamp:
- 2019-07-18T17:17:50+02:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src/ICE/icesbc.F90
r10535 r11304 71 71 SELECT CASE( ksbc ) 72 72 CASE( jp_usr ) ; CALL usrdef_sbc_ice_tau( kt ) ! user defined formulation 73 CASE( jp_blk ) ; CALL blk_ice_tau ! Bulk formulation 73 CASE( jp_blk ) ; CALL blk_ice_1( sf(jp_wndi)%fnow(:,:,1), sf(jp_wndj)%fnow(:,:,1), & 74 & sf(jp_tair)%fnow(:,:,1), sf(jp_humi)%fnow(:,:,1), sf(jp_slp)%fnow(:,:,1), & 75 & u_ice, v_ice, & ! inputs 76 & putaui = utau_ice, pvtaui = vtau_ice ) ! outputs ! Bulk formulation 74 77 CASE( jp_purecpl ) ; CALL sbc_cpl_ice_tau( utau_ice , vtau_ice ) ! Coupled formulation 75 78 END SELECT … … 140 143 CALL usrdef_sbc_ice_flx( kt, h_s, h_i ) 141 144 CASE( jp_blk ) !--- bulk formulation 142 CALL blk_ice_flx ( t_su, h_s, h_i, alb_ice ) ! 145 CALL blk_ice_2 ( t_su, h_s, h_i, alb_ice, sf(jp_tair)%fnow(:,:,1), sf(jp_humi)%fnow(:,:,1), & 146 & sf(jp_slp)%fnow(:,:,1), sf(jp_qlw)%fnow(:,:,1), sf(jp_prec)%fnow(:,:,1), sf(jp_snow)%fnow(:,:,1) ) ! 143 147 IF( ln_mixcpl ) CALL sbc_cpl_ice_flx( picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su, phs=h_s, phi=h_i ) 144 148 IF( nn_flxdist /= -1 ) CALL ice_flx_dist ( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_flxdist ) -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src/OCE/IOM/iom.F90
r11275 r11304 29 29 USE lib_mpp ! MPP library 30 30 #if defined key_iomput 31 USE sbc_oce , ONLY : nn_fsbc, ght_abl, ghw_abl, e3 w_abl, jpka, jpkam131 USE sbc_oce , ONLY : nn_fsbc, ght_abl, ghw_abl, e3t_abl, e3w_abl, jpka, jpkam1 32 32 USE trc_oce , ONLY : nn_dttrc ! frequency of step on passive tracers 33 33 USE icb_oce , ONLY : nclasses, class_num ! iceberg classes -
NEMO/branches/2019/dev_r11265_ASINTER-01_Guillaume_ABL1D/src/OCE/SBC/sbcblk.F90
r11275 r11304 31 31 !! L_vap : latent heat of vaporization of water as a function of temperature 32 32 !! sea-ice case only : 33 !! blk_ice_ tau: provide the air-ice stress34 !! blk_ice_ flx: provide the heat and mass fluxes at air-ice interface33 !! blk_ice_1 : provide the air-ice stress 34 !! blk_ice_2 : provide the heat and mass fluxes at air-ice interface 35 35 !! blk_ice_qcn : provide ice surface temperature and snow/ice conduction flux (emulating conduction flux) 36 36 !! Cdn10_Lupkes2012 : Lupkes et al. (2012) air-ice drag … … 48 48 USE lib_fortran ! to use key_nosignedzero 49 49 #if defined key_si3 50 USE ice , ONLY : u_ice, v_ice,jpl, a_i_b, at_i_b, t_su, rn_cnd_s, hfx_err_dif50 USE ice , ONLY : jpl, a_i_b, at_i_b, t_su, rn_cnd_s, hfx_err_dif 51 51 USE icethd_dh ! for CALL ice_thd_snwblow 52 52 #endif … … 72 72 PUBLIC cp_air ! called in ablmod 73 73 #if defined key_si3 74 PUBLIC blk_ice_ tau! routine called in icesbc75 PUBLIC blk_ice_ flx! routine called in icesbc74 PUBLIC blk_ice_1 ! routine called in icesbc 75 PUBLIC blk_ice_2 ! routine called in icesbc 76 76 PUBLIC blk_ice_qcn ! routine called in icesbc 77 77 #endif … … 83 83 !!Lolo: should ultimately be moved in the module with all physical constants ? 84 84 !!gm : In principle, yes. 85 REAL(wp) , PARAMETER :: Cp_dry = 1005.0 !: Specic heat of dry air, constant pressure [J/K/kg]86 REAL(wp) , PARAMETER :: Cp_vap = 1860.0 !: Specic heat of water vapor, constant pressure [J/K/kg]87 REAL(wp), P ARAMETER :: R_dry = 287.05_wp !: Specific gas constant for dry air [J/K/kg]88 REAL(wp) , PARAMETER :: R_vap = 461.495_wp !: Specific gas constant for water vapor [J/K/kg]89 REAL(wp) , PARAMETER :: reps0 = R_dry/R_vap !: ratio of gas constant for dry air and water vapor => ~ 0.62290 REAL(wp), P ARAMETER :: rctv0 = R_vap/R_dry !: for virtual temperature (== (1-eps)/eps) => ~ 0.60885 REAL(wp) , PARAMETER :: Cp_dry = 1005.0 !: Specic heat of dry air, constant pressure [J/K/kg] 86 REAL(wp) , PARAMETER :: Cp_vap = 1860.0 !: Specic heat of water vapor, constant pressure [J/K/kg] 87 REAL(wp), PUBLIC, PARAMETER :: R_dry = 287.05_wp !: Specific gas constant for dry air [J/K/kg] 88 REAL(wp) , PARAMETER :: R_vap = 461.495_wp !: Specific gas constant for water vapor [J/K/kg] 89 REAL(wp) , PARAMETER :: reps0 = R_dry/R_vap !: ratio of gas constant for dry air and water vapor => ~ 0.622 90 REAL(wp), PUBLIC, PARAMETER :: rctv0 = R_vap/R_dry !: for virtual temperature (== (1-eps)/eps) => ~ 0.608 91 91 92 92 INTEGER , PUBLIC, PARAMETER :: jpfld =11 !: maximum number of files to read … … 118 118 LOGICAL :: ln_ECMWF ! "ECMWF" algorithm (IFS cycle 31) 119 119 ! 120 REAL(wp) :: rn_pfac ! multiplication factor for precipitation121 REAL(wp) :: rn_efac !multiplication factor for evaporation122 REAL(wp) :: rn_vfac !multiplication factor for ice/ocean velocity in the calculation of wind stress120 REAL(wp) :: rn_pfac ! multiplication factor for precipitation 121 REAL(wp), PUBLIC :: rn_efac !: multiplication factor for evaporation 122 REAL(wp), PUBLIC :: rn_vfac !: multiplication factor for ice/ocean velocity in the calculation of wind stress 123 123 REAL(wp) :: rn_zqt ! z(q,t) : height of humidity and temperature measurements 124 124 REAL(wp) :: rn_zu ! z(u) : height of wind measurements … … 224 224 slf_i(jp_tair) = sn_tair ; slf_i(jp_humi) = sn_humi 225 225 slf_i(jp_prec) = sn_prec ; slf_i(jp_snow) = sn_snow 226 slf_i(jp_slp )= sn_slp226 slf_i(jp_slp ) = sn_slp 227 227 slf_i(jp_hpgi) = sn_hpgi ; slf_i(jp_hpgj) = sn_hpgj 228 228 ! … … 506 506 !!gm to be done by someone: check the efficiency of the call of cp_air within do loops 507 507 psen (ji,jj) = cp_air( q_zu(ji,jj) ) * zztmp * Ch_atm(ji,jj) * ( zst(ji,jj) - t_zu(ji,jj) ) 508 pevp (ji,jj) = rn_efac*MAX( 0._wp, 508 pevp (ji,jj) = rn_efac*MAX( 0._wp, zztmp * Ce_atm(ji,jj) * ( pssq(ji,jj) - q_zu(ji,jj) ) ) 509 509 zztmp = zztmp * Cd_atm(ji,jj) 510 510 pcd_du(ji,jj) = zztmp … … 615 615 zz2 = rn_pfac * rcp 616 616 zz3 = rn_pfac * rcpi 617 zztmp = 1._wp - albo 617 618 qns(:,:) = ( zqlw(:,:) - psen(:,:) - zqla(:,:) & ! Downward Non Solar 618 619 & - psnow(:,:) * zztmp & ! remove latent melting heat for solid precip … … 788 789 !! 'key_si3' SI3 sea-ice model 789 790 !!---------------------------------------------------------------------- 790 !! blk_ice_ tau: provide the air-ice stress791 !! blk_ice_ flx: provide the heat and mass fluxes at air-ice interface791 !! blk_ice_1 : provide the air-ice stress 792 !! blk_ice_2 : provide the heat and mass fluxes at air-ice interface 792 793 !! blk_ice_qcn : provide ice surface temperature and snow/ice conduction flux (emulating conduction flux) 793 794 !! Cdn10_Lupkes2012 : Lupkes et al. (2012) air-ice drag … … 795 796 !!---------------------------------------------------------------------- 796 797 797 SUBROUTINE blk_ice_tau 798 !!--------------------------------------------------------------------- 799 !! *** ROUTINE blk_ice_tau *** 798 SUBROUTINE blk_ice_1( pwndi, pwndj, ptair, phumi, pslp , puice, pvice, & ! inputs 799 & putaui, pvtaui, pseni, pevpi, ptsui, pssqi, pcd_dui ) ! outputs 800 !!--------------------------------------------------------------------- 801 !! *** ROUTINE blk_ice_1 *** 800 802 !! 801 803 !! ** Purpose : provide the surface boundary condition over sea-ice … … 805 807 !! NB: ice drag coefficient is assumed to be a constant 806 808 !!--------------------------------------------------------------------- 809 REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pslp ! sea-level pressure [Pa] 810 REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pwndi ! atmospheric wind at T-point [m/s] 811 REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pwndj ! atmospheric wind at T-point [m/s] 812 REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: ptair ! atmospheric wind at T-point [m/s] 813 REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: phumi ! atmospheric wind at T-point [m/s] 814 REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: puice ! sea-ice velocity on I or C grid [m/s] 815 REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pvice ! " 816 REAL(wp) , INTENT( out), DIMENSION(:,: ), OPTIONAL :: putaui ! if ln_blk 817 REAL(wp) , INTENT( out), DIMENSION(:,: ), OPTIONAL :: pvtaui ! if ln_blk 818 REAL(wp) , INTENT( out), DIMENSION(:,: ), OPTIONAL :: pseni ! if ln_abl 819 REAL(wp) , INTENT( out), DIMENSION(:,: ), OPTIONAL :: pevpi ! if ln_abl 820 REAL(wp) , INTENT(in ), DIMENSION(:,: ), OPTIONAL :: ptsui ! if ln_abl 821 REAL(wp) , INTENT( out), DIMENSION(:,: ), OPTIONAL :: pssqi ! if ln_abl 822 REAL(wp) , INTENT( out), DIMENSION(:,: ), OPTIONAL :: pcd_dui ! if ln_abl 823 ! 807 824 INTEGER :: ji, jj ! dummy loop indices 808 REAL(wp) :: zwndi_f , zwndj_f, zwnorm_f ! relative wind module and components at F-point809 825 REAL(wp) :: zwndi_t , zwndj_t ! relative wind components at T-point 810 826 REAL(wp), DIMENSION(jpi,jpj) :: zrhoa ! transfer coefficient for momentum (tau) 827 REAL(wp), DIMENSION(jpi,jpj) :: zcd_dui ! transfer coefficient for momentum (tau) 811 828 !!--------------------------------------------------------------------- 812 829 ! … … 822 839 DO jj = 2, jpjm1 823 840 DO ji = fs_2, fs_jpim1 ! vect. opt. 824 zwndi_t = ( sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( u_ice(ji-1,jj ) + u_ice(ji,jj) ) )825 zwndj_t = ( sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( v_ice(ji ,jj-1) + v_ice(ji,jj) ) )841 zwndi_t = ( pwndi(ji,jj) - rn_vfac * 0.5_wp * ( puice(ji-1,jj ) + puice(ji,jj) ) ) 842 zwndj_t = ( pwndj(ji,jj) - rn_vfac * 0.5_wp * ( pvice(ji ,jj-1) + pvice(ji,jj) ) ) 826 843 wndm_ice(ji,jj) = SQRT( zwndi_t * zwndi_t + zwndj_t * zwndj_t ) * tmask(ji,jj,1) 827 844 END DO … … 842 859 ! local scalars ( place there for vector optimisation purposes) 843 860 ! Computing density of air! Way denser that 1.2 over sea-ice !!! 844 zrhoa (:,:) = rho_air(sf(jp_tair)%fnow(:,:,1), sf(jp_humi)%fnow(:,:,1), sf(jp_slp)%fnow(:,:,1)) 845 846 ! ------------------------------------------------------------ ! 847 ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 848 ! ------------------------------------------------------------ ! 849 ! C-grid ice dynamics : U & V-points (same as ocean) 850 DO jj = 2, jpjm1 851 DO ji = fs_2, fs_jpim1 ! vect. opt. 852 utau_ice(ji,jj) = 0.5 * zrhoa(ji,jj) * Cd_atm(ji,jj) * ( wndm_ice(ji+1,jj ) + wndm_ice(ji,jj) ) & 853 & * ( 0.5 * (sf(jp_wndi)%fnow(ji+1,jj,1) + sf(jp_wndi)%fnow(ji,jj,1) ) - rn_vfac * u_ice(ji,jj) ) 854 vtau_ice(ji,jj) = 0.5 * zrhoa(ji,jj) * Cd_atm(ji,jj) * ( wndm_ice(ji,jj+1 ) + wndm_ice(ji,jj) ) & 855 & * ( 0.5 * (sf(jp_wndj)%fnow(ji,jj+1,1) + sf(jp_wndj)%fnow(ji,jj,1) ) - rn_vfac * v_ice(ji,jj) ) 861 zrhoa (:,:) = rho_air( ptair(:,:), phumi(:,:), pslp(:,:) ) 862 zcd_dui(:,:) = wndm_ice(:,:) * Cd_atm(:,:) 863 864 IF( ln_blk ) THEN 865 ! ------------------------------------------------------------ ! 866 ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 867 ! ------------------------------------------------------------ ! 868 ! C-grid ice dynamics : U & V-points (same as ocean) 869 DO jj = 2, jpjm1 870 DO ji = fs_2, fs_jpim1 ! vect. opt. 871 putaui(ji,jj) = 0.5_wp * ( zrhoa(ji+1,jj) * zcd_dui(ji+1,jj) & 872 & + zrhoa(ji ,jj) * zcd_dui(ji ,jj) ) & 873 & * ( 0.5_wp * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) - rn_vfac * puice(ji,jj) ) 874 pvtaui(ji,jj) = 0.5_wp * ( zrhoa(ji,jj+1) * zcd_dui(ji,jj+1) & 875 & + zrhoa(ji,jj ) * zcd_dui(ji,jj ) ) & 876 & * ( 0.5_wp * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) - rn_vfac * pvice(ji,jj) ) 877 END DO 856 878 END DO 857 END DO 858 CALL lbc_lnk_multi( 'sbcblk', utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 859 ! 860 ! 861 IF(ln_ctl) THEN 862 CALL prt_ctl(tab2d_1=utau_ice , clinfo1=' blk_ice: utau_ice : ', tab2d_2=vtau_ice , clinfo2=' vtau_ice : ') 863 CALL prt_ctl(tab2d_1=wndm_ice , clinfo1=' blk_ice: wndm_ice : ') 864 ENDIF 865 ! 866 END SUBROUTINE blk_ice_tau 867 868 869 SUBROUTINE blk_ice_flx( ptsu, phs, phi, palb ) 870 !!--------------------------------------------------------------------- 871 !! *** ROUTINE blk_ice_flx *** 879 CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. ) 880 ! 881 IF(ln_ctl) CALL prt_ctl( tab2d_1=putaui , clinfo1=' blk_ice: putaui : ' & 882 & , tab2d_2=pvtaui , clinfo2=' pvtaui : ' ) 883 ELSE 884 DO jj = 1, jpj 885 DO ji = 1, jpi 886 pcd_dui(ji,jj) = zcd_dui(ji,jj) 887 pseni (ji,jj) = wndm_ice(ji,jj) * Ch_atm(ji,jj) 888 pevpi (ji,jj) = wndm_ice(ji,jj) * Ce_atm(ji,jj) 889 pssqi (ji,jj) = 11637800.0_wp * EXP( -5897.8_wp / (ptsui(ji,jj)+rt0) ) / zrhoa(ji,jj) 890 END DO 891 END DO 892 ENDIF 893 ! 894 IF(ln_ctl) CALL prt_ctl(tab2d_1=wndm_ice , clinfo1=' blk_ice: wndm_ice : ') 895 ! 896 END SUBROUTINE blk_ice_1 897 898 899 SUBROUTINE blk_ice_2( ptsu, phs, phi, palb, ptair, phumi, pslp, pqlw, pprec, psnow ) 900 !!--------------------------------------------------------------------- 901 !! *** ROUTINE blk_ice_2 *** 872 902 !! 873 903 !! ** Purpose : provide the heat and mass fluxes at air-ice interface … … 883 913 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 884 914 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: palb ! ice albedo (all skies) 915 REAL(wp), DIMENSION(:,: ), INTENT(in) :: ptair 916 REAL(wp), DIMENSION(:,: ), INTENT(in) :: phumi 917 REAL(wp), DIMENSION(:,: ), INTENT(in) :: pslp 918 REAL(wp), DIMENSION(:,: ), INTENT(in) :: pqlw 919 REAL(wp), DIMENSION(:,: ), INTENT(in) :: pprec 920 REAL(wp), DIMENSION(:,: ), INTENT(in) :: psnow 885 921 !! 886 922 INTEGER :: ji, jj, jl ! dummy loop indices 887 923 REAL(wp) :: zst3 ! local variable 888 924 REAL(wp) :: zcoef_dqlw, zcoef_dqla ! - - 889 REAL(wp) :: zztmp, z 1_rLsub! - -925 REAL(wp) :: zztmp, zztmp2, z1_rLsub ! - - 890 926 REAL(wp) :: zfr1, zfr2 ! local variables 891 927 REAL(wp), DIMENSION(jpi,jpj,jpl) :: z1_st ! inverse of surface temperature … … 901 937 zcoef_dqla = -Ls * 11637800. * (-5897.8) 902 938 ! 903 zrhoa(:,:) = rho_air( sf(jp_tair)%fnow(:,:,1), sf(jp_humi)%fnow(:,:,1), sf(jp_slp)%fnow(:,:,1) )939 zrhoa(:,:) = rho_air( ptair(:,:), phumi(:,:), pslp(:,:) ) 904 940 ! 905 941 zztmp = 1. / ( 1. - albo ) … … 919 955 qsr_ice(ji,jj,jl) = zztmp * ( 1. - palb(ji,jj,jl) ) * qsr(ji,jj) 920 956 ! Long Wave (lw) 921 z_qlw(ji,jj,jl) = 0.95 * ( sf(jp_qlw)%fnow(ji,jj,1) - Stef * ptsu(ji,jj,jl) * zst3 ) * tmask(ji,jj,1)957 z_qlw(ji,jj,jl) = 0.95 * ( pqlw(ji,jj) - Stef * ptsu(ji,jj,jl) * zst3 ) * tmask(ji,jj,1) 922 958 ! lw sensitivity 923 959 z_dqlw(ji,jj,jl) = zcoef_dqlw * zst3 … … 927 963 ! ----------------------------! 928 964 929 ! ... turbulent heat fluxes with Ch_atm recalculated in blk_ice_ tau965 ! ... turbulent heat fluxes with Ch_atm recalculated in blk_ice_1 930 966 ! Sensible Heat 931 z_qsb(ji,jj,jl) = zrhoa(ji,jj) * cpa * Ch_atm(ji,jj) * wndm_ice(ji,jj) * (ptsu(ji,jj,jl) - sf(jp_tair)%fnow(ji,jj,1))967 z_qsb(ji,jj,jl) = zrhoa(ji,jj) * cpa * Ch_atm(ji,jj) * wndm_ice(ji,jj) * (ptsu(ji,jj,jl) - ptair(ji,jj)) 932 968 ! Latent Heat 933 qla_ice(ji,jj,jl) = rn_efac * MAX( 0.e0, zrhoa(ji,jj) * Ls * Ch_atm(ji,jj) * wndm_ice(ji,jj) * & 934 & ( 11637800. * EXP( -5897.8 * z1_st(ji,jj,jl) ) / zrhoa(ji,jj) - sf(jp_humi)%fnow(ji,jj,1) ) ) 969 zztmp2 = EXP( -5897.8 * z1_st(ji,jj,jl) ) 970 qla_ice(ji,jj,jl) = rn_efac * MAX( 0.e0, zrhoa(ji,jj) * Ls * Ce_atm(ji,jj) * wndm_ice(ji,jj) * & 971 & ( 11637800. * zztmp2 / zrhoa(ji,jj) - phumi(ji,jj) ) ) 935 972 ! Latent heat sensitivity for ice (Dqla/Dt) 936 973 IF( qla_ice(ji,jj,jl) > 0._wp ) THEN 937 dqla_ice(ji,jj,jl) = rn_efac * zcoef_dqla * C h_atm(ji,jj) * wndm_ice(ji,jj) * &938 & z1_st(ji,jj,jl) *z1_st(ji,jj,jl) * EXP(-5897.8 * z1_st(ji,jj,jl))974 dqla_ice(ji,jj,jl) = rn_efac * zcoef_dqla * Ce_atm(ji,jj) * wndm_ice(ji,jj) * & 975 & z1_st(ji,jj,jl) * z1_st(ji,jj,jl) * zztmp2 939 976 ELSE 940 977 dqla_ice(ji,jj,jl) = 0._wp … … 943 980 ! Sensible heat sensitivity (Dqsb_ice/Dtn_ice) 944 981 z_dqsb(ji,jj,jl) = zrhoa(ji,jj) * cpa * Ch_atm(ji,jj) * wndm_ice(ji,jj) 945 982 946 983 ! ----------------------------! 947 984 ! III Total FLUXES ! … … 957 994 END DO 958 995 ! 959 tprecip(:,:) = sf(jp_prec)%fnow(:,:,1) * rn_pfac * tmask(:,:,1) ! total precipitation [kg/m2/s]960 sprecip(:,:) = sf(jp_snow)%fnow(:,:,1) * rn_pfac * tmask(:,:,1) ! solid precipitation [kg/m2/s]961 CALL iom_put( 'snowpre', sprecip ) 962 CALL iom_put( 'precip' , tprecip ) 996 tprecip(:,:) = pprec(:,:) * rn_pfac * tmask(:,:,1) ! total precipitation [kg/m2/s] 997 sprecip(:,:) = psnow(:,:) * rn_pfac * tmask(:,:,1) ! solid precipitation [kg/m2/s] 998 CALL iom_put( 'snowpre', sprecip ) ! Snow precipitation 999 CALL iom_put( 'precip' , tprecip ) ! Total precipitation 963 1000 964 1001 ! --- evaporation --- ! … … 977 1014 ! --- heat flux associated with emp --- ! 978 1015 qemp_oce(:,:) = - ( 1._wp - at_i_b(:,:) ) * zevap(:,:) * sst_m(:,:) * rcp & ! evap at sst 979 & + ( tprecip(:,:) - sprecip(:,:) ) * ( sf(jp_tair)%fnow(:,:,1) - rt0 ) * rcp& ! liquid precip at Tair1016 & + ( tprecip(:,:) - sprecip(:,:) ) * ( ptair(:,:) - rt0 ) * rcp & ! liquid precip at Tair 980 1017 & + sprecip(:,:) * ( 1._wp - zsnw ) * & ! solid precip at min(Tair,Tsnow) 981 & ( ( MIN( sf(jp_tair)%fnow(:,:,1), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus )1018 & ( ( MIN( ptair(:,:), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus ) 982 1019 qemp_ice(:,:) = sprecip(:,:) * zsnw * & ! solid precip (only) 983 & ( ( MIN( sf(jp_tair)%fnow(:,:,1), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus )1020 & ( ( MIN( ptair(:,:), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus ) 984 1021 985 1022 ! --- total solar and non solar fluxes --- ! … … 989 1026 990 1027 ! --- heat content of precip over ice in J/m3 (to be used in 1D-thermo) --- ! 991 qprec_ice(:,:) = rhos * ( ( MIN( sf(jp_tair)%fnow(:,:,1), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus )992 1028 qprec_ice(:,:) = rhos * ( ( MIN( ptair(:,:), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus ) 1029 993 1030 ! --- heat content of evap over ice in W/m2 (to be used in 1D-thermo) --- 994 1031 DO jl = 1, jpl … … 1016 1053 CALL prt_ctl(tab3d_1=ptsu , clinfo1=' blk_ice: ptsu : ', tab3d_2=qns_ice , clinfo2=' qns_ice : ', kdim=jpl) 1017 1054 CALL prt_ctl(tab2d_1=tprecip , clinfo1=' blk_ice: tprecip : ', tab2d_2=sprecip , clinfo2=' sprecip : ') 1018 END IF1019 ! 1020 END SUBROUTINE blk_ice_ flx1055 END IF 1056 ! 1057 END SUBROUTINE blk_ice_2 1021 1058 1022 1059
Note: See TracChangeset
for help on using the changeset viewer.