- Timestamp:
- Nov 17, 2025, 3:50:06 PM (6 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/surf_landice_mod.F90
r5486 r5868 64 64 !**************************************************************************************** 65 65 INTEGER, INTENT(IN) :: itime, knon 66 INTEGER, DIMENSION(k lon), INTENT(in) :: knindex66 INTEGER, DIMENSION(knon), INTENT(in) :: knindex 67 67 REAL, INTENT(in) :: dtime 68 REAL, DIMENSION(k lon), INTENT(IN) :: swnet ! net shortwave radiance69 REAL, DIMENSION(k lon), INTENT(IN) :: lwnet ! net longwave radiance70 REAL, DIMENSION(k lon), INTENT(IN) :: tsurf71 REAL, DIMENSION(k lon), INTENT(IN) :: p1lay72 REAL, DIMENSION(k lon), INTENT(IN) :: cdragh, cdragm73 REAL, DIMENSION(k lon), INTENT(IN) :: precip_rain, precip_snow, precip_bs74 REAL, DIMENSION(k lon), INTENT(IN) :: temp_air, spechum75 REAL, DIMENSION(k lon), INTENT(IN) :: AcoefH, AcoefQ76 REAL, DIMENSION(k lon), INTENT(IN) :: BcoefH, BcoefQ77 REAL, DIMENSION(k lon), INTENT(IN) :: AcoefU, AcoefV, BcoefU, BcoefV78 REAL, DIMENSION(k lon), INTENT(IN) :: AcoefQBS, BcoefQBS79 REAL, DIMENSION(k lon), INTENT(IN) :: ps80 REAL, DIMENSION(k lon), INTENT(IN) :: u1, v1, gustiness, qbs181 REAL, DIMENSION(k lon), INTENT(IN) :: rugoro68 REAL, DIMENSION(knon), INTENT(IN) :: swnet ! net shortwave radiance 69 REAL, DIMENSION(knon), INTENT(IN) :: lwnet ! net longwave radiance 70 REAL, DIMENSION(knon), INTENT(IN) :: tsurf 71 REAL, DIMENSION(knon), INTENT(IN) :: p1lay 72 REAL, DIMENSION(knon), INTENT(IN) :: cdragh, cdragm 73 REAL, DIMENSION(knon), INTENT(IN) :: precip_rain, precip_snow, precip_bs 74 REAL, DIMENSION(knon), INTENT(IN) :: temp_air, spechum 75 REAL, DIMENSION(knon), INTENT(IN) :: AcoefH, AcoefQ 76 REAL, DIMENSION(knon), INTENT(IN) :: BcoefH, BcoefQ 77 REAL, DIMENSION(knon), INTENT(IN) :: AcoefU, AcoefV, BcoefU, BcoefV 78 REAL, DIMENSION(knon), INTENT(IN) :: AcoefQBS, BcoefQBS 79 REAL, DIMENSION(knon), INTENT(IN) :: ps 80 REAL, DIMENSION(knon), INTENT(IN) :: u1, v1, gustiness, qbs1 81 REAL, DIMENSION(knon), INTENT(IN) :: rugoro 82 82 REAL, DIMENSION(klon,nbsrf), INTENT(IN) :: pctsrf 83 83 #ifdef ISO 84 REAL, DIMENSION(ntiso,k lon), INTENT(IN) :: xtprecip_rain, xtprecip_snow85 REAL, DIMENSION(ntiso,k lon), INTENT(IN) :: xtspechum84 REAL, DIMENSION(ntiso,knon), INTENT(IN) :: xtprecip_rain, xtprecip_snow 85 REAL, DIMENSION(ntiso,knon), INTENT(IN) :: xtspechum 86 86 #endif 87 87 … … 90 90 LOGICAL, INTENT(IN) :: lafin !true if last step 91 91 REAL, DIMENSION(klon), INTENT(IN) :: rlon, rlat 92 REAL, DIMENSION(k lon), INTENT(IN) :: rmu093 REAL, DIMENSION(k lon), INTENT(IN) :: lwdownm !ylwdown94 REAL, DIMENSION(k lon), INTENT(IN) :: albedo !mean albedo95 REAL, DIMENSION(k lon), INTENT(IN) :: pphi196 REAL, DIMENSION(k lon), INTENT(IN) :: alt !mean altitude of the grid box97 REAL, DIMENSION(k lon), INTENT(IN) :: slope !mean slope in grid box98 REAL, DIMENSION(k lon), INTENT(IN) :: cloudf !total cloud fraction92 REAL, DIMENSION(knon), INTENT(IN) :: rmu0 93 REAL, DIMENSION(knon), INTENT(IN) :: lwdownm !ylwdown 94 REAL, DIMENSION(knon), INTENT(IN) :: albedo !mean albedo 95 REAL, DIMENSION(knon), INTENT(IN) :: pphi1 96 REAL, DIMENSION(knon), INTENT(IN) :: alt !mean altitude of the grid box 97 REAL, DIMENSION(knon), INTENT(IN) :: slope !mean slope in grid box 98 REAL, DIMENSION(knon), INTENT(IN) :: cloudf !total cloud fraction 99 99 100 100 ! In/Output variables 101 101 !**************************************************************************************** 102 REAL, DIMENSION(k lon), INTENT(INOUT) :: snow, qsol103 REAL, DIMENSION(k lon), INTENT(INOUT) :: agesno104 REAL, DIMENSION(k lon, nsoilmx), INTENT(INOUT) :: tsoil102 REAL, DIMENSION(knon), INTENT(INOUT) :: snow, qsol 103 REAL, DIMENSION(knon), INTENT(INOUT) :: agesno 104 REAL, DIMENSION(knon, nsoilmx), INTENT(INOUT) :: tsoil 105 105 #ifdef ISO 106 REAL, DIMENSION(niso,k lon), INTENT(INOUT) :: xtsnow, xtsol107 REAL, DIMENSION(niso,k lon), INTENT(INOUT) :: Rland_ice106 REAL, DIMENSION(niso,knon), INTENT(INOUT) :: xtsnow, xtsol 107 REAL, DIMENSION(niso,knon), INTENT(INOUT) :: Rland_ice 108 108 #endif 109 109 … … 111 111 ! Output variables 112 112 !**************************************************************************************** 113 REAL, DIMENSION(k lon), INTENT(OUT) :: qsurf114 REAL, DIMENSION(k lon), INTENT(OUT) :: z0m, z0h113 REAL, DIMENSION(knon), INTENT(OUT) :: qsurf 114 REAL, DIMENSION(knon), INTENT(OUT) :: z0m, z0h 115 115 !albedo SB >>> 116 116 ! REAL, DIMENSION(klon), INTENT(OUT) :: alb1 ! new albedo in visible SW interval 117 117 ! REAL, DIMENSION(klon), INTENT(OUT) :: alb2 ! new albedo in near IR interval 118 118 REAL, DIMENSION(6), INTENT(IN) :: SFRWL 119 REAL, DIMENSION(k lon,nsw), INTENT(OUT) :: alb_dir,alb_dif119 REAL, DIMENSION(knon,nsw), INTENT(OUT) :: alb_dir,alb_dif 120 120 !albedo SB <<< 121 REAL, DIMENSION(k lon), INTENT(OUT) :: evap, fluxsens, fluxlat, icesub_lic122 REAL, DIMENSION(k lon), INTENT(OUT) :: fluxbs123 REAL, DIMENSION(k lon), INTENT(OUT) :: tsurf_new124 REAL, DIMENSION(k lon), INTENT(OUT) :: dflux_s, dflux_l125 REAL, DIMENSION(k lon), INTENT(OUT) :: flux_u1, flux_v1126 127 REAL, DIMENSION(k lon), INTENT(OUT) :: alb3128 REAL, DIMENSION(k lon), INTENT(OUT) :: qsnow !column water in snow [kg/m2]129 REAL, DIMENSION(k lon), INTENT(OUT) :: snowhgt !Snow height (m)130 REAL, DIMENSION(k lon), INTENT(OUT) :: to_ice131 REAL, DIMENSION(k lon), INTENT(OUT) :: sissnow132 REAL, DIMENSION(k lon), INTENT(OUT) :: runoff !Land ice runoff121 REAL, DIMENSION(knon), INTENT(OUT) :: evap, fluxsens, fluxlat, icesub_lic 122 REAL, DIMENSION(knon), INTENT(OUT) :: fluxbs 123 REAL, DIMENSION(knon), INTENT(OUT) :: tsurf_new 124 REAL, DIMENSION(knon), INTENT(OUT) :: dflux_s, dflux_l 125 REAL, DIMENSION(knon), INTENT(OUT) :: flux_u1, flux_v1 126 127 REAL, DIMENSION(knon), INTENT(OUT) :: alb3 128 REAL, DIMENSION(knon), INTENT(OUT) :: qsnow !column water in snow [kg/m2] 129 REAL, DIMENSION(knon), INTENT(OUT) :: snowhgt !Snow height (m) 130 REAL, DIMENSION(knon), INTENT(OUT) :: to_ice 131 REAL, DIMENSION(knon), INTENT(OUT) :: sissnow 132 REAL, DIMENSION(knon), INTENT(OUT) :: runoff !Land ice runoff 133 133 #ifdef ISO 134 REAL, DIMENSION(ntiso,k lon), INTENT(OUT) :: xtevap134 REAL, DIMENSION(ntiso,knon), INTENT(OUT) :: xtevap 135 135 #endif 136 136 … … 138 138 ! Local variables 139 139 !**************************************************************************************** 140 REAL, DIMENSION(k lon) :: soilcap, soilflux141 REAL, DIMENSION(k lon) :: cal, beta, dif_grnd142 REAL, DIMENSION(k lon) :: zfra, alb_neig143 REAL, DIMENSION(k lon) :: radsol144 REAL, DIMENSION(k lon) :: u0, v0, u1_lay, v1_lay, ustar140 REAL, DIMENSION(knon) :: soilcap, soilflux 141 REAL, DIMENSION(knon) :: cal, beta, dif_grnd 142 REAL, DIMENSION(knon) :: zfra, alb_neig 143 REAL, DIMENSION(knon) :: radsol 144 REAL, DIMENSION(knon) :: u0, v0, u1_lay, v1_lay, ustar 145 145 INTEGER :: i,j,nt 146 REAL, DIMENSION(k lon) :: fqfonte,ffonte147 REAL, DIMENSION(k lon) :: run_off_lic_frac146 REAL, DIMENSION(knon) :: fqfonte,ffonte 147 REAL, DIMENSION(knon) :: run_off_lic_frac 148 148 #ifdef ISO 149 149 REAL, PARAMETER :: t_coup = 273.15 150 REAL, DIMENSION(k lon) :: fqfonte_diag151 REAL, DIMENSION(k lon) :: fq_fonte_diag152 REAL, DIMENSION(k lon) :: snow_evap_diag153 REAL, DIMENSION(k lon) :: fqcalving_diag150 REAL, DIMENSION(knon) :: fqfonte_diag 151 REAL, DIMENSION(knon) :: fq_fonte_diag 152 REAL, DIMENSION(knon) :: snow_evap_diag 153 REAL, DIMENSION(knon) :: fqcalving_diag 154 154 REAL max_eau_sol_diag 155 REAL, DIMENSION(k lon) :: runoff_diag156 REAL, DIMENSION(k lon) :: run_off_lic_diag155 REAL, DIMENSION(knon) :: runoff_diag 156 REAL, DIMENSION(knon) :: run_off_lic_diag 157 157 REAL :: coeff_rel_diag 158 158 INTEGER :: ixt 159 REAL, DIMENSION(niso,k lon) :: xtsnow_prec,xtsol_prec160 REAL, DIMENSION(k lon) :: snow_prec,qsol_prec161 #endif 162 163 164 REAL, DIMENSION(k lon) :: emis_new !Emissivity165 REAL, DIMENSION(k lon) :: swdown,lwdown166 REAL, DIMENSION(k lon) :: precip_snow_adv, snow_adv !Snow Drift precip./advection (not used in inlandsis)167 REAL, DIMENSION(k lon) :: erod !erosion of surface snow (flux, kg/m2/s like evap)168 REAL, DIMENSION(k lon) :: zsl_height, wind_velo !surface layer height, wind spd169 REAL, DIMENSION(k lon) :: dens_air, snow_cont_air !air density; snow content air170 REAL, DIMENSION(k lon) :: alb_soil !albedo of underlying ice171 REAL, DIMENSION(k lon) :: pexner !Exner potential159 REAL, DIMENSION(niso,knon) :: xtsnow_prec,xtsol_prec 160 REAL, DIMENSION(knon) :: snow_prec,qsol_prec 161 #endif 162 163 164 REAL, DIMENSION(knon) :: emis_new !Emissivity 165 REAL, DIMENSION(knon) :: swdown,lwdown 166 REAL, DIMENSION(knon) :: precip_snow_adv, snow_adv !Snow Drift precip./advection (not used in inlandsis) 167 REAL, DIMENSION(knon) :: erod !erosion of surface snow (flux, kg/m2/s like evap) 168 REAL, DIMENSION(knon) :: zsl_height, wind_velo !surface layer height, wind spd 169 REAL, DIMENSION(knon) :: dens_air, snow_cont_air !air density; snow content air 170 REAL, DIMENSION(knon) :: alb_soil !albedo of underlying ice 171 REAL, DIMENSION(knon) :: pexner !Exner potential 172 172 REAL :: pref 173 REAL, DIMENSION(k lon,nsoilmx) :: tsoil0 !modif173 REAL, DIMENSION(knon,nsoilmx) :: tsoil0 !modif 174 174 REAL :: dtis ! subtimestep 175 175 LOGICAL :: debut_is, lafin_is ! debut and lafin for inlandsis … … 179 179 180 180 181 REAL,DIMENSION(k lon) :: alb1,alb2181 REAL,DIMENSION(knon) :: alb1,alb2 182 182 REAL :: time_tempsmooth,coef_tempsmooth 183 REAL,DIMENSION(k lon) :: precip_totsnow, evap_totsnow184 REAL, DIMENSION (k lon,6) :: alb6183 REAL,DIMENSION(knon) :: precip_totsnow, evap_totsnow 184 REAL, DIMENSION (knon,6) :: alb6 185 185 REAL :: esalt 186 186 REAL :: lambdasalt,fluxsalt, csalt, nunu, aa, bb, cc 187 187 REAL :: tau_dens, maxerosion 188 REAL, DIMENSION(k lon) :: ws1, rhod, rhos, ustart0, ustart, qsalt, hsalt189 REAL, DIMENSION(k lon) :: fluxbs_1, fluxbs_2, bsweight_fresh190 LOGICAL, DIMENSION(k lon) :: ok_remaining_freshsnow188 REAL, DIMENSION(knon) :: ws1, rhod, rhos, ustart0, ustart, qsalt, hsalt 189 REAL, DIMENSION(knon) :: fluxbs_1, fluxbs_2, bsweight_fresh 190 LOGICAL, DIMENSION(knon) :: ok_remaining_freshsnow 191 191 REAL :: ta1, ta2, ta3, z01, z02, z03, coefa, coefb, coefc, coefd 192 192 … … 528 528 ! we now compute the snow age of the overlying layer (snow surface after erosion of the fresh snow accumulated during the time step) 529 529 ! this is done through the routine albsno 530 CALL albsno(k lon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)+fluxbs_1(:))530 CALL albsno(knon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)+fluxbs_1(:)) 531 531 532 532 ! 2nd step: … … 586 586 else ! not ok_bs 587 587 ! those lines are useful to calculate the snow age 588 CALL albsno(k lon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:))588 CALL albsno(knon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)) 589 589 590 590 endif ! if ok_bs … … 625 625 #endif 626 626 627 CALL calcul_iso_surf_lic_vectall(k lon,knon, &627 CALL calcul_iso_surf_lic_vectall(knon,knon, & 628 628 & evap,snow_evap_diag,Tsurf_new,snow, & 629 629 & fq_fonte_diag,fqfonte_diag,dtime,t_coup, & … … 664 664 runoff(1:knon)=run_off_lic(1:knon)/dtime 665 665 666 snow_o=0. 667 zfra_o = 0. 666 !ym WARNING snow_o, zfrac_o => en klon !!! 667 !ym init to 0 at allocation 668 ! snow_o=0. 669 ! zfra_o = 0. 668 670 DO j = 1, knon 669 671 i = knindex(j)
Note: See TracChangeset
for help on using the changeset viewer.
