Changeset 5908 for LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd
- Timestamp:
- Dec 4, 2025, 1:38:46 PM (3 weeks ago)
- Location:
- LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd
- Files:
-
- 3 edited
-
fonte_neige_mod.F90 (modified) (4 diffs)
-
pbl_surface_mod.F90 (modified) (4 diffs)
-
surf_landice_mod.F90 (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/fonte_neige_mod.F90
r5889 r5908 237 237 #endif 238 238 & ) 239 !$gpum horizontal knon 239 !$gpum horizontal knon klon 240 240 USE indice_sol_mod 241 241 #ifdef ISO … … 446 446 j = knindex(i) 447 447 !--temporal filtering 448 run_off_lic( i) = coeff_rel*fqcalving(i) + (1.-coeff_rel)*run_off_lic_0(j)449 run_off_lic_0(j) = run_off_lic( i)448 run_off_lic(j) = coeff_rel*fqcalving(i) + (1.-coeff_rel)*run_off_lic_0(j) 449 run_off_lic_0(j) = run_off_lic(j) 450 450 !--add melting snow and liquid precip to runoff of ice cap 451 run_off_lic( i) = run_off_lic(i) + fqfonte(i) + precip_rain(i)451 run_off_lic(j) = run_off_lic(j) + fqfonte(i) + precip_rain(i) 452 452 ENDDO 453 453 ENDIF … … 455 455 #ifdef ISO 456 456 DO i = 1, knon 457 run_off_lic_diag(i) = run_off_lic( i)457 run_off_lic_diag(i) = run_off_lic(knindex(i)) 458 458 ENDDO ! DO i = 1, knon 459 459 #endif … … 472 472 IF (nisurf == is_lic) THEN 473 473 DO i = 1, knon 474 runofflic_global(knindex(i)) = run_off_lic( i)474 runofflic_global(knindex(i)) = run_off_lic(knindex(i)) 475 475 ENDDO 476 476 ENDIF -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/pbl_surface_mod.F90
r5889 r5908 597 597 598 598 END SUBROUTINE pbl_surface_newfrac 599 600 SUBROUTINE pbl_surface_precall 601 USE surf_landice_mod, ONLY : surf_landice_precall 602 IMPLICIT NONE 603 CALL surf_landice_precall 604 END SUBROUTINE pbl_surface_precall 605 606 SUBROUTINE pbl_surface_postcall 607 USE surf_landice_mod, ONLY : surf_landice_postcall 608 IMPLICIT NONE 609 CALL surf_landice_postcall 610 END SUBROUTINE pbl_surface_postcall 599 611 600 612 … … 1191 1203 CALL checksum("n2mout", n2mout) 1192 1204 CALL checksum("n2mout_x", n2mout_x) 1205 1206 CALL pbl_surface_precall 1193 1207 1194 1208 CALL pbl_surface_uncompress_pre( & … … 1252 1266 ENDIF 1253 1267 ENDDO 1254 1268 1255 1269 CALL pbl_surface_subsrf( nsrf, knon, ni(1:knon), & 1256 1270 dtime, date0, itap, jour, & … … 1344 1358 #endif 1345 1359 & ) 1360 1361 CALL pbl_surface_postcall 1346 1362 1347 1363 IF (is_master) WRITE(lunout,*) "****************** CHECKSUM OUT ****************************" -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/surf_landice_mod.F90
r5889 r5908 3 3 4 4 IMPLICIT NONE 5 PRIVATE 6 7 REAL,SAVE :: alb_vis_sno_lic 8 !$OMP THREADPRIVATE(alb_vis_sno_lic) 9 REAL,SAVE :: alb_nir_sno_lic 10 !$OMP THREADPRIVATE(alb_nir_sno_lic) 11 12 LOGICAL, SAVE :: firstcall = .TRUE. 13 !$OMP THREADPRIVATE(firstcall) 14 15 16 PUBLIC :: surf_landice_init, surf_landice, surf_landice_precall, surf_landice_postcall 5 17 6 18 CONTAINS … … 8 20 !**************************************************************************************** 9 21 ! 22 SUBROUTINE surf_landice_init 23 USE ioipsl_getin_p_mod, ONLY : getin_p 24 IMPLICIT NONE 25 26 alb_vis_sno_lic=0.77 27 CALL getin_p('alb_vis_sno_lic',alb_vis_sno_lic) 28 PRINT*, 'alb_vis_sno_lic',alb_vis_sno_lic 29 alb_nir_sno_lic=0.77 30 CALL getin_p('alb_nir_sno_lic',alb_nir_sno_lic) 31 PRINT*, 'alb_nir_sno_lic',alb_nir_sno_lic 32 33 END SUBROUTINE surf_landice_init 34 35 36 SUBROUTINE surf_landice_precall 37 IMPLICIT NONE 38 39 END SUBROUTINE surf_landice_precall 40 41 42 SUBROUTINE surf_landice_postcall 43 IMPLICIT NONE 44 IF (firstcall) firstcall=.FALSE. 45 END SUBROUTINE surf_landice_postcall 46 47 48 10 49 SUBROUTINE surf_landice(itime, dtime, knon, knindex, & 11 50 rlon, rlat, debut, lafin, & … … 29 68 #endif 30 69 & ) 31 70 !$gpum horizontal knon klon 32 71 USE dimphy 33 72 USE geometry_mod, ONLY : longitude,latitude … … 50 89 USE clesphys_mod_h 51 90 USE yomcst_mod_h 52 USE ioipsl_getin_p_mod, ONLY : getin_p53 91 USE lmdz_blowing_snow_ini, ONLY : c_esalt_bs, zeta_bs, pbst_bs, prt_bs, rhoice_bs, rhohard_bs 54 92 USE lmdz_blowing_snow_ini, ONLY : rhofresh_bs, tau_eqsalt_bs, tau_dens0_bs, tau_densmin_bs … … 194 232 LOGICAL, DIMENSION(knon) :: ok_remaining_freshsnow 195 233 REAL :: ta1, ta2, ta3, z01, z02, z03, coefa, coefb, coefc, coefd 234 REAl :: lon(knon), lat(knon) ! for indexation 235 196 236 197 237 … … 200 240 !FC 201 241 !FC 202 REAL,SAVE :: alb_vis_sno_lic 203 !$OMP THREADPRIVATE(alb_vis_sno_lic) 204 REAL,SAVE :: alb_nir_sno_lic 205 !$OMP THREADPRIVATE(alb_nir_sno_lic) 206 LOGICAL, SAVE :: firstcall = .TRUE. 207 !$OMP THREADPRIVATE(firstcall) 242 208 243 209 244 … … 223 258 224 259 IF (firstcall) THEN 225 alb_vis_sno_lic=0.77 226 CALL getin_p('alb_vis_sno_lic',alb_vis_sno_lic) 227 PRINT*, 'alb_vis_sno_lic',alb_vis_sno_lic 228 alb_nir_sno_lic=0.77 229 CALL getin_p('alb_nir_sno_lic',alb_nir_sno_lic) 230 PRINT*, 'alb_nir_sno_lic',alb_nir_sno_lic 231 232 DO j=1,knon 260 261 DO j=1,knon 233 262 i = knindex(j) 234 263 tempsmoothlic(i) = temp_air(j) 235 ENDDO236 firstcall=.false.264 ENDDO 265 237 266 ENDIF 238 267 !****************************************************************************************** … … 313 342 lafin_is=.true. 314 343 END IF 315 344 345 !ym surf_inlandsis not ported on gpu for now 346 !$gpum nocall 316 347 CALL surf_inlandsis(knon, rlon, rlat, knindex, itime, dtis, debut_is, lafin_is,& 317 348 rmu0, swdown, lwdown, albedo, pexner, ps, p1lay, precip_rain, precip_snow, & … … 361 392 ! use soil model and recalculate properly cal 362 393 IF (soil_model) THEN 394 lon(1:knon) = longitude(knindex(1:knon)) 395 lat(1:knon) = latitude(knindex(1:knon)) 363 396 CALL soil(dtime, is_lic, knon, snow, tsurf, qsol, & 364 & lon gitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux)397 & lon, lat, tsoil, soilcap, soilflux) 365 398 cal(1:knon) = RCPD / soilcap(1:knon) 366 399 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) … … 662 695 ENDDO 663 696 697 !$gpum nocall 664 698 CALL cpl_send_landice_fields(itime, knon, knindex, run_off_lic, run_off_lic_frac) 665 699 ENDIF 666 700 667 701 ! transfer runoff rate [kg/m2/s](!) to physiq for output 668 runoff(1:knon)=run_off_lic( 1:knon)/dtime702 runoff(1:knon)=run_off_lic(knindex(1:knon))/dtime 669 703 670 704 !ym WARNING snow_o, zfrac_o => en klon !!!
Note: See TracChangeset
for help on using the changeset viewer.
