Ignore:
Timestamp:
Dec 4, 2025, 1:38:46 PM (3 weeks ago)
Author:
yann meurdesoif
Message:

gpu port of surf_landice

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/surf_landice_mod.F90

    r5889 r5908  
    33 
    44  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
    517
    618CONTAINS
     
    820!****************************************************************************************
    921!
     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
    1049  SUBROUTINE surf_landice(itime, dtime, knon, knindex, &
    1150       rlon, rlat, debut, lafin, &
     
    2968#endif               
    3069           &    )
    31 
     70!$gpum horizontal knon klon 
    3271    USE dimphy
    3372    USE geometry_mod,     ONLY : longitude,latitude
     
    5089    USE clesphys_mod_h
    5190    USE yomcst_mod_h
    52     USE ioipsl_getin_p_mod, ONLY : getin_p
    5391    USE lmdz_blowing_snow_ini, ONLY : c_esalt_bs, zeta_bs, pbst_bs, prt_bs, rhoice_bs, rhohard_bs
    5492    USE lmdz_blowing_snow_ini, ONLY : rhofresh_bs, tau_eqsalt_bs, tau_dens0_bs, tau_densmin_bs
     
    194232    LOGICAL, DIMENSION(knon) :: ok_remaining_freshsnow
    195233    REAL  :: ta1, ta2, ta3, z01, z02, z03, coefa, coefb, coefc, coefd
     234    REAl :: lon(knon), lat(knon)   ! for indexation
     235
    196236
    197237
     
    200240!FC
    201241!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
    208243
    209244
     
    223258
    224259  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
    233262       i = knindex(j)
    234263       tempsmoothlic(i) = temp_air(j)
    235   ENDDO
    236   firstcall=.false.
     264    ENDDO
     265 
    237266  ENDIF
    238267!******************************************************************************************
     
    313342            lafin_is=.true.
    314343          END IF
    315 
     344         
     345          !ym surf_inlandsis not ported on gpu for now
     346          !$gpum nocall
    316347          CALL surf_inlandsis(knon, rlon, rlat, knindex, itime, dtis, debut_is, lafin_is,&
    317348            rmu0, swdown, lwdown, albedo, pexner, ps, p1lay, precip_rain, precip_snow,   &
     
    361392    ! use soil model and recalculate properly cal
    362393    IF (soil_model) THEN
     394       lon(1:knon) = longitude(knindex(1:knon))
     395       lat(1:knon) = latitude(knindex(1:knon))
    363396       CALL soil(dtime, is_lic, knon, snow, tsurf, qsol, &
    364         & longitude(knindex(1:knon)), latitude(knindex(1:knon)), tsoil, soilcap, soilflux)
     397        & lon, lat, tsoil, soilcap, soilflux)
    365398       cal(1:knon) = RCPD / soilcap(1:knon)
    366399       radsol(1:knon)  = radsol(1:knon) + soilflux(1:knon)
     
    662695       ENDDO
    663696
     697       !$gpum nocall
    664698       CALL cpl_send_landice_fields(itime, knon, knindex, run_off_lic, run_off_lic_frac)
    665699    ENDIF
    666700
    667701 ! transfer runoff rate [kg/m2/s](!) to physiq for output
    668     runoff(1:knon)=run_off_lic(1:knon)/dtime
     702    runoff(1:knon)=run_off_lic(knindex(1:knon))/dtime
    669703
    670704!ym WARNING snow_o, zfrac_o => en klon !!!
Note: See TracChangeset for help on using the changeset viewer.