Ignore:
Timestamp:
Jul 5, 2024, 4:38:48 PM (3 months ago)
Author:
Sebastien Nguyen
Message:

include ISO keys in pbl_surface and associated routines in phylmd

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/surf_landice_mod.F90

    r4947 r5022  
    2323       snowhgt, qsnow, to_ice, sissnow, &
    2424       alb3, runoff, &
    25        flux_u1, flux_v1)
     25       flux_u1, flux_v1 &
     26#ifdef ISO
     27         &      ,xtprecip_rain, xtprecip_snow,xtspechum,Rland_ice &
     28         &      ,xtsnow,xtsol,xtevap &
     29#endif               
     30           &    )
    2631
    2732    USE dimphy
     
    3338    USE phys_local_var_mod, ONLY : zxrhoslic, zxustartlic, zxqsaltlic
    3439    USE phys_output_var_mod, ONLY : snow_o,zfra_o
     40#ifdef ISO   
     41    USE fonte_neige_mod,  ONLY : xtrun_off_lic
     42    USE infotrac_phy,     ONLY : ntiso,niso
     43    USE isotopes_routines_mod, ONLY: calcul_iso_surf_lic_vectall
     44#ifdef ISOVERIF
     45    USE isotopes_mod, ONLY: iso_eau,ridicule
     46    USE isotopes_verif_mod
     47#endif
     48#endif
     49 
    3550!FC
    3651    USE ioipsl_getin_p_mod, ONLY : getin_p
     
    6883    REAL, DIMENSION(klon), INTENT(IN)             :: rugoro
    6984    REAL, DIMENSION(klon,nbsrf), INTENT(IN)       :: pctsrf
     85#ifdef ISO
     86    REAL, DIMENSION(ntiso,klon), INTENT(IN)       :: xtprecip_rain, xtprecip_snow
     87    REAL, DIMENSION(ntiso,klon), INTENT(IN)       :: xtspechum
     88#endif
     89
    7090
    7191    LOGICAL,  INTENT(IN)                          :: debut   !true if first step
     
    85105    REAL, DIMENSION(klon), INTENT(INOUT)          :: agesno
    86106    REAL, DIMENSION(klon, nsoilmx), INTENT(INOUT) :: tsoil
     107#ifdef ISO
     108    REAL, DIMENSION(niso,klon), INTENT(INOUT)     :: xtsnow, xtsol
     109    REAL, DIMENSION(niso,klon), INTENT(INOUT)     :: Rland_ice
     110#endif
     111
    87112
    88113! Output variables
     
    108133    REAL, DIMENSION(klon), INTENT(OUT)           :: sissnow
    109134    REAL, DIMENSION(klon), INTENT(OUT)           :: runoff  !Land ice runoff
     135#ifdef ISO
     136    REAL, DIMENSION(ntiso,klon), INTENT(OUT)     :: xtevap     
     137!    real, DIMENSION(niso,klon) :: xtrun_off_lic_0_diag ! est une variable globale de
     138!    fonte_neige
     139#endif
    110140 
    111141
     
    120150    REAL, DIMENSION(klon)    :: fqfonte,ffonte
    121151    REAL, DIMENSION(klon)    :: run_off_lic_frac
     152#ifdef ISO       
     153    REAL, PARAMETER          :: t_coup = 273.15
     154    REAL, DIMENSION(klon)    :: fqfonte_diag
     155    REAL, DIMENSION(klon)    :: fq_fonte_diag
     156    REAL, DIMENSION(klon)    ::  snow_evap_diag
     157    REAL, DIMENSION(klon)    ::  fqcalving_diag
     158    REAL max_eau_sol_diag 
     159    REAL, DIMENSION(klon)    ::  runoff_diag
     160    REAL, DIMENSION(klon)    ::    run_off_lic_diag
     161    REAL                     ::  coeff_rel_diag
     162    INTEGER                  :: ixt
     163    REAL, DIMENSION(niso,klon) :: xtsnow_prec,xtsol_prec
     164    REAL, DIMENSION(klon) :: snow_prec,qsol_prec
     165!    real, DIMENSION(klon) :: run_off_lic_0_diag
     166#endif
     167
     168
    122169    REAL, DIMENSION(klon)    :: emis_new                  !Emissivity
    123170    REAL, DIMENSION(klon)    :: swdown,lwdown
     
    163210!FC firtscall initializations
    164211!******************************************************************************************
     212#ifdef ISO
     213#ifdef ISOVERIF
     214!     write(*,*) 'surf_land_ice 1499'   
     215  DO i=1,knon
     216    IF (iso_eau > 0) THEN
     217      CALL iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), &
     218    &                              'surf_land_ice 126',errmax,errmaxrel)
     219    ENDIF !IF (iso_eau > 0) THEN     
     220  ENDDO !DO i=1,knon 
     221#endif
     222#endif
     223
    165224  IF (firstcall) THEN
    166225  alb_vis_sno_lic=0.77
     
    202261!****************************************************************************************
    203262#ifdef CPP_INLANDSIS
     263
     264#ifdef ISO
     265        CALL abort_gcm('surf_landice 235','isotopes pas dans INLANDSIS',1)
     266#endif
    204267
    205268        debut_is=debut
     
    322385         1.,AcoefH, AcoefQ, BcoefH, BcoefQ, &
    323386         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     387
     388#ifdef ISO
     389#ifdef ISOVERIF
     390     !write(*,*) 'surf_land_ice 1499'   
     391     DO i=1,knon
     392       IF (iso_eau > 0) THEN
     393         IF (snow(i) > ridicule) THEN
     394           CALL iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), &
     395    &                                   'surf_land_ice 1151',errmax,errmaxrel)
     396         ENDIF !IF ((snow(i) > ridicule)) THEN
     397       ENDIF !IF (iso_eau > 0) THEN
     398     ENDDO !DO i=1,knon 
     399#endif
     400
     401    DO i=1,knon
     402      snow_prec(i)=snow(i)
     403      DO ixt=1,niso
     404        xtsnow_prec(ixt,i)=xtsnow(ixt,i)
     405      ENDDO !DO ixt=1,niso
     406      ! initialisation:
     407      fq_fonte_diag(i)=0.0
     408      fqfonte_diag(i)=0.0
     409      snow_evap_diag(i)=0.0
     410    ENDDO !DO i=1,knon
     411#endif         
    324412
    325413    CALL calcul_flux_wind(knon, dtime, &
     
    523611 
    524612    CALL fonte_neige(knon, is_lic, knindex, dtime, &
    525          tsurf, precip_rain, precip_totsnow,  &
    526          snow, qsol, tsurf_new, evap_totsnow)
     613         tsurf, precip_rain, precip_totsnow, &
     614         snow, qsol, tsurf_new, evap_totsnow &
     615#ifdef ISO   
     616     &  ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag     &
     617     &  ,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag &
     618#endif
     619     &   )
     620
     621
     622#ifdef ISO
     623#ifdef ISOVERIF
     624    DO i=1,knon 
     625      IF (iso_eau > 0) THEN 
     626        CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, &
     627     &                               'surf_landice_mod 217',errmax,errmaxrel)
     628      ENDIF !IF (iso_eau > 0) THEN
     629    ENDDO !DO i=1,knon
     630#endif
     631
     632    CALL calcul_iso_surf_lic_vectall(klon,knon, &
     633     &    evap,snow_evap_diag,Tsurf_new,snow, &
     634     &    fq_fonte_diag,fqfonte_diag,dtime,t_coup, &
     635     &    precip_snow,xtprecip_snow,precip_rain,xtprecip_rain, snow_prec,xtsnow_prec, &
     636     &    xtspechum,spechum,ps,Rland_ice, &
     637     &    xtevap,xtsnow,fqcalving_diag, &
     638     &    knindex,is_lic,run_off_lic_diag,coeff_rel_diag &
     639     &   )
     640
     641!        call fonte_neige_export_xtrun_off_lic_0(knon,xtrun_off_lic_0_diag)
     642
     643#endif
    527644   
    528    
    529645    WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0.                                         
    530646    zfra(1:knon) = MAX(0.0,MIN(1.0,snow(1:knon)/(snow(1:knon)+10.0))) 
Note: See TracChangeset for help on using the changeset viewer.