diff --git a/src/ARCH_SRC/surfex/dummy_trip.F90 b/src/ARCH_SRC/surfex/dummy_trip.F90 new file mode 100644 index 0000000000000000000000000000000000000000..cc8dc0aa10aadd48645498e9be011e3a17405ef1 --- /dev/null +++ b/src/ARCH_SRC/surfex/dummy_trip.F90 @@ -0,0 +1,66 @@ +MODULE MODD_DIAG_TRIP_n + +CONTAINS +! +SUBROUTINE DIAG_TRIP_GOTO_MODEL(KFROM, KTO, LKFROM) +LOGICAL, INTENT(IN) :: LKFROM +INTEGER, INTENT(IN) :: KFROM, KTO +END SUBROUTINE DIAG_TRIP_GOTO_MODEL + +SUBROUTINE DIAG_TRIP_ALLOC(KMODEL) +INTEGER, INTENT(IN) :: KMODEL +END SUBROUTINE DIAG_TRIP_ALLOC + +SUBROUTINE DIAG_TRIP_DEALLO +END SUBROUTINE DIAG_TRIP_DEALLO +END MODULE MODD_DIAG_TRIP_n +!################## +!################## +!################## +MODULE MODD_TRIP_GRID_n +CONTAINS + +SUBROUTINE TRIP_GRID_GOTO_MODEL(KFROM, KTO, LKFROM) +LOGICAL, INTENT(IN) :: LKFROM +INTEGER, INTENT(IN) :: KFROM, KTO +END SUBROUTINE TRIP_GRID_GOTO_MODEL + +SUBROUTINE TRIP_GRID_ALLOC(KMODEL) +INTEGER, INTENT(IN) :: KMODEL +END SUBROUTINE TRIP_GRID_ALLOC + +SUBROUTINE TRIP_GRID_DEALLO +END SUBROUTINE TRIP_GRID_DEALLO + +END MODULE MODD_TRIP_GRID_n +!################## +!################## +!################## +MODULE MODD_TRIP_n +CONTAINS +! +SUBROUTINE TRIP_GOTO_MODEL(KFROM, KTO, LKFROM) +LOGICAL, INTENT(IN) :: LKFROM +INTEGER, INTENT(IN) :: KFROM, KTO +END SUBROUTINE TRIP_GOTO_MODEL + +SUBROUTINE TRIP_ALLOC(KMODEL) +INTEGER, INTENT(IN) :: KMODEL +END SUBROUTINE TRIP_ALLOC + +SUBROUTINE TRIP_DEALLO +END SUBROUTINE TRIP_DEALLO +! +END MODULE MODD_TRIP_n +!################## +!################## +!################## +MODULE MODD_TRIP_PAR +END MODULE MODD_TRIP_PAR +!################## +!################## +!################## +SUBROUTINE READ_NAMELISTS_TRIP_n(HPROGRAM) + CHARACTER(LEN=*), INTENT(IN) :: HPROGRAM +END SUBROUTINE READ_NAMELISTS_TRIP_n + diff --git a/src/SURFEX/default_trip.F90 b/src/SURFEX/default_trip.F90 deleted file mode 100644 index 1e911302c3c6adf8413d6212abd3a1fc8d6664f9..0000000000000000000000000000000000000000 --- a/src/SURFEX/default_trip.F90 +++ /dev/null @@ -1,95 +0,0 @@ -! ######### - SUBROUTINE DEFAULT_TRIP(HGROUNDW,HVIT,OFLOODT,ODIAG_CPL, & - OTRIP_DIAG_MISC,ONCPRINT,OPRINT_TRIP,& - PTSTEP_COUPLING,PTRIP_TSTEP,PTAUG, & - PVEL,PRATMED ) -! ######################################################################## -! -!!**** *DEFAULT_TRIP* - routine to set default values for the configuration for ISBA -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------ -!! -!! EXTERNAL -!! -------- -!! -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2008 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 Declarations of arguments -! ------------------------- -! - CHARACTER(LEN=3), INTENT(OUT) :: HGROUNDW !Use groundwater scheme - !'DEF' = No groundwater scheme - !'CST' = Constant transfert time - !'VAR' = Textural dependence of transfert time -! - CHARACTER(LEN=3), INTENT(OUT) :: HVIT !Type of stream flow velocity - !'DEF' = constant and uniforme v=0.5m/s - !'VAR' = variable velocity -! -LOGICAL, INTENT(OUT) :: OFLOODT !if true, use TRIP-FLOOD -LOGICAL, INTENT(OUT) :: OTRIP_DIAG_MISC !if true, more diag -LOGICAL, INTENT(OUT) :: ODIAG_CPL !Coupling output diag -LOGICAL, INTENT(OUT) :: ONCPRINT !Netcdf read/write messages -LOGICAL, INTENT(OUT) :: OPRINT_TRIP !Water budget messages -! -REAL, INTENT(OUT) :: PTSTEP_COUPLING ! Coupling Time Step -REAL, INTENT(OUT) :: PTRIP_TSTEP ! TRIPTime Step -REAL, INTENT(OUT) :: PTAUG ! Constant transfert time value -REAL, INTENT(OUT) :: PVEL ! Constant velocity value -REAL, INTENT(OUT) :: PRATMED ! meandering ratio -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* 0.2 Declarations of local variables -! ------------------------------- -! -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('DEFAULT_TRIP',0,ZHOOK_HANDLE) -HGROUNDW = 'DEF' -HVIT = 'DEF' -OFLOODT = .FALSE. -OTRIP_DIAG_MISC = .FALSE. -ODIAG_CPL = .FALSE. -ONCPRINT = .FALSE. -OPRINT_TRIP = .FALSE. -! -PTSTEP_COUPLING = 86400. -PTRIP_TSTEP = 3600. -! -PTAUG = 30.0 -PVEL = 0.5 -! -PRATMED = 1.4 -IF (LHOOK) CALL DR_HOOK('DEFAULT_TRIP',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE DEFAULT_TRIP diff --git a/src/SURFEX/diag_tripn.F90 b/src/SURFEX/diag_tripn.F90 deleted file mode 100644 index 5c51a232d953e2c4471aca9bc06ec1395e2a8cfa..0000000000000000000000000000000000000000 --- a/src/SURFEX/diag_tripn.F90 +++ /dev/null @@ -1,315 +0,0 @@ -! ######### - SUBROUTINE DIAG_TRIP_n(KLUOUT,KYEAR,KMONTH,KRUN,PDURATION, & - PSURF_STO_OLD,PQDIS_OLD,PGROUND_STO_OLD, & - PQGF_OLD,PVEL_OLD,PHS_OLD,PFLOOD_STO_OLD,& - PFF_OLD,PHF_OLD,PQFR_OLD,PQRF_OLD, & - PVFIN_OLD,PVFOUT_OLD,PWF_OLD,PLF_OLD, & - PHSF_OLD,PQIN_OLD,PSOURCE_OLD ) -! ################################################################ -! -!!**** *DIAG_TRIP_n* -!! -!! PURPOSE -!! ------- -! -! TRIP river routing outputs. -! -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 28/05/05 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_RW_TRIP -! -USE MODD_TRIP_GRID_n -USE MODD_TRIP_n, ONLY : CGROUNDW, CVIT, LFLOODT, LPRINT_TRIP, XLEN, & - LDIAG_CPL,XTSTEP_COUPLING,LTRIP_DIAG_MISC -USE MODD_DIAG_TRIP_n -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -INTEGER, INTENT(IN) :: KLUOUT -INTEGER, INTENT(IN) :: KYEAR -INTEGER, INTENT(IN) :: KMONTH -INTEGER, INTENT(IN) :: KRUN -! -REAL, INTENT(IN) :: PDURATION -! -REAL,DIMENSION(:,:), INTENT(IN) :: PSURF_STO_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PQDIS_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PGROUND_STO_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PQGF_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PVEL_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PHS_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PFLOOD_STO_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PFF_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PHF_OLD -! -REAL,DIMENSION(:,:), INTENT(IN) :: PQFR_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PQRF_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PVFIN_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PVFOUT_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PWF_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PLF_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PHSF_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PQIN_OLD -REAL,DIMENSION(:,:), INTENT(IN) :: PSOURCE_OLD -! -!* 0.2 declarations of local variables -! - CHARACTER(LEN=10), PARAMETER :: YDIAG ='TRIP_DIAG_' - CHARACTER(LEN=6) :: YTIME - CHARACTER(LEN=50) :: YFILE - CHARACTER(LEN=10) :: YVNAME -! -REAL,DIMENSION(SIZE(XLEN,1),SIZE(XLEN,2)) :: ZWRITE -! -INTEGER :: ITNUM, ITVAL, IRUN_END -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('DIAG_TRIP_N',0,ZHOOK_HANDLE) -IRUN_END=INT(PDURATION/XTSTEP_COUPLING) -! -IF(KMONTH/=0)THEN - WRITE(YTIME,'(i4.4,i2.2)') KYEAR, KMONTH -ELSE - WRITE(YTIME,'(i4.4)') KYEAR -ENDIF -! -!------------------------------------------------------------------------------- -!Dailly outputs -!------------------------------------------------------------------------------- -! -IF(LDIAG_CPL)THEN -! -! * Recup diag file -! - YFILE =YDIAG//'CPL_'//YTIME(1:LEN_TRIM(YTIME))//'.nc' -! -! * Time attribut -! - ITNUM = KRUN - ITVAL = KRUN -! -! * Store output in diag file -! - YVNAME = 'SURF_STO' - ZWRITE = (XDIAG_SURF_STO - PSURF_STO_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'QDIS' - ZWRITE = (XDIAG_QDIS - PQDIS_OLD) / XTSTEP_COUPLING - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - IF(LTRIP_DIAG_MISC)THEN - YVNAME = 'QSIN' - ZWRITE = (XDIAG_QIN - PQIN_OLD) / XTSTEP_COUPLING - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) - ENDIF -! - IF(CGROUNDW/='DEF')THEN -! - YVNAME = 'GROUND_STO' - ZWRITE = (XDIAG_GROUND_STO - PGROUND_STO_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'QGF' - ZWRITE = (XDIAG_QGF - PQGF_OLD) / XTSTEP_COUPLING - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - ENDIF -! - IF(CVIT=='VAR')THEN -! - YVNAME = 'VEL' - ZWRITE = (XDIAG_VEL - PVEL_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'HSTREAM' - ZWRITE = (XDIAG_HS - PHS_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - ENDIF -! - IF(LFLOODT)THEN -! - YVNAME = 'FFLOOD_T' - ZWRITE = (XDIAG_FF - PFF_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'FLOOD_STO' - ZWRITE = (XDIAG_FLOOD_STO - PFLOOD_STO_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'HFLOOD_T' - ZWRITE = (XDIAG_HF - PHF_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - IF(LTRIP_DIAG_MISC)THEN -! - YVNAME = 'QFR' - ZWRITE = (XDIAG_QFR - PQFR_OLD) / XTSTEP_COUPLING - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'QRF' - ZWRITE = (XDIAG_QRF - PQRF_OLD) / XTSTEP_COUPLING - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'FSOURCE' - ZWRITE = (XDIAG_SOURCE - PSOURCE_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'VFIN' - ZWRITE = (XDIAG_VFIN - PVFIN_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'VFOUT' - ZWRITE = (XDIAG_VFOUT - PVFOUT_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'HSF' - ZWRITE = (XDIAG_HSF - PHSF_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'WF' - ZWRITE = (XDIAG_WF - PWF_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'LF' - ZWRITE = (XDIAG_LF - PLF_OLD) - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - ENDIF -! - ENDIF -! - IF(KRUN==IRUN_END.AND.LPRINT_TRIP)WRITE(KLUOUT,*)YFILE(1:LEN_TRIM(YFILE)),' ended successfully !' -! -ENDIF -! -!------------------------------------------------------------------------------- -!Monthly or run mean outputs -!------------------------------------------------------------------------------- -! -IF(KRUN==IRUN_END)THEN -! -! * Recup diag file -! - YFILE =YDIAG//'RUN_'//YTIME(1:LEN_TRIM(YTIME))//'.nc' -! -! * Store output in diag file -! - YVNAME = 'SURF_STO' - ZWRITE = XDIAG_SURF_STO / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - YVNAME = 'QDIS' - ZWRITE = XDIAG_QDIS / PDURATION - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - IF(LTRIP_DIAG_MISC)THEN - YVNAME = 'QSIN' - ZWRITE = XDIAG_QIN / PDURATION - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) - ENDIF -! - IF(CGROUNDW/='DEF')THEN -! - YVNAME = 'GROUND_STO' - ZWRITE = XDIAG_GROUND_STO / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - YVNAME = 'QGF' - ZWRITE = XDIAG_QGF / PDURATION - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - ENDIF -! - IF(CVIT=='VAR')THEN -! - YVNAME = 'VEL' - ZWRITE = XDIAG_VEL / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - YVNAME = 'HSTREAM' - ZWRITE = XDIAG_HS / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - ENDIF -! - IF(LFLOODT)THEN -! - YVNAME = 'FFLOOD_T' - ZWRITE = XDIAG_FF / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - YVNAME = 'FLOOD_STO' - ZWRITE = XDIAG_FLOOD_STO / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - YVNAME = 'HFLOOD_T' - ZWRITE = XDIAG_HF / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE) -! - IF(LTRIP_DIAG_MISC)THEN -! - YVNAME = 'QFR' - ZWRITE = XDIAG_QFR / PDURATION - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'QRF' - ZWRITE = XDIAG_QRF / PDURATION - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'FSOURCE' - ZWRITE = XDIAG_SOURCE / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'VFIN' - ZWRITE = XDIAG_VFIN / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'VFOUT' - ZWRITE = XDIAG_VFOUT / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'HSF' - ZWRITE = XDIAG_HSF / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'WF' - ZWRITE = XDIAG_WF / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - YVNAME = 'LF' - ZWRITE = XDIAG_LF / IRUN_END - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,ZWRITE,ITNUM,ITVAL) -! - ENDIF -! - ENDIF -! - IF(LPRINT_TRIP)WRITE(KLUOUT,*)YFILE(1:LEN_TRIM(YFILE)),' ended successfully !' -! -ENDIF -! -IF (LHOOK) CALL DR_HOOK('DIAG_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -END SUBROUTINE DIAG_TRIP_n diff --git a/src/SURFEX/flood_update.F90 b/src/SURFEX/flood_update.F90 deleted file mode 100644 index 1129f1a07b07a89c1e24a7aad58bf5ae720392c0..0000000000000000000000000000000000000000 --- a/src/SURFEX/flood_update.F90 +++ /dev/null @@ -1,160 +0,0 @@ -! ######### - SUBROUTINE FLOOD_UPDATE (PTAB_F,PTAB_H,PTAB_VF,PAREA,PFLOOD_STO, & - PHFLOOD,PFFLOOD,PFLOOD_LEN,PWFLOOD ) -! ########################################################################## -! -!!**** *FLOOD_UPDATE* -!! -!! PURPOSE -!! ------- -! -! Compute HFLOOD, FFLOOD, LFLOOD, WFLOOD. -! -!!** METHOD -!! ------ -! -! Direct calculation -! -!! EXTERNAL -!! -------- -! -! None -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/11/06 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF, XRHOLW_T -USE MODD_TRIP_n, ONLY : XRATMED -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -REAL,DIMENSION(:), INTENT(IN) :: PTAB_F ! Flood fraction array -REAL,DIMENSION(:), INTENT(IN) :: PTAB_H ! Topo height array -REAL,DIMENSION(:), INTENT(IN) :: PTAB_VF ! Flood volume array -REAL, INTENT(IN) :: PAREA ! grid area [m²] -REAL, INTENT(IN) :: PFLOOD_STO ! Floodplain water mass [kg] -! -REAL, INTENT(OUT) :: PHFLOOD ! Floodplain fraction [-] -REAL, INTENT(OUT) :: PFFLOOD ! Floodplain water depth [m] -REAL, INTENT(OUT) :: PFLOOD_LEN ! Floodplain lenght [m] -REAL, INTENT(OUT) :: PWFLOOD ! Floodplain width [m] -! -!* 0.2 declarations of local variables -! -REAL, DIMENSION(:), ALLOCATABLE :: ZCOMP -! -REAL :: ZF_UP, ZF_DOWN, ZV_UP, ZV_DOWN, ZH_UP, ZH_DOWN, ZSLOPE -! -INTEGER, DIMENSION(:), ALLOCATABLE ::IUP, IDOWN -! -INTEGER :: I, IPAS -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -! Initialize and allocate local variable -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('FLOOD_UPDATE',0,ZHOOK_HANDLE) -PHFLOOD = 0.0 -PFFLOOD = 0.0 -PWFLOOD = 0.0 -PFLOOD_LEN = 0.0 -! -IF(PFLOOD_STO<=0 .AND. LHOOK) CALL DR_HOOK('FLOOD_UPDATE',1,ZHOOK_HANDLE) -IF(PFLOOD_STO<=0)RETURN -! -IPAS=SIZE(PTAB_VF(:)) -! -ALLOCATE(ZCOMP(IPAS)) -ALLOCATE(IUP (1)) -ALLOCATE(IDOWN(1)) -! -!------------------------------------------------------------------------------- -!compare arrays -! -ZCOMP(:) = PTAB_VF(:)-PFLOOD_STO -! -!------------------------------------------------------------------------------- -!calculate array index -! -IF(ALL(ZCOMP(:)<0.0))THEN - IUP (1) = IPAS - IDOWN(1) = IPAS -ELSE - IUP (:) = MINLOC(ZCOMP(:),ZCOMP(:)>=0.0) - IDOWN(:) = MAXLOC(ZCOMP(:),ZCOMP(:)<=0.0) -ENDIF -! -!------------------------------------------------------------------------------- -!new born -! -ZF_UP = PTAB_F (IUP (1)) -ZF_DOWN = PTAB_F (IDOWN(1)) -ZV_UP = PTAB_VF(IUP (1)) -ZV_DOWN = PTAB_VF(IDOWN(1)) -ZH_UP = PTAB_H (IUP (1)) -ZH_DOWN = PTAB_H (IDOWN(1)) -! -!------------------------------------------------------------------------------- -!Calculate new Fflood -! -ZSLOPE = 0.0 -IF(IUP(1)/=IDOWN(1)) ZSLOPE = (ZF_UP-ZF_DOWN)/(ZV_UP-ZV_DOWN) -! -PFFLOOD = ZF_DOWN + (PFLOOD_STO-ZV_DOWN) * ZSLOPE -! -!------------------------------------------------------------------------------- -!Calculate new Hflood -! -ZSLOPE = 0.0 -IF(IUP(1)/=IDOWN(1)) ZSLOPE = (ZH_UP-ZH_DOWN)/(ZV_UP-ZV_DOWN) -! -PHFLOOD = ZH_DOWN + (PFLOOD_STO-ZV_DOWN) * ZSLOPE -! -!------------------------------------------------------------------------------- -!Calculate special case -! -IF(PFFLOOD>=1.0)THEN - PFFLOOD=1.0 - PHFLOOD= ZH_DOWN + (PFLOOD_STO-ZV_DOWN)/(XRHOLW_T*PAREA) -ENDIF -! -!------------------------------------------------------------------------------- -!Calculate new Wflood, Lflood -! -PFLOOD_LEN = XRATMED*SQRT(PFFLOOD*PAREA) -PWFLOOD = PAREA*PFFLOOD/PFLOOD_LEN -! -!------------------------------------------------------------------------------- -! Deallocate local variable -!------------------------------------------------------------------------------- -! -DEALLOCATE(ZCOMP) -DEALLOCATE(IUP ) -DEALLOCATE(IDOWN) -IF (LHOOK) CALL DR_HOOK('FLOOD_UPDATE',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -END SUBROUTINE FLOOD_UPDATE diff --git a/src/SURFEX/get_conf_tripn.F90 b/src/SURFEX/get_conf_tripn.F90 deleted file mode 100644 index d8dea16ea0f4a891a406c975403c384e9ad6b7fb..0000000000000000000000000000000000000000 --- a/src/SURFEX/get_conf_tripn.F90 +++ /dev/null @@ -1,59 +0,0 @@ -! ######### -SUBROUTINE GET_CONF_TRIP_n(OFLOOD_TRIP, PTSTEP_COUPLING) -!####################################################### -! -!!**** *GET_CONF_TRIP_n* get the configuration of TRIP -!! -!! PURPOSE -!! ------- -!! -!! METHOD -!! ------ -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! -!! B. Decharme Meteo-France -!! -!! MODIFICATION -!! ------------ -!! -!! Original 05/2008 -!! -!---------------------------------------------------------------------------- -! -!* 0. DECLARATION -! ----------- -! -USE MODD_TRIP_n, ONLY : LFLOODT, XTSTEP_COUPLING -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 Declaration of arguments -! ------------------------ -! -LOGICAL,INTENT(OUT), OPTIONAL :: OFLOOD_TRIP -REAL, INTENT(OUT), OPTIONAL :: PTSTEP_COUPLING -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* 0.2 Declaration of other local variables -! ------------------------------------ -! -!---------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('GET_CONF_TRIP_N',0,ZHOOK_HANDLE) -IF(PRESENT(OFLOOD_TRIP)) OFLOOD_TRIP = LFLOODT -! -IF(PRESENT(PTSTEP_COUPLING))PTSTEP_COUPLING = XTSTEP_COUPLING -IF (LHOOK) CALL DR_HOOK('GET_CONF_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE GET_CONF_TRIP_n diff --git a/src/SURFEX/get_grid_conf_tripn.F90 b/src/SURFEX/get_grid_conf_tripn.F90 deleted file mode 100644 index c25621ca52983ce7c6eafb7fc589da6fe3225213..0000000000000000000000000000000000000000 --- a/src/SURFEX/get_grid_conf_tripn.F90 +++ /dev/null @@ -1,67 +0,0 @@ -! ######### - SUBROUTINE GET_GRID_CONF_TRIP_n(PLONMIN,PLONMAX,PLATMIN,PLATMAX,PRES,KLON,KLAT) -! ######################################### -! -!!**** *GET_GRID_CONF_TRIP_n* - routine to get the TRIP grid configuration -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------ -!! -!! EXTERNAL -!! -------- -!! -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! V. Masson *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/2004 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_GRID_TRIP -USE MODD_TRIP_GRID_n, ONLY : XGRID_TRIP -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 Declarations of arguments -! ------------------------- -! -REAL, INTENT(OUT) :: PLONMIN -REAL, INTENT(OUT) :: PLONMAX -REAL, INTENT(OUT) :: PLATMIN -REAL, INTENT(OUT) :: PLATMAX -REAL, INTENT(OUT) :: PRES -INTEGER, INTENT(OUT) :: KLON -INTEGER, INTENT(OUT) :: KLAT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* 0.2 Declarations of local variables -! ------------------------------- -!--------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('GET_GRID_CONF_TRIP_N',0,ZHOOK_HANDLE) - CALL GET_GRID_TRIP(XGRID_TRIP,PLONMIN,PLONMAX,PLATMIN,PLATMAX,PRES,KLON,KLAT) -IF (LHOOK) CALL DR_HOOK('GET_GRID_CONF_TRIP_N',1,ZHOOK_HANDLE) -! -!--------------------------------------------------------------------------- -! -END SUBROUTINE GET_GRID_CONF_TRIP_n diff --git a/src/SURFEX/get_lonlat_trip.F90 b/src/SURFEX/get_lonlat_trip.F90 deleted file mode 100644 index f9b037dc13fc0635e1e7a3a485ecff013cbba089..0000000000000000000000000000000000000000 --- a/src/SURFEX/get_lonlat_trip.F90 +++ /dev/null @@ -1,64 +0,0 @@ -!############################################### - SUBROUTINE GET_LONLAT_TRIP(KLON,KLAT,PLON,PLAT) -!############################################### -! -!!**** *GET_LONLAT_TRIP* - routine to get the TRIP longitude and latitude -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------ -!! -!! EXTERNAL -!! -------- -!! -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! V. Masson *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/2004 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_GRID_TRIP -USE MODD_TRIP_GRID_n, ONLY : XGRID_TRIP -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 Declarations of arguments -! ------------------------- -! -INTEGER, INTENT(IN ) :: KLON -INTEGER, INTENT(IN ) :: KLAT -REAL, DIMENSION(KLON), INTENT(OUT) :: PLON -REAL, DIMENSION(KLAT), INTENT(OUT) :: PLAT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* 0.2 Declarations of local variables -! ------------------------------- -!--------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('GET_LONLAT_TRIP',0,ZHOOK_HANDLE) - CALL GET_GRID_TRIP(XGRID_TRIP,PLON=PLON,PLAT=PLAT) -IF (LHOOK) CALL DR_HOOK('GET_LONLAT_TRIP',1,ZHOOK_HANDLE) -! -!--------------------------------------------------------------------------- -! -END SUBROUTINE GET_LONLAT_TRIP diff --git a/src/SURFEX/get_trip_sizen.F90 b/src/SURFEX/get_trip_sizen.F90 deleted file mode 100644 index 1e7a2e68e8dc54cc3fc5ad7a5a6924852fcc6168..0000000000000000000000000000000000000000 --- a/src/SURFEX/get_trip_sizen.F90 +++ /dev/null @@ -1,57 +0,0 @@ -! ######### - SUBROUTINE GET_TRIP_SIZE_n(KX,KY) -! ##################################################### -! -!!**** *GET_TRIP_SIZE_n* - routine to get X/Y size -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------- -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2008 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_GRID_n, ONLY : XAREA -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 Declarations of arguments -! ------------------------- -! -! -INTEGER, INTENT(OUT) :: KX ! number of X points of this surface type -INTEGER, INTENT(OUT) :: KY ! number of Y points of this surface type -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* 0.2 Declarations of local variables -! ------------------------------- -! -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('GET_TRIP_SIZE_N',0,ZHOOK_HANDLE) -KX = SIZE(XAREA,1) -KY = SIZE(XAREA,2) -IF (LHOOK) CALL DR_HOOK('GET_TRIP_SIZE_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE GET_TRIP_SIZE_n diff --git a/src/SURFEX/goto_trip.F90 b/src/SURFEX/goto_trip.F90 deleted file mode 100644 index 060caff2746f7f448833041a65ed56abdeab6798..0000000000000000000000000000000000000000 --- a/src/SURFEX/goto_trip.F90 +++ /dev/null @@ -1,19 +0,0 @@ -SUBROUTINE GOTO_TRIP(KMI, LKFROM) -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -USE MODE_MODELN_TRIP_HANDLER -! -IMPLICIT NONE -! -INTEGER, INTENT(IN) :: KMI -LOGICAL, INTENT(IN) :: LKFROM -! -REAL(KIND=JPRB) :: ZHOOK_HANDLE -!! -IF (LHOOK) CALL DR_HOOK('GOTO_TRIP',0,ZHOOK_HANDLE) - CALL GOTO_MODEL_TRIP(KMI, LKFROM) -IF (LHOOK) CALL DR_HOOK('GOTO_TRIP',1,ZHOOK_HANDLE) -!! -END SUBROUTINE GOTO_TRIP diff --git a/src/SURFEX/goto_wrapper_trip.F90 b/src/SURFEX/goto_wrapper_trip.F90 deleted file mode 100644 index 282b2a0f8ec663e08f356f3bfa3dca1575998692..0000000000000000000000000000000000000000 --- a/src/SURFEX/goto_wrapper_trip.F90 +++ /dev/null @@ -1,20 +0,0 @@ -SUBROUTINE GOTO_WRAPPER_TRIP(KFROM,KTO, LKFROM) -USE MODD_TRIP_n -USE MODD_DIAG_TRIP_n -USE MODD_TRIP_GRID_n -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -INTEGER,INTENT(IN) :: KFROM,KTO -LOGICAL, INTENT(IN) :: LKFROM -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('GOTO_WRAPPER_TRIP',0,ZHOOK_HANDLE) - CALL TRIP_GOTO_MODEL(KFROM, KTO, LKFROM) - CALL DIAG_TRIP_GOTO_MODEL(KFROM, KTO, LKFROM) - CALL TRIP_GRID_GOTO_MODEL(KFROM, KTO, LKFROM) -IF (LHOOK) CALL DR_HOOK('GOTO_WRAPPER_TRIP',1,ZHOOK_HANDLE) -! -END SUBROUTINE GOTO_WRAPPER_TRIP diff --git a/src/SURFEX/init_diag_tripn.F90 b/src/SURFEX/init_diag_tripn.F90 deleted file mode 100644 index 9c2ecdd3866e323b91e0de5de07912d3923f415a..0000000000000000000000000000000000000000 --- a/src/SURFEX/init_diag_tripn.F90 +++ /dev/null @@ -1,307 +0,0 @@ -! ######### - SUBROUTINE INIT_DIAG_TRIP_n (KLUOUT,HFILE,KLON,KLAT,HTITLE,HTIMEUNIT,OTIME) -! ####################################################################### -! -!!**** *INIT_DIAG_TRIP_n* -!! -!! PURPOSE -!! ------- -! -! Define the name and unit of each trip output variable. -! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 27/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_TRIP_NETCDF -! -USE MODD_TRIP_n, ONLY : CGROUNDW, CVIT, LFLOODT, LNCPRINT, LTRIP_DIAG_MISC -USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF -! -USE MODD_DIAG_TRIP_n -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -USE MODI_GET_LONLAT_TRIP -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* 0.1 declarations of arguments -! -! - CHARACTER(LEN=*), INTENT(IN) :: HFILE, HTITLE, HTIMEUNIT -! -INTEGER, INTENT(IN) :: KLUOUT, KLON, KLAT -! -LOGICAL, INTENT(IN) :: OTIME -! -!* 0.2 declarations of output variables -! - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVNAME !Name of each output variable - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVLNAME !Long name of each output variables - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YUNIT !Unit of each output variable -! - CHARACTER(LEN=nf_max_name) :: YFILE,YTITLE,YTIMEUNIT -! -REAL, DIMENSION(:), ALLOCATABLE :: ZLON -REAL, DIMENSION(:), ALLOCATABLE :: ZLAT -! -INTEGER :: INDIAG, INCID, INUM -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -! * Number of output variable -! -IF (LHOOK) CALL DR_HOOK('INIT_DIAG_TRIP_N',0,ZHOOK_HANDLE) -INUM = 0 -INDIAG = 2 -IF(LTRIP_DIAG_MISC) INDIAG = INDIAG + 1 -IF(CGROUNDW/='DEF') INDIAG = INDIAG + 2 -IF(CVIT=='VAR') INDIAG = INDIAG + 2 -IF(LFLOODT)THEN - INDIAG = INDIAG + 3 - IF(LTRIP_DIAG_MISC) INDIAG = INDIAG + 8 -ENDIF -! -! * Allocate netcdf file attributs -! -ALLOCATE(YVNAME (INDIAG)) -ALLOCATE(YVLNAME (INDIAG)) -ALLOCATE(YUNIT (INDIAG)) -! -ALLOCATE(ZLON(KLON)) -ALLOCATE(ZLAT(KLAT)) -! -! * Initialyse netcdf file attributs -! -INUM = INUM + 1 -YVNAME (INUM) = 'SURF_STO ' -YVLNAME(INUM) = 'River storage ' -YUNIT (INUM) = 'kg m-2 ' -! -INUM = INUM + 1 -YVNAME (INUM) = 'QDIS ' -YVLNAME(INUM) = 'Discharge ' -YUNIT (INUM) = 'm3 s-1 ' -! -IF(LTRIP_DIAG_MISC)THEN - INUM = INUM + 1 - YVNAME (INUM) = 'QSIN ' - YVLNAME(INUM) = 'Inflow to the river ' - YUNIT (INUM) = 'm3 s-1 ' -ENDIF -! -IF(CGROUNDW/='DEF')THEN -! - INUM = INUM + 1 - YVNAME (INUM) = 'GROUND_STO ' - YVLNAME(INUM) = 'Groundwater storage ' - YUNIT (INUM) = 'kg m-2 ' -! - INUM = INUM + 1 - YVNAME (INUM) = 'QGF' - YVLNAME(INUM) = 'Groundwater flow to river ' - YUNIT (INUM) = 'm3 s-1 ' -! -ENDIF -! -IF(CVIT=='VAR')THEN -! - INUM = INUM + 1 - YVNAME (INUM) = 'VEL ' - YVLNAME(INUM) = 'Stream flow velocity ' - YUNIT (INUM) = 'm s-1 ' -! - INUM = INUM + 1 - YVNAME (INUM) = 'HSTREAM ' - YVLNAME(INUM) = 'Stream river depth ' - YUNIT (INUM) = 'm ' -! -ENDIF -! -IF(LFLOODT)THEN -! - INUM = INUM + 1 - YVNAME (INUM) = 'FLOOD_STO ' - YVLNAME(INUM) = 'Floodplain storage ' - YUNIT (INUM) = 'kg m-2 ' -! - INUM = INUM + 1 - YVNAME (INUM) = 'FFLOOD_T ' - YVLNAME(INUM) = 'TRIP flooded fraction ' - YUNIT (INUM) = '- ' -! - INUM = INUM + 1 - YVNAME (INUM) = 'HFLOOD_T ' - YVLNAME(INUM) = 'Flood depth ' - YUNIT (INUM) = 'm ' -! - IF(LTRIP_DIAG_MISC)THEN -! - INUM = INUM + 1 - YVNAME (INUM)= 'FSOURCE ' - YVLNAME(INUM)= 'Floodplains source (Pf-Ef-If)' - YUNIT (INUM)= 'kg m-2 ' -! - INUM = INUM + 1 - YVNAME (INUM)= 'VFIN ' - YVLNAME(INUM)= 'River to flood velocity ' - YUNIT (INUM)= 'm s-1 ' -! - INUM = INUM + 1 - YVNAME (INUM)= 'QRF ' - YVLNAME(INUM)= 'River flow to floodplain ' - YUNIT (INUM)= 'm3 s-1 ' -! - INUM = INUM + 1 - YVNAME (INUM)= 'VFOUT ' - YVLNAME(INUM)= 'Flood to river velocity ' - YUNIT (INUM)= 'm s-1 ' -! - INUM = INUM + 1 - YVNAME (INUM)= 'QFR ' - YVLNAME(INUM)= 'Flood flow to river ' - YUNIT (INUM)= 'm3 s-1 ' -! - INUM = INUM + 1 - YVNAME (INUM)= 'HSF ' - YVLNAME(INUM)= 'River-Flood depth comparison' - YUNIT (INUM)= 'm ' -! - INUM = INUM + 1 - YVNAME (INUM)= 'WF ' - YVLNAME(INUM)= 'Flood width during dt ' - YUNIT (INUM)= 'm ' -! - INUM = INUM + 1 - YVNAME (INUM)= 'LF ' - YVLNAME(INUM)= 'Flood lenght during dt ' - YUNIT (INUM)= 'm ' -! - ENDIF -! -ENDIF -! -! * Allocate and initialyse diagnostic variables -! -ALLOCATE(XDIAG_SURF_STO(KLON,KLAT)) -ALLOCATE(XDIAG_QDIS (KLON,KLAT)) -XDIAG_SURF_STO(:,:) = 0.0 -XDIAG_QDIS (:,:) = 0.0 -! -IF(LTRIP_DIAG_MISC)THEN - ALLOCATE(XDIAG_QIN(KLON,KLAT)) - XDIAG_QIN(:,:) = 0.0 -ELSE - ALLOCATE(XDIAG_QIN(0,0)) -ENDIF -! -IF(CGROUNDW/='DEF')THEN - ALLOCATE(XDIAG_GROUND_STO (KLON,KLAT)) - ALLOCATE(XDIAG_QGF (KLON,KLAT)) - XDIAG_GROUND_STO (:,:) = 0.0 - XDIAG_QGF (:,:) = 0.0 -ELSE - ALLOCATE(XDIAG_GROUND_STO (0,0)) - ALLOCATE(XDIAG_QGF (0,0)) -ENDIF -! -IF(CVIT=='VAR')THEN - ALLOCATE(XDIAG_VEL(KLON,KLAT)) - ALLOCATE(XDIAG_HS (KLON,KLAT)) - XDIAG_VEL(:,:) = 0.0 - XDIAG_HS (:,:) = 0.0 -ELSE - ALLOCATE(XDIAG_VEL(0,0)) - ALLOCATE(XDIAG_HS (0,0)) -ENDIF -! -IF(LFLOODT)THEN - ALLOCATE(XDIAG_FLOOD_STO (KLON,KLAT)) - ALLOCATE(XDIAG_FF (KLON,KLAT)) - ALLOCATE(XDIAG_HF (KLON,KLAT)) - XDIAG_FLOOD_STO (:,:) = 0.0 - XDIAG_FF (:,:) = 0.0 - XDIAG_HF (:,:) = 0.0 - IF(LTRIP_DIAG_MISC)THEN - ALLOCATE(XDIAG_QFR (KLON,KLAT)) - ALLOCATE(XDIAG_QRF (KLON,KLAT)) - ALLOCATE(XDIAG_VFIN (KLON,KLAT)) - ALLOCATE(XDIAG_VFOUT (KLON,KLAT)) - ALLOCATE(XDIAG_WF (KLON,KLAT)) - ALLOCATE(XDIAG_LF (KLON,KLAT)) - ALLOCATE(XDIAG_HSF (KLON,KLAT)) - ALLOCATE(XDIAG_SOURCE(KLON,KLAT)) - XDIAG_QFR (:,:) = 0.0 - XDIAG_QRF (:,:) = 0.0 - XDIAG_VFIN (:,:) = 0.0 - XDIAG_VFOUT (:,:) = 0.0 - XDIAG_WF (:,:) = 0.0 - XDIAG_LF (:,:) = 0.0 - XDIAG_HSF (:,:) = 0.0 - XDIAG_SOURCE(:,:) = 0.0 - ELSE - ALLOCATE(XDIAG_QFR (0,0)) - ALLOCATE(XDIAG_QRF (0,0)) - ALLOCATE(XDIAG_VFIN (0,0)) - ALLOCATE(XDIAG_VFOUT (0,0)) - ALLOCATE(XDIAG_WF (0,0)) - ALLOCATE(XDIAG_LF (0,0)) - ALLOCATE(XDIAG_HSF (0,0)) - ALLOCATE(XDIAG_SOURCE(0,0)) - ENDIF -ELSE - ALLOCATE(XDIAG_FLOOD_STO (0,0)) - ALLOCATE(XDIAG_HF (0,0)) - ALLOCATE(XDIAG_FF (0,0)) - ALLOCATE(XDIAG_QFR (0,0)) - ALLOCATE(XDIAG_QRF (0,0)) - ALLOCATE(XDIAG_VFIN (0,0)) - ALLOCATE(XDIAG_VFOUT (0,0)) - ALLOCATE(XDIAG_WF (0,0)) - ALLOCATE(XDIAG_LF (0,0)) - ALLOCATE(XDIAG_HSF (0,0)) - ALLOCATE(XDIAG_SOURCE (0,0)) -ENDIF -! -! * Create netcdf file -! -YFILE = HFILE(1:LEN_TRIM(HFILE)) -YTITLE = HTITLE(1:LEN_TRIM(HTITLE)) -YTIMEUNIT = HTIMEUNIT(1:LEN_TRIM(HTIMEUNIT)) -! - CALL GET_LONLAT_TRIP(KLON,KLAT,ZLON,ZLAT) -! - CALL NCCREATE(KLUOUT,YFILE,YTITLE,YTIMEUNIT,YVNAME,YVLNAME,YUNIT,ZLON,ZLAT,XTRIP_UNDEF,LNCPRINT,INCID,OTIME) -! - CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) -! -! * Deallocate netcdf file attributs -! -DEALLOCATE(YVNAME ) -DEALLOCATE(YVLNAME ) -DEALLOCATE(YUNIT ) -DEALLOCATE(ZLON ) -DEALLOCATE(ZLAT ) -IF (LHOOK) CALL DR_HOOK('INIT_DIAG_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE INIT_DIAG_TRIP_n diff --git a/src/SURFEX/init_param_tripn.F90 b/src/SURFEX/init_param_tripn.F90 deleted file mode 100644 index 8b189f11547d08a032fe6557c42819692eff22ea..0000000000000000000000000000000000000000 --- a/src/SURFEX/init_param_tripn.F90 +++ /dev/null @@ -1,216 +0,0 @@ -! ######### - SUBROUTINE INIT_PARAM_TRIP_n (KLUOUT,HFILE,KLON,KLAT,HTITLE,HTIMEUNIT) -! ####################################################################### -! -!!**** *INIT_PARAM_TRIP_n* -!! -!! PURPOSE -!! ------- -! -! Define the name and unit of each trip parameter. -! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 27/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_TRIP_NETCDF -! -USE MODD_TRIP_n, ONLY : CGROUNDW, CVIT, LFLOODT, LNCPRINT -USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF, NTRIPTAB -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -USE MODI_GET_LONLAT_TRIP -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* 0.1 declarations of arguments -! -! - CHARACTER(LEN=*), INTENT(IN) :: HFILE, HTITLE, HTIMEUNIT -! -INTEGER, INTENT(IN) :: KLUOUT, KLON, KLAT -! -!* 0.2 declarations of output variables -! - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVNAME !Name of each output variable - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVLNAME !Long name of each output variables - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YUNIT !Unit of each output variable -! - CHARACTER(LEN=nf_max_name) :: YFILE,YTITLE,YTIMEUNIT -! -LOGICAL, DIMENSION(:), ALLOCATABLE :: LZLEN -! -REAL, DIMENSION(:), ALLOCATABLE :: ZLON -REAL, DIMENSION(:), ALLOCATABLE :: ZLAT -! -INTEGER :: INPARAM, INCID, INUM -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -! * Number of output variable -! -IF (LHOOK) CALL DR_HOOK('INIT_PARAM_TRIP_N',0,ZHOOK_HANDLE) -INPARAM = 6 -IF(CGROUNDW/='DEF') INPARAM = INPARAM + 1 -IF(CVIT=='VAR')INPARAM = INPARAM + 3 -IF(LFLOODT)INPARAM = INPARAM + 5 -! -! * Allocate netcdf file attributs -! -ALLOCATE(YVNAME (INPARAM)) -ALLOCATE(YVLNAME (INPARAM)) -ALLOCATE(YUNIT (INPARAM)) -ALLOCATE(LZLEN (INPARAM)) -! -ALLOCATE(ZLON(KLON)) -ALLOCATE(ZLAT(KLAT)) -! -! * Initialyse netcdf file attributs -! -YVNAME (1) = 'FLOWDIR ' -YVLNAME(1) = 'Flow direction ' -YUNIT (1) = '- ' -LZLEN (1) = .FALSE. -! -YVNAME (2) = 'RIVSEQ ' -YVLNAME(2) = 'River sequence ' -YUNIT (2) = '- ' -LZLEN (2) = .FALSE. -! -YVNAME (3) = 'RIVLEN ' -YVLNAME(3) = 'River length ' -YUNIT (3) = 'm ' -LZLEN (3) = .FALSE. -! -YVNAME (4) = 'NUM_BAS ' -YVLNAME(4) = 'Trip basin reference number' -YUNIT (4) = '- ' -LZLEN (4) = .FALSE. -! -YVNAME (5) = 'ELEV ' -YVLNAME(5) = 'Surface elevation along the river channel' -YUNIT (5) = 'm ' -LZLEN (5) = .FALSE. -! -YVNAME (6) = 'DR_AREA ' -YVLNAME(6) = 'Trip drainage area ' -YUNIT (6) = 'm2 ' -LZLEN (6) = .FALSE. -! -INUM = 6 -! -IF(CGROUNDW/='DEF')THEN -! -INUM = INUM + 1 -! -YVNAME (INUM) = 'TAUG ' -YVLNAME(INUM) = 'Groundwater transfert time (0=permafrost area)' -YUNIT (INUM) = 'days ' -LZLEN (INUM) = .FALSE. -! -ENDIF -! -IF(CVIT=='VAR')THEN -! -INUM = INUM + 1 -YVNAME (INUM) = 'N_RIV ' -YVLNAME(INUM) = 'Manning coefficient ' -YUNIT (INUM) = '- ' -LZLEN (INUM) = .FALSE. -! -INUM = INUM + 1 -YVNAME (INUM) = 'WIDTHRIV ' -YVLNAME(INUM) = 'Stream river width ' -YUNIT (INUM) = 'm ' -LZLEN (INUM) = .FALSE. -! -INUM = INUM + 1 -YVNAME (INUM) = 'SLOPERIV ' -YVLNAME(INUM) = 'Stream River slope ' -YUNIT (INUM) = 'm/m ' -LZLEN (INUM) = .FALSE. -! -ENDIF -! -IF(LFLOODT)THEN -! -INUM = INUM + 1 -YVNAME (INUM) = 'RIVDEPTH ' -YVLNAME(INUM) = 'Stream River Depth (Hc) ' -YUNIT (INUM) = 'm ' -LZLEN (INUM) = .FALSE. -! -INUM = INUM + 1 -YVNAME (INUM) = 'NFLOOD ' -YVLNAME(INUM) = 'Manning coef for flood ' -YUNIT (INUM) = '- ' -LZLEN (INUM) = .FALSE. -! -INUM = INUM + 1 -YVNAME (INUM) = 'TABF ' -YVLNAME(INUM) = 'Potential flood fraction ' -YUNIT (INUM) = '- ' -LZLEN (INUM) = .TRUE. -! -INUM = INUM + 1 -YVNAME (INUM)= 'TABH ' -YVLNAME(INUM)= 'Topographic height ' -YUNIT (INUM)= 'm ' -LZLEN (INUM)= .TRUE. -! -INUM = INUM + 1 -YVNAME (INUM)= 'TABVF ' -YVLNAME(INUM)= 'Potential flood volume ' -YUNIT (INUM)= 'kg ' -LZLEN (INUM)= .TRUE. -! -ENDIF -! -! * Create netcdf file -! -YFILE = HFILE(1:LEN_TRIM(HFILE)) -YTITLE = HTITLE(1:LEN_TRIM(HTITLE)) -YTIMEUNIT = HTIMEUNIT(1:LEN_TRIM(HTIMEUNIT)) -! - CALL GET_LONLAT_TRIP(KLON,KLAT,ZLON,ZLAT) -! -IF(ALL(.NOT.LZLEN(:)))THEN - CALL NCCREATE(KLUOUT,YFILE,YTITLE,YTIMEUNIT,YVNAME,YVLNAME,YUNIT, & - ZLON,ZLAT,XTRIP_UNDEF,LNCPRINT,INCID,.FALSE.) -ELSE - CALL NCCREATE(KLUOUT,YFILE,YTITLE,YTIMEUNIT,YVNAME,YVLNAME,YUNIT, & - ZLON,ZLAT,XTRIP_UNDEF,LNCPRINT,INCID,.FALSE.,NTRIPTAB,LZLEN) -ENDIF -! - CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) -! -! * Deallocate netcdf file attributs -! -DEALLOCATE(YVNAME ) -DEALLOCATE(YVLNAME ) -DEALLOCATE(YUNIT ) -DEALLOCATE(ZLON ) -DEALLOCATE(ZLAT ) -IF (LHOOK) CALL DR_HOOK('INIT_PARAM_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE INIT_PARAM_TRIP_n diff --git a/src/SURFEX/init_restart_tripn.F90 b/src/SURFEX/init_restart_tripn.F90 deleted file mode 100644 index cbce15ec24f4fca1ebf52b5d15a2c83d6fc87b73..0000000000000000000000000000000000000000 --- a/src/SURFEX/init_restart_tripn.F90 +++ /dev/null @@ -1,145 +0,0 @@ -! ######### - SUBROUTINE INIT_RESTART_TRIP_n (KLUOUT,HFILE,KLON,KLAT,HTITLE,HTIMEUNIT,OTIME ) -! ####################################################################### -! -!!**** *INIT_RESTART_TRIP_n* -!! -!! PURPOSE -!! ------- -! -! Define the name and unit of each trip restart variables. -! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 27/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_TRIP_NETCDF -! -USE MODD_TRIP_n, ONLY : CGROUNDW, LFLOODT, LNCPRINT -USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF -! -USE MODD_DIAG_TRIP_n -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -USE MODI_GET_LONLAT_TRIP -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* 0.1 declarations of arguments -! -! - CHARACTER(LEN=*), INTENT(IN) :: HFILE, HTITLE, HTIMEUNIT -! -INTEGER, INTENT(IN) :: KLUOUT, KLON, KLAT -! -LOGICAL, INTENT(IN) :: OTIME -! -!* 0.2 declarations of restart variables -! - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVNAME !Name of each restart variable - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YVLNAME !Long name of each restart variables - CHARACTER(LEN=nf_max_name), DIMENSION(:), ALLOCATABLE :: YUNIT !Unit of each restart variable -! - CHARACTER(LEN=nf_max_name) :: YFILE,YTITLE,YTIMEUNIT -! -REAL, DIMENSION(:), ALLOCATABLE :: ZLON -REAL, DIMENSION(:), ALLOCATABLE :: ZLAT -! -INTEGER :: IND, INCID, INUM -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -! * Number of restart variable -! -IF (LHOOK) CALL DR_HOOK('INIT_RESTART_TRIP_N',0,ZHOOK_HANDLE) -IND = 1 -IF(CGROUNDW/='DEF') IND = IND + 1 -IF(LFLOODT)IND = IND + 3 -! -! * Allocate netcdf file attributs -! -ALLOCATE(YVNAME (IND)) -ALLOCATE(YVLNAME (IND)) -ALLOCATE(YUNIT (IND)) -! -ALLOCATE(ZLON(KLON)) -ALLOCATE(ZLAT(KLAT)) -! -! * Initialyse netcdf file attributs -! -YVNAME (1) = 'SURF_STO ' -YVLNAME(1) = 'River storage ' -YUNIT (1) = 'kg ' -! -INUM = 1 -! -IF(CGROUNDW/='DEF')THEN -! -INUM = INUM + 1 -YVNAME (INUM) = 'GROUND_STO ' -YVLNAME(INUM) = 'Groundwater storage ' -YUNIT (INUM) = 'kg ' -! -ENDIF -! -IF(LFLOODT)THEN -! -INUM = INUM + 1 -YVNAME (INUM) = 'FLOOD_STO ' -YVLNAME(INUM) = 'Floodplain storage ' -YUNIT (INUM) = 'kg ' - -INUM = INUM + 1 -YVNAME (INUM) = 'FFLOOD_T ' -YVLNAME(INUM) = 'TRIP flooded fraction ' -YUNIT (INUM) = '- ' -! -INUM = INUM + 1 -YVNAME (INUM) = 'HFLOOD_T ' -YVLNAME(INUM) = 'Flood depth ' -YUNIT (INUM) = 'm ' -! -ENDIF -! -! * Create netcdf file -! -YFILE = HFILE(1:LEN_TRIM(HFILE)) -YTITLE = HTITLE(1:LEN_TRIM(HTITLE)) -YTIMEUNIT = HTIMEUNIT(1:LEN_TRIM(HTIMEUNIT)) -! - CALL GET_LONLAT_TRIP(KLON,KLAT,ZLON,ZLAT) -! - CALL NCCREATE(KLUOUT,YFILE,YTITLE,YTIMEUNIT,YVNAME,YVLNAME,YUNIT,ZLON,ZLAT,XTRIP_UNDEF,LNCPRINT,INCID,OTIME) -! - CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) -! -! * Deallocate netcdf file attributs -! -DEALLOCATE(YVNAME ) -DEALLOCATE(YVLNAME ) -DEALLOCATE(YUNIT ) -DEALLOCATE(ZLON ) -DEALLOCATE(ZLAT ) -IF (LHOOK) CALL DR_HOOK('INIT_RESTART_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE INIT_RESTART_TRIP_n diff --git a/src/SURFEX/init_trip_par.F90 b/src/SURFEX/init_trip_par.F90 deleted file mode 100644 index 6d7cf556c2683e7afac26d6eb988cf8e53d19b8e..0000000000000000000000000000000000000000 --- a/src/SURFEX/init_trip_par.F90 +++ /dev/null @@ -1,56 +0,0 @@ -! ######### - SUBROUTINE INIT_TRIP_PAR -! ######################## -! -! -!!**** *INIT_TRIP_PAR* - Initialization of TRIP parameters -!! -!! PURPOSE -!! ------- -! The purpose of this routine is to specify the -! parameters related to the TRIP RRM. -! -!! -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 22/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! - -REAL(KIND=JPRB) :: ZHOOK_HANDLE - -IF (LHOOK) CALL DR_HOOK('INIT_TRIP_PAR',0,ZHOOK_HANDLE) -XTRIP_UNDEF = 1.0E20 -NTRIPTAB = 1000 -! -XM_EXP = 2.0/3.0 -! -XRHOLW_T = 1000.0 -XDAY_T = 86400.0 -XSEA_T = 135.3E12 -XYEAR_T = 365.0 -! -XRAD_T = 6371229. -XPI_T = 2.*ASIN(1.) -IF (LHOOK) CALL DR_HOOK('INIT_TRIP_PAR',1,ZHOOK_HANDLE) -! -!-------------------------------------------------------------------------------- -! -END SUBROUTINE INIT_TRIP_PAR diff --git a/src/SURFEX/init_tripn.F90 b/src/SURFEX/init_tripn.F90 deleted file mode 100644 index 09751a56d009c5db791b94df5bd98cfcda28dfa8..0000000000000000000000000000000000000000 --- a/src/SURFEX/init_tripn.F90 +++ /dev/null @@ -1,560 +0,0 @@ -!###################################################### -SUBROUTINE INIT_TRIP_n (HPROGRAM,KYEAR,KMONTH,ORESTART) -!###################################################### -! -!!**** *INIT_TRIP_n* -!! -!! PURPOSE -!! ------- -! -! Initialize TRIP variables and parameters. -! -!!** METHOD -!! ------ -! -! Direct calculation -! -!! EXTERNAL -!! -------- -! -! None -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/02/05 -!! For surfex 21/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR -USE MODD_TRIP_GRID_n, ONLY : XGRID_TRIP, XAREA, GMASK -USE MODD_TRIP_n -! -USE MODD_READ_NAMELIST, ONLY : LNAM_READ -! -USE MODE_GRID_TRIP -USE MODE_TRIP_INIT -USE MODE_RW_TRIP -! -USE MODI_INIT_TRIP_PAR -USE MODI_GET_LUOUT -! -USE MODI_DEFAULT_TRIP -USE MODI_READ_NAM_GRID_TRIP -USE MODI_READ_TRIP_CONF_n -USE MODI_INIT_DIAG_TRIP_n -USE MODI_INIT_RESTART_TRIP_n -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!------------------------------------------------------------------------------- -! -!* 0.1 declarations of arguments -! - CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM -INTEGER, INTENT(IN) :: KYEAR -INTEGER, INTENT(IN) :: KMONTH -LOGICAL, INTENT(IN) :: ORESTART -! -!------------------------------------------------------------------------------- -! -!* 0.2 declarations of local variables -! - CHARACTER(LEN=13), PARAMETER :: YFILE_PARAM ='TRIP_PARAM.nc' - CHARACTER(LEN=12), PARAMETER :: YFILE_INIT ='TRIP_PREP.nc' - CHARACTER(LEN=15), PARAMETER :: YFILE_RESTART='TRIP_RESTART.nc' - CHARACTER(LEN=10), PARAMETER :: YDIAG ='TRIP_DIAG_' -! - CHARACTER(LEN=6) :: YTIME -! - CHARACTER(LEN=50) :: YFILE - CHARACTER(LEN=20) :: YVAR -! -REAL,DIMENSION(:,:),ALLOCATABLE :: ZREAD, ZHSTREAM -! -INTEGER :: ILUOUT ! output listing logical unit -! -REAL :: ZLONMIN ! minimum longitude (degrees) -REAL :: ZLONMAX ! maximum longitude (degrees) -REAL :: ZLATMIN ! minimum latitude (degrees) -REAL :: ZLATMAX ! maximum latitude (degrees) -REAL :: ZGRID_RES ! 1° or 0.5° resolution -INTEGER :: ILON ! number of points in longitude -INTEGER :: ILAT ! number of points in latitude -! -INTEGER :: IWORK, IFLOOD, I, J, INI -! -!------------------------------------------------------------------------------- -!Output attribut for netcdf diag file -!------------------------------------------------------------------------------- -! - CHARACTER(LEN=50) :: YTITLE,YTIMEUNIT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! YTITLE = Title of each output file -! YTIMEUNIT = Time unit in each output file if present -! -!------------------------------------------------------------------------------- -!Initilyse TRIP -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('INIT_TRIP_N',0,ZHOOK_HANDLE) - CALL INIT_TRIP_PAR -! - CALL GET_LUOUT(HPROGRAM,ILUOUT) -! -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)'!' -WRITE(ILUOUT,*)'! TRIP RUN !!!!!!!!!!!!!' -WRITE(ILUOUT,*)'!' -! -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)' INITIALYSE TRIP ' -WRITE(ILUOUT,*)'' -! -!------------------------------------------------------------------------------- -! -IF (LNAM_READ) THEN -! -! * default values for the TRIP configuration -! - CALL DEFAULT_TRIP(CGROUNDW,CVIT,LFLOODT,LDIAG_CPL,LTRIP_DIAG_MISC, & - LNCPRINT,LPRINT_TRIP,XTSTEP_COUPLING,XTRIP_TSTEP,& - XDATA_TAUG,XCVEL,XRATMED ) -! -ENDIF -! -! * TRIP general options -! - CALL READ_TRIP_CONF_n(HPROGRAM) -! -! * Read TRIP grid configuration -! - CALL READ_NAM_GRID_TRIP(HPROGRAM) -! -! * Store TRIP grid configuration -! - CALL GET_GRID_TRIP(XGRID_TRIP,ZLONMIN,ZLONMAX,ZLATMIN,ZLATMAX,ZGRID_RES,ILON,ILAT) -! -!------------------------------------------------------------------------------- -! * Check options -!------------------------------------------------------------------------------- -! -IF(CVIT == 'VAR')THEN - IF(XCVEL/=0.5)THEN - XCVEL=0.5 - WRITE(ILUOUT,*)'! ATTENTION : You use the velocity scheme and XCVEL is not 0.5 m/s !!!' - WRITE(ILUOUT,*)'! ATTENTION : XCVEL put at 0.5 m/s !!!' - ENDIF -ELSE - IF(XCVEL<0.1)THEN - WRITE(ILUOUT,*)'!!! ATTENTION : XCVEL < 0.1 m/s !!! Not good !!!' - STOP - ENDIF -ENDIF -! -IF(LFLOODT)THEN - IF(CGROUNDW=='DEF')THEN - WRITE(ILUOUT,*)'! ATTENTION : You use the flooding scheme without the groundwater scheme !!!' - ENDIF - IF(CVIT /= 'VAR')THEN - WRITE(ILUOUT,*)'! You cannot use the flooding scheme without the variable velocity scheme !!!' - STOP - ENDIF - IF(XTRIP_TSTEP>3600.)THEN - WRITE(ILUOUT,*)'!' - WRITE(ILUOUT,*)'! For flooding, the TRIP time step is too big !!!' - WRITE(ILUOUT,*)'! XTRIP_TSTEP must be equal or inferior to 3600s !!!' - WRITE(ILUOUT,*)'!' - STOP - ENDIF -ENDIF -! -IF(MOD(XTSTEP_COUPLING,XTRIP_TSTEP)/=0.)THEN - WRITE(ILUOUT,*)'! XTSTEP_COUPLING and XTRIP_TSTEP are not good !!!' - WRITE(ILUOUT,*)'! MOD(XTSTEP_COUPLING,XTRIP_TSTEP) should be 0 !!!' - STOP -ENDIF -! -WRITE(ILUOUT,*)'! ',ZGRID_RES,'° TRIP run !!!' -! -IF(ZGRID_RES/=1.0)THEN -! - IF(XRATMED==1.4)THEN - WRITE(ILUOUT,*)'! meandering ratio is 1.4 at 0.5° or 1° resolution !!!' - WRITE(ILUOUT,*)'! for other resolution change XRATMED in namelist !!!' - IF(ZGRID_RES<0.5)STOP - ENDIF -! -ENDIF -! -!------------------------------------------------------------------------------- -!Allocate arguments -!------------------------------------------------------------------------------- -! -ALLOCATE(IGRCN (ILON,ILAT)) -ALLOCATE(ISEQ (ILON,ILAT)) -ALLOCATE(INEXTX (ILON,ILAT)) -ALLOCATE(INEXTY (ILON,ILAT)) -ALLOCATE(XLEN (ILON,ILAT)) -ALLOCATE(XAREA (ILON,ILAT)) -ALLOCATE(XSURF_STO (ILON,ILAT)) -! -IF(CGROUNDW/='DEF')THEN - ALLOCATE(XGROUND_STO(ILON,ILAT)) - ALLOCATE(XTAUG (ILON,ILAT)) -ELSE - ALLOCATE(XGROUND_STO(0,0)) - ALLOCATE(XTAUG (0,0)) -ENDIF -! -IF(LFLOODT)THEN - ALLOCATE(XN_FLOOD (ILON,ILAT)) - ALLOCATE(XHC_BED (ILON,ILAT)) - ALLOCATE(XFLOOD_STO (ILON,ILAT)) - ALLOCATE(XWFLOOD (ILON,ILAT)) - ALLOCATE(XFLOOD_LEN (ILON,ILAT)) - ALLOCATE(XHFLOOD (ILON,ILAT)) - ALLOCATE(XFFLOOD (ILON,ILAT)) - ALLOCATE(XPIFLOOD (ILON,ILAT)) -ELSE - ALLOCATE(XN_FLOOD (0,0)) - ALLOCATE(XHC_BED (0,0)) - ALLOCATE(XFLOOD_STO(0,0)) - ALLOCATE(XWFLOOD (0,0)) - ALLOCATE(XFLOOD_LEN(0,0)) - ALLOCATE(XHFLOOD (0,0)) - ALLOCATE(XFFLOOD (0,0)) - ALLOCATE(XPIFLOOD (0,0)) -ENDIF -! -IF(CVIT=='VAR')THEN - ALLOCATE(XSLOPEBED(ILON,ILAT)) - ALLOCATE(XWIDTH (ILON,ILAT)) - ALLOCATE(XN (ILON,ILAT)) -ELSE - ALLOCATE(XSLOPEBED(0,0)) - ALLOCATE(XWIDTH (0,0)) - ALLOCATE(XN (0,0)) -ENDIF -! -!------------------------------------------------------------------------------- -! * Compute and Read TRIP parameter -!------------------------------------------------------------------------------- -! -ALLOCATE(ZREAD(ILON,ILAT)) -! -! * Flow direction -! -YVAR ='FLOWDIR' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZREAD) -WHERE(ZREAD==XTRIP_UNDEF)ZREAD=0.0 -IGRCN(:,:)=INT(ZREAD(:,:)) -! -IF(.NOT.ASSOCIATED(GMASK))THEN - ALLOCATE(GMASK(ILON,ILAT)) - GMASK(:,:)=.TRUE. - WHERE(IGRCN(:,:)==0)GMASK(:,:)=.FALSE. -ENDIF -! -! * Rriver sequence -! -YVAR ='RIVSEQ' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZREAD) -WHERE(ZREAD==XTRIP_UNDEF)ZREAD=0.0 -ISEQ(:,:)=INT(ZREAD(:,:)) -! -! * Maximum river sequence value -! -ISEQMAX = MAXVAL(ISEQ) -! -DEALLOCATE(ZREAD) -! -! * Set down stream -! - CALL SETNEXT(ILON,ILAT,IGRCN,INEXTX,INEXTY) -! -! * Set area size -! - CALL SETAREA(ILAT,ZLATMIN,ZGRID_RES,XAREA) -! -! * Distance between grids with the meandering ratio -! -YVAR ='RIVLEN' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XLEN) -WHERE(.NOT.GMASK(:,:))XLEN(:,:)=0.0 -! -! * Variable velocity schemes variables -! -IF(CVIT == 'VAR')THEN -! - YVAR ='N_RIV' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XN) -! - YVAR ='WIDTHRIV' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XWIDTH) -! - YVAR ='SLOPERIV' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XSLOPEBED) -! - WHERE(ISEQ(:,:)==0.OR.XWIDTH>=XTRIP_UNDEF-1.0) - XSLOPEBED= 0.0 - XWIDTH = 0.0 - XN = 0.0 - ENDWHERE -! -ENDIF -! -! * Calculate the groundwater transfert time -! -IF(CGROUNDW/='DEF')THEN -! - YVAR ='TAUG' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XTAUG) -! - WHERE(ISEQ(:,:)==0) - XTAUG=0.0 - ELSEWHERE - XTAUG=XTAUG*XDAY_T - ENDWHERE -! -ENDIF -! -! * Calculate floodplains parameters -! -IF(LFLOODT)THEN -! - YVAR ='RIVDEPTH' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XHC_BED) -! - YVAR ='NFLOOD' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XN_FLOOD) -! - WHERE(XHC_BED==XTRIP_UNDEF) - XHC_BED = 0.0 - XN_FLOOD = 0.0 - ENDWHERE -! - ALLOCATE(ITABMAX(ILON,ILAT)) -! - ALLOCATE(XTAB_F (ILON,ILAT,NTRIPTAB)) - ALLOCATE(XTAB_H (ILON,ILAT,NTRIPTAB)) - ALLOCATE(XTAB_VF(ILON,ILAT,NTRIPTAB)) -! - YVAR ='TABF' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XTAB_F) -! - YVAR ='TABH' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XTAB_H) -! - YVAR ='TABVF' - CALL READ_TRIP(ILUOUT,YFILE_PARAM,YVAR,XTAB_VF) -! - ITABMAX(:,:)=NTRIPTAB-COUNT(XTAB_H(:,:,:)>=XTRIP_UNDEF-1.0,3) -! -ELSE -! - ALLOCATE(ITABMAX(0,0 )) - ALLOCATE(XTAB_F (0,0,0)) - ALLOCATE(XTAB_H (0,0,0)) - ALLOCATE(XTAB_VF(0,0,0)) -! -ENDIF -! -!------------------------------------------------------------------------------- -! * Read initial and historical variables -!------------------------------------------------------------------------------- -! -YVAR ='SURF_STO' - CALL READ_TRIP(ILUOUT,YFILE_INIT,YVAR,XSURF_STO) -! -IF(CGROUNDW/='DEF')THEN - YVAR ='GROUND_STO' - CALL READ_TRIP(ILUOUT,YFILE_INIT,YVAR,XGROUND_STO) -ENDIF -! -IF(LFLOODT)THEN -! - YVAR ='FLOOD_STO' - CALL READ_TRIP(ILUOUT,YFILE_INIT,YVAR,XFLOOD_STO) -! - YVAR ='FFLOOD_T' - CALL READ_TRIP(ILUOUT,YFILE_INIT,YVAR,XFFLOOD) -! - YVAR ='HFLOOD_T' - CALL READ_TRIP(ILUOUT,YFILE_INIT,YVAR,XHFLOOD) -! -ENDIF -! -!------------------------------------------------------------------------------- -! * Initial Conditions -!------------------------------------------------------------------------------- -! -IF(CVIT == 'VAR')THEN -! - ALLOCATE(ZHSTREAM(ILON,ILAT)) -! - WHERE(XWIDTH(:,:)>0.0) - ZHSTREAM(:,:)=MAX(0.0,XSURF_STO(:,:)/(XRHOLW_T*XLEN(:,:)*XWIDTH(:,:))) - ELSEWHERE - ZHSTREAM(:,:)=0.0 - ENDWHERE -! -ENDIF -! -! * Fraction, width, water depth of floodplains -! -IWORK=0 -! -IF(LFLOODT)THEN -! - WHERE(XLEN(:,:)/=0.0) - XFLOOD_LEN(:,:) = XRATMED*SQRT(XFFLOOD(:,:)*XAREA(:,:)) - XPIFLOOD (:,:) = XFLOOD_STO(:,:) - ELSEWHERE - XFLOOD_LEN(:,:) = 0.0 - XWFLOOD (:,:) = 0.0 - XFFLOOD (:,:) = 0.0 - XHFLOOD (:,:) = 0.0 - XFLOOD_STO(:,:) = 0.0 - XPIFLOOD (:,:) = 0.0 - ENDWHERE -! -! - WHERE(XFFLOOD(:,:)>0.0) - XWFLOOD(:,:) = XAREA(:,:) * XFFLOOD(:,:) / XFLOOD_LEN(:,:) - ELSEWHERE - XWFLOOD(:,:) = 0.0 - ENDWHERE -! - INI = COUNT(XLEN>0.0) - IWORK =COUNT(XHC_BED>0.0) - IFLOOD=COUNT(XFFLOOD>0.0) -! -ENDIF -! -!------------------------------------------------------------------------------- -! -WRITE(ILUOUT,*)'Coupling_time_step : ',XTSTEP_COUPLING -WRITE(ILUOUT,*)'TRIP_time_step : ',XTRIP_TSTEP -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)'Sequence max : ',ISEQMAX -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)'MEANDERING RATIO FIXED TO ',XRATMED -WRITE(ILUOUT,*)'CELL LENGTH MIN, MAX (km): ',MINVAL(XLEN/1.E3, XLEN>0.0), & - MAXVAL(XLEN/1.E3, XLEN>0.0) -WRITE(ILUOUT,*)'CELL AREA MIN, MAX (km²): ',MINVAL(XAREA/1.E6,XLEN>0.0), & - MAXVAL(XAREA/1.E6,XLEN>0.0) -WRITE(ILUOUT,*)'' -IF(CGROUNDW/='DEF')THEN - WRITE(ILUOUT,*)'' - WRITE(ILUOUT,*)'Ground transf. time MIN, MAX : ',MINVAL(XTAUG/XDAY_T,XLEN>0.0), & - MAXVAL(XTAUG/XDAY_T,XLEN>0.0) -ENDIF -IF(CVIT == 'VAR')THEN - WRITE(ILUOUT,*)'WIDTH_RIVER MIN, MAX : ',MINVAL(XWIDTH, XWIDTH>0.0), & - MAXVAL(XWIDTH, XWIDTH>0.0) - WRITE(ILUOUT,*)'N MANNING COEF MIN, MAX : ',MINVAL(XN, XWIDTH>0.0), & - MAXVAL(XN, XWIDTH>0.0) - WRITE(ILUOUT,*)'RIVER SLOPE MIN, MAX : ',MINVAL(XSLOPEBED, XN >0.0), & - MAXVAL(XSLOPEBED, XN >0.0) - WRITE(ILUOUT,*)'' - WRITE(ILUOUT,*)'Initial river depth : ',MINVAL(ZHSTREAM, XWIDTH>0.0), & - MAXVAL(ZHSTREAM, XWIDTH>0.0) - DEALLOCATE(ZHSTREAM) -ENDIF -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)'Initial river storage : ',MINVAL(XSURF_STO, XLEN>0.0), & - MAXVAL(XSURF_STO, XLEN>0.0) -IF(CGROUNDW/='DEF')THEN - WRITE(ILUOUT,*)'' - WRITE(ILUOUT,*)'Initial ground storage : ',MINVAL(XGROUND_STO,XLEN>0.0), & - MAXVAL(XGROUND_STO,XLEN>0.0) -ENDIF -WRITE(ILUOUT,*)'' - -IF(LFLOODT)THEN - WRITE(ILUOUT,*)'N FLOOD FIXED TO ',MINVAL(XN_FLOOD, XHC_BED>0.0) - WRITE(ILUOUT,*)'RIVER DEPTH MIN, MAX : ',MINVAL(XHC_BED, XHC_BED>0.0), & - MAXVAL(XHC_BED, XHC_BED>0.0) - WRITE(ILUOUT,*)'' - WRITE(ILUOUT,*)'Number of potential flood cell : ',IWORK,'on',INI - WRITE(ILUOUT,*)' % ',100.0*(FLOAT(IWORK)/FLOAT(INI)) - WRITE(ILUOUT,*)'Number of actual flood cell : ',IFLOOD,'on',IWORK - WRITE(ILUOUT,*)' % ',100.0*(FLOAT(IFLOOD)/FLOAT(IWORK)) - WRITE(ILUOUT,*)'% of flooded area in the domain :',SUM(XFFLOOD*XAREA)/SUM(XAREA) - WRITE(ILUOUT,*)'' - WRITE(ILUOUT,*)'Initial flood depth (m) : ',MINVAL(XHFLOOD, XHC_BED>0.0), & - MAXVAL(XHFLOOD, XHC_BED>0.0) - WRITE(ILUOUT,*)'Initial flood fraction : ',MINVAL(XFFLOOD, XHC_BED>0.0), & - MAXVAL(XFFLOOD, XHC_BED>0.0) - WRITE(ILUOUT,*)'Initial flood volume m3/1E9 : ',MINVAL(XFLOOD_STO/(XRHOLW_T*1.E9),XHC_BED>0.0), & - MAXVAL(XFLOOD_STO/(XRHOLW_T*1.E9),XHC_BED>0.0) - WRITE(ILUOUT,*)'Initial flood length (km): ',MINVAL(XFLOOD_LEN/1.E3, XHC_BED>0.0), & - MAXVAL(XFLOOD_LEN/1.E3, XHC_BED>0.0) - WRITE(ILUOUT,*)'Initial flood WIDTH (km) : ',MINVAL(XWFLOOD/1.E3, XHC_BED>0.0), & - MAXVAL(XWFLOOD/1.E3, XHC_BED>0.0) - WRITE(ILUOUT,*)'' -ENDIF -! -!------------------------------------------------------------------------------- -! * Create diag file -!------------------------------------------------------------------------------- -! -IF(KMONTH/=0)THEN - WRITE(YTIME,'(i4.4,i2.2)') KYEAR, KMONTH -ELSE - WRITE(YTIME,'(i4.4)') KYEAR -ENDIF -! -IF(LDIAG_CPL)THEN - YFILE = YDIAG//'CPL_'//YTIME(1:LEN_TRIM(YTIME))//'.nc' - YTITLE = 'TRIP coupling time step outputs' - YTIMEUNIT='-' - CALL INIT_DIAG_TRIP_n(ILUOUT,YFILE,ILON,ILAT,YTITLE,YTIMEUNIT,.TRUE.) -ENDIF -! -NRUN=0 -! -YFILE = YDIAG//'RUN_'//YTIME(1:LEN_TRIM(YTIME))//'.nc' -YTITLE = 'TRIP run outputs' -YTIMEUNIT = '-' - CALL INIT_DIAG_TRIP_n(ILUOUT,YFILE,ILON,ILAT,YTITLE,YTIMEUNIT,.FALSE.) -! -!------------------------------------------------------------------------------- -! * Create restart file -!------------------------------------------------------------------------------- -! -IF(ORESTART)THEN - YTITLE ='TRIP restart variables' - YTIMEUNIT='-' - CALL INIT_RESTART_TRIP_n(ILUOUT,YFILE_RESTART,ILON,ILAT,YTITLE,YTIMEUNIT,.FALSE.) -ENDIF -IF (LHOOK) CALL DR_HOOK('INIT_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -! * END -!------------------------------------------------------------------------------- -END SUBROUTINE INIT_TRIP_n - - - - - diff --git a/src/SURFEX/modd_diag_tripn.F90 b/src/SURFEX/modd_diag_tripn.F90 deleted file mode 100644 index d9be01d353a73fe76c1e92e9c45b965283a32821..0000000000000000000000000000000000000000 --- a/src/SURFEX/modd_diag_tripn.F90 +++ /dev/null @@ -1,189 +0,0 @@ -!###################### -MODULE MODD_DIAG_TRIP_n -!###################### -! -!!**** *MODD_DIAG_TRIP - declaration of diagnostics for TRIP scheme -!! -!! PURPOSE -!! ------- -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! None -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 21/05/08 -! -!* 0. DECLARATIONS -! ------------ -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE - -TYPE DIAG_TRIP_t -!------------------------------------------------------------------------------- -! - REAL, POINTER, DIMENSION(:,:) :: XDIAG_SURF_STO ! River storage [kg m-2] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_GROUND_STO ! Groundwater storage [kg m-2] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_FLOOD_STO ! Floodplains storage [kg m-2] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_QDIS ! Discharge [m3 s-1] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_QGF ! Groundwater flow to river [m3 s-1] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_VEL ! Stream flow velocity [m s-1 ] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_HS ! Stream river depth [m ] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_FF ! TRIP flooded fraction [-] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_HF ! Flood depth [m ] -! - REAL, POINTER, DIMENSION(:,:) :: XDIAG_QFR ! Flood flow to river [m3 s-1] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_QRF ! River flow to floodplain [m3 s-1] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_QIN ! Inflow to the river [m3 s-1] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFIN ! River flow to flood velocity [m s-1] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFOUT ! Flood flow to river velocity [m s-1] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_WF ! Flood width during dt [m] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_LF ! Flood lenght during dt [m] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_HSF ! River-Flood depth comparison [m] - REAL, POINTER, DIMENSION(:,:) :: XDIAG_SOURCE ! Floodplains source (Pf-Ef-If)[kg m-2] -! -!------------------------------------------------------------------------------- -! -END TYPE DIAG_TRIP_t -! -TYPE(DIAG_TRIP_t), ALLOCATABLE, TARGET, SAVE :: DIAG_TRIP_MODEL(:) -! -REAL, POINTER, DIMENSION(:,:) :: XDIAG_SURF_STO=>NULL() -!$OMP THREADPRIVATE(XDIAG_SURF_STO) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_GROUND_STO=>NULL() -!$OMP THREADPRIVATE(XDIAG_GROUND_STO) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_FLOOD_STO=>NULL() -!$OMP THREADPRIVATE(XDIAG_FLOOD_STO) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_QDIS=>NULL() -!$OMP THREADPRIVATE(XDIAG_QDIS) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_QGF=>NULL() -!$OMP THREADPRIVATE(XDIAG_QGF) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_VEL=>NULL() -!$OMP THREADPRIVATE(XDIAG_VEL) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_HS=>NULL() -!$OMP THREADPRIVATE(XDIAG_HS) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_FF=>NULL() -!$OMP THREADPRIVATE(XDIAG_FF) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_HF=>NULL() -!$OMP THREADPRIVATE(XDIAG_HF) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_QFR=>NULL() -!$OMP THREADPRIVATE(XDIAG_QFR) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_QRF=>NULL() -!$OMP THREADPRIVATE(XDIAG_QRF) -! -REAL, POINTER, DIMENSION(:,:) :: XDIAG_QIN=>NULL() -!$OMP THREADPRIVATE(XDIAG_QIN) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFIN=>NULL() -!$OMP THREADPRIVATE(XDIAG_VFIN) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_VFOUT=>NULL() -!$OMP THREADPRIVATE(XDIAG_VFOUT) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_WF=>NULL() -!$OMP THREADPRIVATE(XDIAG_WF) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_LF=>NULL() -!$OMP THREADPRIVATE(XDIAG_LF) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_HSF=>NULL() -!$OMP THREADPRIVATE(XDIAG_HSF) -REAL, POINTER, DIMENSION(:,:) :: XDIAG_SOURCE=>NULL() -!$OMP THREADPRIVATE(XDIAG_SOURCE) -! -CONTAINS -! -SUBROUTINE DIAG_TRIP_GOTO_MODEL(KFROM, KTO, LKFROM) -LOGICAL, INTENT(IN) :: LKFROM -INTEGER, INTENT(IN) :: KFROM, KTO -! -! Save current state for allocated arrays -IF (LKFROM) THEN -DIAG_TRIP_MODEL(KFROM)%XDIAG_SURF_STO=>XDIAG_SURF_STO -DIAG_TRIP_MODEL(KFROM)%XDIAG_GROUND_STO=>XDIAG_GROUND_STO -DIAG_TRIP_MODEL(KFROM)%XDIAG_FLOOD_STO=>XDIAG_FLOOD_STO -DIAG_TRIP_MODEL(KFROM)%XDIAG_QDIS=>XDIAG_QDIS -DIAG_TRIP_MODEL(KFROM)%XDIAG_QGF=>XDIAG_QGF -DIAG_TRIP_MODEL(KFROM)%XDIAG_VEL=>XDIAG_VEL -DIAG_TRIP_MODEL(KFROM)%XDIAG_HS=>XDIAG_HS -DIAG_TRIP_MODEL(KFROM)%XDIAG_FF=>XDIAG_FF -DIAG_TRIP_MODEL(KFROM)%XDIAG_HF=>XDIAG_HF -! -DIAG_TRIP_MODEL(KFROM)%XDIAG_QFR=>XDIAG_QFR -DIAG_TRIP_MODEL(KFROM)%XDIAG_QRF=>XDIAG_QRF -DIAG_TRIP_MODEL(KFROM)%XDIAG_QIN=>XDIAG_QIN -DIAG_TRIP_MODEL(KFROM)%XDIAG_VFIN=>XDIAG_VFIN -DIAG_TRIP_MODEL(KFROM)%XDIAG_VFOUT=>XDIAG_VFOUT -DIAG_TRIP_MODEL(KFROM)%XDIAG_WF=>XDIAG_WF -DIAG_TRIP_MODEL(KFROM)%XDIAG_LF=>XDIAG_LF -DIAG_TRIP_MODEL(KFROM)%XDIAG_HSF=>XDIAG_HSF -DIAG_TRIP_MODEL(KFROM)%XDIAG_SOURCE=>XDIAG_SOURCE -ENDIF -! -! Current model is set to model KTO -XDIAG_SURF_STO=>DIAG_TRIP_MODEL(KTO)%XDIAG_SURF_STO -XDIAG_GROUND_STO=>DIAG_TRIP_MODEL(KTO)%XDIAG_GROUND_STO -XDIAG_FLOOD_STO=>DIAG_TRIP_MODEL(KTO)%XDIAG_FLOOD_STO -XDIAG_QDIS=>DIAG_TRIP_MODEL(KTO)%XDIAG_QDIS -XDIAG_QGF=>DIAG_TRIP_MODEL(KTO)%XDIAG_QGF -XDIAG_VEL=>DIAG_TRIP_MODEL(KTO)%XDIAG_VEL -XDIAG_HS=>DIAG_TRIP_MODEL(KTO)%XDIAG_HS -XDIAG_FF=>DIAG_TRIP_MODEL(KTO)%XDIAG_FF -XDIAG_HF=>DIAG_TRIP_MODEL(KTO)%XDIAG_HF -! -XDIAG_QFR=>DIAG_TRIP_MODEL(KTO)%XDIAG_QFR -XDIAG_QRF=>DIAG_TRIP_MODEL(KTO)%XDIAG_QRF -XDIAG_QIN=>DIAG_TRIP_MODEL(KTO)%XDIAG_QIN -XDIAG_VFIN=>DIAG_TRIP_MODEL(KTO)%XDIAG_VFIN -XDIAG_VFOUT=>DIAG_TRIP_MODEL(KTO)%XDIAG_VFOUT -XDIAG_WF=>DIAG_TRIP_MODEL(KTO)%XDIAG_WF -XDIAG_LF=>DIAG_TRIP_MODEL(KTO)%XDIAG_LF -XDIAG_HSF=>DIAG_TRIP_MODEL(KTO)%XDIAG_HSF -XDIAG_SOURCE=>DIAG_TRIP_MODEL(KTO)%XDIAG_SOURCE -! -END SUBROUTINE DIAG_TRIP_GOTO_MODEL - -SUBROUTINE DIAG_TRIP_ALLOC(KMODEL) -INTEGER, INTENT(IN) :: KMODEL -INTEGER :: J -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_ALLOC",0,ZHOOK_HANDLE) -ALLOCATE(DIAG_TRIP_MODEL(KMODEL)) -DO J=1,KMODEL - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_SURF_STO) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_GROUND_STO) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_FLOOD_STO) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QDIS) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QGF) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_VEL) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_HS) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_FF) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_HF) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QFR) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QRF) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_QIN) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_VFIN) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_VFOUT) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_WF) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_LF) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_HSF) - NULLIFY(DIAG_TRIP_MODEL(J)%XDIAG_SOURCE) -ENDDO -IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_ALLOC",1,ZHOOK_HANDLE) -END SUBROUTINE DIAG_TRIP_ALLOC - -SUBROUTINE DIAG_TRIP_DEALLO -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_DEALLO",0,ZHOOK_HANDLE) -IF (ALLOCATED(DIAG_TRIP_MODEL)) DEALLOCATE(DIAG_TRIP_MODEL) -IF (LHOOK) CALL DR_HOOK("MODD_DIAG_TRIP_N:DIAG_TRIP_DEALLO",1,ZHOOK_HANDLE) -END SUBROUTINE DIAG_TRIP_DEALLO -! -END MODULE MODD_DIAG_TRIP_n diff --git a/src/SURFEX/modd_trip_gridn.F90 b/src/SURFEX/modd_trip_gridn.F90 deleted file mode 100644 index ae1397948aeecd7c13696fff2bfafee996128ef2..0000000000000000000000000000000000000000 --- a/src/SURFEX/modd_trip_gridn.F90 +++ /dev/null @@ -1,102 +0,0 @@ -!################## -MODULE MODD_TRIP_GRID_n -!################## -! -!!**** *MODD_TRIP_GRID_n - declaration of grid for TRIP scheme -!! -!! PURPOSE -!! ------- -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! None -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2008 -! -!* 0. DECLARATIONS -! ------------ -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -TYPE TRIP_GRID_t -!------------------------------------------------------------------------------- -! -! Grid definition -! - REAL, POINTER, DIMENSION(:) :: XGRID_TRIP ! lits of parameters used to define the grid -! -!------------------------------------------------------------------------------- -! - REAL, POINTER, DIMENSION(:,:) :: XAREA ! 2d grid area [m*m] -! -! - LOGICAL, POINTER, DIMENSION(:,:) :: GMASK !Logical Mask for TRIP grid -! -!------------------------------------------------------------------------------- -! -END TYPE TRIP_GRID_t -! -TYPE(TRIP_GRID_t), ALLOCATABLE, TARGET, SAVE :: TRIP_GRID_MODEL(:) -! -REAL, POINTER, DIMENSION(:) :: XGRID_TRIP=>NULL() -!$OMP THREADPRIVATE(XGRID_TRIP) -REAL, POINTER, DIMENSION(:,:) :: XAREA=>NULL() -!$OMP THREADPRIVATE(XAREA) -LOGICAL, POINTER, DIMENSION(:,:) :: GMASK=>NULL() -!$OMP THREADPRIVATE(GMASK) -! -CONTAINS - -SUBROUTINE TRIP_GRID_GOTO_MODEL(KFROM, KTO, LKFROM) -LOGICAL, INTENT(IN) :: LKFROM -INTEGER, INTENT(IN) :: KFROM, KTO -! -! Save current state for allocated arrays -IF (LKFROM) THEN -TRIP_GRID_MODEL(KFROM)%XGRID_TRIP=>XGRID_TRIP -TRIP_GRID_MODEL(KFROM)%XAREA=>XAREA -TRIP_GRID_MODEL(KFROM)%GMASK=>GMASK -ENDIF -! -! Current model is set to model KTO -XGRID_TRIP=>TRIP_GRID_MODEL(KTO)%XGRID_TRIP -XAREA=>TRIP_GRID_MODEL(KTO)%XAREA -GMASK=>TRIP_GRID_MODEL(KTO)%GMASK -! -END SUBROUTINE TRIP_GRID_GOTO_MODEL - -SUBROUTINE TRIP_GRID_ALLOC(KMODEL) -INTEGER, INTENT(IN) :: KMODEL -INTEGER :: J -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_GRID_N:TRIP_GRID_ALLOC",0,ZHOOK_HANDLE) -ALLOCATE(TRIP_GRID_MODEL(KMODEL)) -DO J=1,KMODEL - NULLIFY(TRIP_GRID_MODEL(J)%XGRID_TRIP) - NULLIFY(TRIP_GRID_MODEL(J)%XAREA) - NULLIFY(TRIP_GRID_MODEL(J)%GMASK) -ENDDO -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_GRID_N:TRIP_GRID_ALLOC",1,ZHOOK_HANDLE) -END SUBROUTINE TRIP_GRID_ALLOC - -SUBROUTINE TRIP_GRID_DEALLO -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_GRID_N:TRIP_GRID_DEALLO",0,ZHOOK_HANDLE) -IF (ALLOCATED(TRIP_GRID_MODEL)) DEALLOCATE(TRIP_GRID_MODEL) -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_GRID_N:TRIP_GRID_DEALLO",1,ZHOOK_HANDLE) -END SUBROUTINE TRIP_GRID_DEALLO - -END MODULE MODD_TRIP_GRID_n diff --git a/src/SURFEX/modd_trip_par.F90 b/src/SURFEX/modd_trip_par.F90 deleted file mode 100644 index f3dca162d570a319b30a2efcc770cf0b7d376a7e..0000000000000000000000000000000000000000 --- a/src/SURFEX/modd_trip_par.F90 +++ /dev/null @@ -1,56 +0,0 @@ -!###################### -MODULE MODD_TRIP_PAR -!###################### -! -!!**** *MODD_TRIP_PAR* - declaration of TRIP parameters -!! -!! PURPOSE -!! ------- -! The purpose of this declarative module is to specify the -! parameters related to the TRIP RRM. -! -!! -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 22/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -IMPLICIT NONE -! -INTEGER, SAVE :: NTRIPTAB -! -REAL, SAVE :: XM_EXP -! -REAL, SAVE :: XTRIP_UNDEF -REAL, SAVE :: XRHOLW_T -REAL, SAVE :: XDAY_T -REAL, SAVE :: XSEA_T -REAL, SAVE :: XYEAR_T -! -REAL, SAVE :: XRAD_T -REAL, SAVE :: XPI_T -! -!-------------------------------------------------------------------------------- -! -END MODULE MODD_TRIP_PAR - - - - - - - - - - - - diff --git a/src/SURFEX/modd_tripn.F90 b/src/SURFEX/modd_tripn.F90 deleted file mode 100644 index c19e15ad0b9fe8aa53d1ccbcbc83e4789cd28134..0000000000000000000000000000000000000000 --- a/src/SURFEX/modd_tripn.F90 +++ /dev/null @@ -1,321 +0,0 @@ -!############### -MODULE MODD_TRIP_n -!############### -! -!!**** *MODD_TRIP_n - declaration of surface variable for TRIP RRM -!! -!! PURPOSE -!! ------- -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! None -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 21/05/08 -! -!* 0. DECLARATIONS -! ------------ -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE - -TYPE TRIP_t -!------------------------------------------------------------------------------- -! -! TRIP Options: -! - CHARACTER(LEN=3) :: CGROUNDW !Use groundwater scheme - !'DEF' = No groundwater scheme - !'CST' = Constant transfert time - !'VAR' = Textural dependence of transfert time -! - CHARACTER(LEN=3) :: CVIT !Type of stream flow velocity - !'DEF' = Constant velocit = 0.5m/s - !'VAR' = variable velocity -! -LOGICAL :: LDIAG_CPL !if true, dailly output diag -LOGICAL :: LTRIP_DIAG_MISC !if true, more diag for model testing -LOGICAL :: LFLOODT !if true, use TRIP-FLOOD -LOGICAL :: LNCPRINT !Netcdf read/write messages -LOGICAL :: LPRINT_TRIP !Print water budget message -! -REAL :: XDATA_TAUG ! Constant transfert time value -REAL :: XCVEL ! Constant velocity value -REAL :: XRATMED ! Meandering ratio -REAL :: XTRIP_TSTEP -REAL :: XTSTEP_COUPLING -! -!------------------------------------------------------------------------------- -! -INTEGER, POINTER, DIMENSION(:,:) :: IGRCN ! Flow direction (1->8) -INTEGER, POINTER, DIMENSION(:,:) :: ISEQ ! River sequence -INTEGER :: ISEQMAX ! maximum down flow -INTEGER, POINTER, DIMENSION(:,:) :: INEXTX ! returns x and y point -INTEGER, POINTER, DIMENSION(:,:) :: INEXTY ! of destination grid: -! 8 1 2 -! 7 3 -! 6 5 4 -!------------------------------------------------------------------------------- -! -INTEGER :: NRUN ! Number of coupling during a run -! -!------------------------------------------------------------------------------- -! -! Input river geometry Parameters : -! -REAL, POINTER, DIMENSION(:,:) :: XLEN ! distance between grids [m] -REAL, POINTER, DIMENSION(:,:) :: XTAUG ! ground water transfer time [s] -REAL, POINTER, DIMENSION(:,:) :: XSLOPEBED ! river bed slopes [m/m] -REAL, POINTER, DIMENSION(:,:) :: XWIDTH ! river widths [m] -REAL, POINTER, DIMENSION(:,:) :: XN ! Manning roughness coeficient [-] (0.03 to 0.065) -REAL, POINTER, DIMENSION(:,:) :: XN_FLOOD ! Manning coeficient over floodplains [-] (currently 0.1) -REAL, POINTER, DIMENSION(:,:) :: XHC_BED ! River bed depth [m] -! -!------------------------------------------------------------------------------- -! -! Time varing variables : -! -REAL, POINTER, DIMENSION(:,:) :: XSURF_STO ! river channel storage [kg] -REAL, POINTER, DIMENSION(:,:) :: XGROUND_STO ! ground water storage [kg] -REAL, POINTER, DIMENSION(:,:) :: XFLOOD_STO ! Floodplain water storage [kg] -REAL, POINTER, DIMENSION(:,:) :: XHFLOOD ! Floodplain water depth [m] -REAL, POINTER, DIMENSION(:,:) :: XFFLOOD ! Floodplain grid-cell fraction [-] -REAL, POINTER, DIMENSION(:,:) :: XPIFLOOD ! Floodplain potential infiltration for coupling with isba [kg/m2/s] -REAL, POINTER, DIMENSION(:,:) :: XWFLOOD ! Floodplain width [m] -REAL, POINTER, DIMENSION(:,:) :: XFLOOD_LEN ! Floodplain lenght [m] -! -!------------------------------------------------------------------------------- -! -! Floodplain fonctions : -! -INTEGER, POINTER, DIMENSION(:,:) :: ITABMAX ! Maximum array -! -REAL, POINTER, DIMENSION(:,:,:) :: XTAB_F ! Flood fraction array -REAL, POINTER, DIMENSION(:,:,:) :: XTAB_H ! Topo height array -REAL, POINTER, DIMENSION(:,:,:) :: XTAB_VF ! Flood volume array -! -!------------------------------------------------------------------------------- -! -END TYPE TRIP_t -! -TYPE(TRIP_t), ALLOCATABLE, TARGET, SAVE :: TRIP_MODEL(:) -! - CHARACTER(LEN=3), POINTER :: CGROUNDW=>NULL() -!$OMP THREADPRIVATE(CGROUNDW) - CHARACTER(LEN=3), POINTER :: CVIT=>NULL() -!$OMP THREADPRIVATE(CVIT) -! -LOGICAL, POINTER :: LFLOODT=>NULL() -!$OMP THREADPRIVATE(LFLOODT) -LOGICAL, POINTER :: LDIAG_CPL=>NULL() -!$OMP THREADPRIVATE(LDIAG_CPL) -LOGICAL, POINTER :: LNCPRINT=>NULL() -!$OMP THREADPRIVATE(LNCPRINT) -LOGICAL, POINTER :: LPRINT_TRIP=>NULL() -!$OMP THREADPRIVATE(LPRINT_TRIP) -LOGICAL, POINTER :: LTRIP_DIAG_MISC=>NULL() -!$OMP THREADPRIVATE(LTRIP_DIAG_MISC) -REAL, POINTER :: XTSTEP_COUPLING=>NULL() -!$OMP THREADPRIVATE(XTSTEP_COUPLING) -REAL, POINTER :: XTRIP_TSTEP=>NULL() -!$OMP THREADPRIVATE(XTRIP_TSTEP) -REAL, POINTER :: XDATA_TAUG=>NULL() -!$OMP THREADPRIVATE(XDATA_TAUG) -REAL, POINTER :: XCVEL=>NULL() -!$OMP THREADPRIVATE(XCVEL) -REAL, POINTER :: XRATMED=>NULL() -!$OMP THREADPRIVATE(XRATMED) -! -INTEGER, POINTER, DIMENSION(:,:) :: IGRCN=>NULL() -!$OMP THREADPRIVATE(IGRCN) -INTEGER, POINTER, DIMENSION(:,:) :: ISEQ=>NULL() -!$OMP THREADPRIVATE(ISEQ) -INTEGER, POINTER :: ISEQMAX=>NULL() -!$OMP THREADPRIVATE(ISEQMAX) -INTEGER, POINTER, DIMENSION(:,:) :: INEXTX=>NULL() -!$OMP THREADPRIVATE(INEXTX) -INTEGER, POINTER, DIMENSION(:,:) :: INEXTY=>NULL() -!$OMP THREADPRIVATE(INEXTY) -INTEGER, POINTER :: NRUN=>NULL() -!$OMP THREADPRIVATE(NRUN) -! -REAL, POINTER, DIMENSION(:,:) :: XLEN=>NULL() -!$OMP THREADPRIVATE(XLEN) -REAL, POINTER, DIMENSION(:,:) :: XTAUG=>NULL() -!$OMP THREADPRIVATE(XTAUG) -REAL, POINTER, DIMENSION(:,:) :: XSLOPEBED=>NULL() -!$OMP THREADPRIVATE(XSLOPEBED) -REAL, POINTER, DIMENSION(:,:) :: XWIDTH=>NULL() -!$OMP THREADPRIVATE(XWIDTH) -REAL, POINTER, DIMENSION(:,:) :: XN=>NULL() -!$OMP THREADPRIVATE(XN) -REAL, POINTER, DIMENSION(:,:) :: XN_FLOOD=>NULL() -!$OMP THREADPRIVATE(XN_FLOOD) -REAL, POINTER, DIMENSION(:,:) :: XHC_BED=>NULL() -!$OMP THREADPRIVATE(XHC_BED) -REAL, POINTER, DIMENSION(:,:) :: XSURF_STO=>NULL() -!$OMP THREADPRIVATE(XSURF_STO) -REAL, POINTER, DIMENSION(:,:) :: XGROUND_STO=>NULL() -!$OMP THREADPRIVATE(XGROUND_STO) -REAL, POINTER, DIMENSION(:,:) :: XFLOOD_STO=>NULL() -!$OMP THREADPRIVATE(XFLOOD_STO) -REAL, POINTER, DIMENSION(:,:) :: XHFLOOD=>NULL() -!$OMP THREADPRIVATE(XHFLOOD) -REAL, POINTER, DIMENSION(:,:) :: XFFLOOD=>NULL() -!$OMP THREADPRIVATE(XFFLOOD) -REAL, POINTER, DIMENSION(:,:) :: XPIFLOOD=>NULL() -!$OMP THREADPRIVATE(XPIFLOOD) -REAL, POINTER, DIMENSION(:,:) :: XWFLOOD=>NULL() -!$OMP THREADPRIVATE(XWFLOOD) -REAL, POINTER, DIMENSION(:,:) :: XFLOOD_LEN=>NULL() -!$OMP THREADPRIVATE(XFLOOD_LEN) -! -INTEGER, POINTER, DIMENSION(:,:) :: ITABMAX=>NULL() -!$OMP THREADPRIVATE(ITABMAX) -REAL, POINTER, DIMENSION(:,:,:) :: XTAB_F=>NULL() -!$OMP THREADPRIVATE(XTAB_F) -REAL, POINTER, DIMENSION(:,:,:) :: XTAB_H=>NULL() -!$OMP THREADPRIVATE(XTAB_H) -REAL, POINTER, DIMENSION(:,:,:) :: XTAB_VF=>NULL() -!$OMP THREADPRIVATE(XTAB_VF) -! -CONTAINS -! -SUBROUTINE TRIP_GOTO_MODEL(KFROM, KTO, LKFROM) -LOGICAL, INTENT(IN) :: LKFROM -INTEGER, INTENT(IN) :: KFROM, KTO -! -! Save current state for allocated arrays -IF (LKFROM) THEN -TRIP_MODEL(KFROM)%IGRCN=>IGRCN -TRIP_MODEL(KFROM)%ISEQ=>ISEQ -TRIP_MODEL(KFROM)%INEXTX=>INEXTX -TRIP_MODEL(KFROM)%INEXTY=>INEXTY -TRIP_MODEL(KFROM)%XLEN=>XLEN -TRIP_MODEL(KFROM)%XTAUG=>XTAUG -TRIP_MODEL(KFROM)%XSLOPEBED=>XSLOPEBED -TRIP_MODEL(KFROM)%XWIDTH=>XWIDTH -TRIP_MODEL(KFROM)%XN=>XN -TRIP_MODEL(KFROM)%XN_FLOOD=>XN_FLOOD -TRIP_MODEL(KFROM)%XHC_BED=>XHC_BED -TRIP_MODEL(KFROM)%XSURF_STO=>XSURF_STO -TRIP_MODEL(KFROM)%XGROUND_STO=>XGROUND_STO -TRIP_MODEL(KFROM)%XFLOOD_STO=>XFLOOD_STO -TRIP_MODEL(KFROM)%XHFLOOD=>XHFLOOD -TRIP_MODEL(KFROM)%XFFLOOD=>XFFLOOD -TRIP_MODEL(KFROM)%XPIFLOOD=>XPIFLOOD -TRIP_MODEL(KFROM)%XWFLOOD=>XWFLOOD -TRIP_MODEL(KFROM)%XFLOOD_LEN=>XFLOOD_LEN -TRIP_MODEL(KFROM)%XTAB_F=>XTAB_F -TRIP_MODEL(KFROM)%XTAB_H=>XTAB_H -TRIP_MODEL(KFROM)%XTAB_VF=>XTAB_VF -TRIP_MODEL(KFROM)%ITABMAX=>ITABMAX -ENDIF -! Current model is set to model KTO -CGROUNDW=>TRIP_MODEL(KTO)%CGROUNDW -CVIT=>TRIP_MODEL(KTO)%CVIT -LFLOODT=>TRIP_MODEL(KTO)%LFLOODT -LTRIP_DIAG_MISC=>TRIP_MODEL(KTO)%LTRIP_DIAG_MISC -LDIAG_CPL=>TRIP_MODEL(KTO)%LDIAG_CPL -LNCPRINT=>TRIP_MODEL(KTO)%LNCPRINT -LPRINT_TRIP=>TRIP_MODEL(KTO)%LPRINT_TRIP -XTSTEP_COUPLING=>TRIP_MODEL(KTO)%XTSTEP_COUPLING -XTRIP_TSTEP=>TRIP_MODEL(KTO)%XTRIP_TSTEP -XDATA_TAUG=>TRIP_MODEL(KTO)%XDATA_TAUG -XCVEL=>TRIP_MODEL(KTO)%XCVEL -XRATMED=>TRIP_MODEL(KTO)%XRATMED -NRUN=>TRIP_MODEL(KTO)%NRUN -IGRCN=>TRIP_MODEL(KTO)%IGRCN -ISEQ=>TRIP_MODEL(KTO)%ISEQ -ISEQMAX=>TRIP_MODEL(KTO)%ISEQMAX -INEXTX=>TRIP_MODEL(KTO)%INEXTX -INEXTY=>TRIP_MODEL(KTO)%INEXTY -XLEN=>TRIP_MODEL(KTO)%XLEN -XTAUG=>TRIP_MODEL(KTO)%XTAUG -XSLOPEBED=>TRIP_MODEL(KTO)%XSLOPEBED -XWIDTH=>TRIP_MODEL(KTO)%XWIDTH -XN=>TRIP_MODEL(KTO)%XN -XN_FLOOD=>TRIP_MODEL(KTO)%XN_FLOOD -XHC_BED=>TRIP_MODEL(KTO)%XHC_BED -XSURF_STO=>TRIP_MODEL(KTO)%XSURF_STO -XGROUND_STO=>TRIP_MODEL(KTO)%XGROUND_STO -XFLOOD_STO=>TRIP_MODEL(KTO)%XFLOOD_STO -XHFLOOD=>TRIP_MODEL(KTO)%XHFLOOD -XFFLOOD=>TRIP_MODEL(KTO)%XFFLOOD -XPIFLOOD=>TRIP_MODEL(KTO)%XPIFLOOD -XWFLOOD=>TRIP_MODEL(KTO)%XWFLOOD -XFLOOD_LEN=>TRIP_MODEL(KTO)%XFLOOD_LEN -XTAB_F=>TRIP_MODEL(KTO)%XTAB_F -XTAB_H=>TRIP_MODEL(KTO)%XTAB_H -XTAB_VF=>TRIP_MODEL(KTO)%XTAB_VF -ITABMAX=>TRIP_MODEL(KTO)%ITABMAX -END SUBROUTINE TRIP_GOTO_MODEL - -SUBROUTINE TRIP_ALLOC(KMODEL) -INTEGER, INTENT(IN) :: KMODEL -INTEGER :: J -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_N:TRIP_ALLOC",0,ZHOOK_HANDLE) -ALLOCATE(TRIP_MODEL(KMODEL)) -DO J=1,KMODEL - NULLIFY(TRIP_MODEL(J)%IGRCN) - NULLIFY(TRIP_MODEL(J)%ISEQ) - NULLIFY(TRIP_MODEL(J)%INEXTX) - NULLIFY(TRIP_MODEL(J)%INEXTY) - NULLIFY(TRIP_MODEL(J)%XLEN) - NULLIFY(TRIP_MODEL(J)%XTAUG) - NULLIFY(TRIP_MODEL(J)%XSLOPEBED) - NULLIFY(TRIP_MODEL(J)%XWIDTH) - NULLIFY(TRIP_MODEL(J)%XN) - NULLIFY(TRIP_MODEL(J)%XN_FLOOD) - NULLIFY(TRIP_MODEL(J)%XHC_BED) - NULLIFY(TRIP_MODEL(J)%XSURF_STO) - NULLIFY(TRIP_MODEL(J)%XGROUND_STO) - NULLIFY(TRIP_MODEL(J)%XFLOOD_STO) - NULLIFY(TRIP_MODEL(J)%XHFLOOD) - NULLIFY(TRIP_MODEL(J)%XFFLOOD) - NULLIFY(TRIP_MODEL(J)%XPIFLOOD) - NULLIFY(TRIP_MODEL(J)%XWFLOOD) - NULLIFY(TRIP_MODEL(J)%XFLOOD_LEN) - NULLIFY(TRIP_MODEL(J)%XTAB_F) - NULLIFY(TRIP_MODEL(J)%XTAB_H) - NULLIFY(TRIP_MODEL(J)%XTAB_VF) - NULLIFY(TRIP_MODEL(J)%ITABMAX) -ENDDO -TRIP_MODEL(:)%CGROUNDW=' ' -TRIP_MODEL(:)%CVIT=' ' -TRIP_MODEL(:)%LDIAG_CPL=.FALSE. -TRIP_MODEL(:)%LTRIP_DIAG_MISC=.FALSE. -TRIP_MODEL(:)%LFLOODT=.FALSE. -TRIP_MODEL(:)%LNCPRINT=.FALSE. -TRIP_MODEL(:)%LPRINT_TRIP=.FALSE. -TRIP_MODEL(:)%XDATA_TAUG=0. -TRIP_MODEL(:)%XCVEL=0. -TRIP_MODEL(:)%XRATMED=0. -TRIP_MODEL(:)%XTRIP_TSTEP=0. -TRIP_MODEL(:)%XTSTEP_COUPLING=0. -TRIP_MODEL(:)%ISEQMAX=0 -TRIP_MODEL(:)%NRUN=0 -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_N:TRIP_ALLOC",1,ZHOOK_HANDLE) -END SUBROUTINE TRIP_ALLOC - -SUBROUTINE TRIP_DEALLO -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_N:TRIP_DEALLO",0,ZHOOK_HANDLE) -IF (ALLOCATED(TRIP_MODEL)) DEALLOCATE(TRIP_MODEL) -IF (LHOOK) CALL DR_HOOK("MODD_TRIP_N:TRIP_DEALLO",1,ZHOOK_HANDLE) -END SUBROUTINE TRIP_DEALLO -! -END MODULE MODD_TRIP_n diff --git a/src/SURFEX/mode_convert.F90 b/src/SURFEX/mode_convert.F90 deleted file mode 100644 index fd47773f62374aafd64e461bde57c22a6e50ffc2..0000000000000000000000000000000000000000 --- a/src/SURFEX/mode_convert.F90 +++ /dev/null @@ -1,161 +0,0 @@ -! -MODULE MODE_CONVERT - ! MODE_CONVERT - ! CONVERT_1D = Convert 1D to 2D array (ISBA -> TRIP) - ! CONVERT_2D = Convert 2D to 3D array (ISBA -> TRIP) - ! UN_CONVERT_1D = Convert 2D to 1D (TRIP -> ISBA) - ! UN_CONVERT_2D = Convert 3D to 2D array (TRIP -> ISBA) -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! - INTERFACE CONVERT - MODULE PROCEDURE CONVERT_1D - MODULE PROCEDURE CONVERT_2D - END INTERFACE - - INTERFACE UN_CONVERT - MODULE PROCEDURE UN_CONVERT_1D - MODULE PROCEDURE UN_CONVERT_2D - END INTERFACE -! -CONTAINS -! -! ########################################################## - SUBROUTINE CONVERT_1D(P1D,GMASK,P2D) - !------------------------------------------------------------------------------- - ! - IMPLICIT NONE - ! - REAL, DIMENSION(:), INTENT(IN) :: P1D ! Input 1D array without patch - LOGICAL, DIMENSION(:,:), INTENT(IN) :: GMASK ! Mask used to pack - REAL, DIMENSION(:,:), INTENT(OUT) :: P2D ! Output 2D array - ! - INTEGER ILON,ILAT,I,J,ICOUNT - REAL(KIND=JPRB) :: ZHOOK_HANDLE - !-------------------------------------------------------------------------------- - ! - ! initialize - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:CONVERT_1D',0,ZHOOK_HANDLE) - ILON =SIZE(GMASK,1) - ILAT =SIZE(GMASK,2) - ! - P2D(:,:)=0.0 - ICOUNT=0 - ! - DO J=1,ILAT - DO I=1,ILON - IF(GMASK(I,J))THEN - ICOUNT=ICOUNT+1 - P2D(I,J)= P1D(ICOUNT) - ELSE - P2D(I,J)= 0.0 - ENDIF - ENDDO - ENDDO - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:CONVERT_1D',1,ZHOOK_HANDLE) - ! - END SUBROUTINE CONVERT_1D -! - SUBROUTINE CONVERT_2D(P2D,GMASK,P3D) - !------------------------------------------------------------------------------- - ! - IMPLICIT NONE - ! - REAL, DIMENSION(:,:), INTENT(IN) :: P2D ! Input 2D array without patch - LOGICAL, DIMENSION(:,:), INTENT(IN) :: GMASK ! Mask used to pack - REAL, DIMENSION(:,:,:), INTENT(OUT) :: P3D ! Output 3D array - ! - INTEGER ILON,ILAT,I,J,ICOUNT - REAL(KIND=JPRB) :: ZHOOK_HANDLE - !-------------------------------------------------------------------------------- - ! - ! initialize - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:CONVERT_2D',0,ZHOOK_HANDLE) - ILON =SIZE(GMASK,1) - ILAT =SIZE(GMASK,2) - ! - P3D(:,:,:)=0.0 - ICOUNT=0 - ! - DO J=1,ILAT - DO I=1,ILON - IF(GMASK(I,J))THEN - ICOUNT=ICOUNT+1 - P3D(I,J,:)= P2D(ICOUNT,:) - ELSE - P3D(I,J,:)= 0.0 - ENDIF - ENDDO - ENDDO - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:CONVERT_2D',1,ZHOOK_HANDLE) - ! - END SUBROUTINE CONVERT_2D -! - SUBROUTINE UN_CONVERT_1D(P2D,GMASK,P1D) - !----------------------------------------------------------------------------- - ! - IMPLICIT NONE - ! - REAL, DIMENSION(:,:), INTENT(IN) :: P2D ! Input 2D array - LOGICAL, DIMENSION(:,:), INTENT(IN) :: GMASK ! Mask used to pack - REAL, DIMENSION(:), INTENT(OUT) :: P1D ! Output 1D array - ! - INTEGER ILON,ILAT,I,J,ICOUNT - REAL(KIND=JPRB) :: ZHOOK_HANDLE - !------------------------------------------------------------------------------ - ! - ! initialize - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:UN_CONVERT_1D',0,ZHOOK_HANDLE) - ILON =SIZE(P2D,1) - ILAT =SIZE(P2D,2) - P1D(:)=0.0 - ICOUNT=0 - ! - DO J=1,ILAT - DO I=1,ILON - IF(GMASK(I,J))THEN - ICOUNT=ICOUNT+1 - P1D(ICOUNT)=P2D(I,J) - ENDIF - ENDDO - ENDDO - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:UN_CONVERT_1D',1,ZHOOK_HANDLE) - ! - END SUBROUTINE UN_CONVERT_1D -! - SUBROUTINE UN_CONVERT_2D(P3D,GMASK,P2D) - !----------------------------------------------------------------------------- - ! - IMPLICIT NONE - ! - REAL, DIMENSION(:,:,:), INTENT(IN) :: P3D ! Input 2D array - LOGICAL, DIMENSION(:,:), INTENT(IN) :: GMASK ! Mask used to pack - REAL, DIMENSION(:,:), INTENT(OUT) :: P2D ! Output 1D array - ! - INTEGER ILON,ILAT,I,J,ICOUNT - REAL(KIND=JPRB) :: ZHOOK_HANDLE - !------------------------------------------------------------------------------ - ! - ! initialize - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:UN_CONVERT_2D',0,ZHOOK_HANDLE) - ILON =SIZE(P3D,1) - ILAT =SIZE(P3D,2) - P2D(:,:)=0.0 - ICOUNT=0 - ! - DO J=1,ILAT - DO I=1,ILON - IF(GMASK(I,J))THEN - ICOUNT=ICOUNT+1 - P2D(ICOUNT,:)=P3D(I,J,:) - ENDIF - ENDDO - ENDDO - IF (LHOOK) CALL DR_HOOK('MODE_CONVERT:UN_CONVERT_2D',1,ZHOOK_HANDLE) - ! - END SUBROUTINE UN_CONVERT_2D -! -!--------------- -END MODULE MODE_CONVERT diff --git a/src/SURFEX/mode_grid_trip.F90 b/src/SURFEX/mode_grid_trip.F90 deleted file mode 100644 index 16783424a0b0d5cde70ffa37b9e60e145718f3ff..0000000000000000000000000000000000000000 --- a/src/SURFEX/mode_grid_trip.F90 +++ /dev/null @@ -1,152 +0,0 @@ -!############################## -MODULE MODE_GRID_TRIP -!############################## -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! - INTERFACE PUT_GRID_TRIP - MODULE PROCEDURE PUT_GRID_TRIP - END INTERFACE - - INTERFACE GET_GRID_TRIP - MODULE PROCEDURE GET_GRID_TRIP - END INTERFACE -! -!############################################################################ -!############################################################################ -!############################################################################ -CONTAINS -!############################################################################ -!############################################################################ -!############################################################################ -! #################################################################### - SUBROUTINE PUT_GRID_TRIP(PGRID_TRIP,PLONMIN,PLONMAX,PLATMIN, & - PLATMAX,PRES,KLON,KLAT,PLON,PLAT ) -! #################################################################### -! -!!**** *PUT_GRID_TRIP* - routine to store in PGRID_TRIP the horizontal grid -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2005 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -IMPLICIT NONE -! -! -!* 0.1 Declarations of arguments -! ------------------------- -! -REAL, INTENT(IN) :: PLONMIN ! minimum longitude -REAL, INTENT(IN) :: PLONMAX ! maximum longitude -REAL, INTENT(IN) :: PLATMIN ! minimum latitude -REAL, INTENT(IN) :: PLATMAX ! maximum latitude -REAL, INTENT(IN) :: PRES ! 1° or 0.5° resolution -INTEGER, INTENT(IN) :: KLON ! number of points in longitude -INTEGER, INTENT(IN) :: KLAT ! number of points in latitude -REAL, DIMENSION(:), INTENT(IN) :: PLON ! longitude -REAL, DIMENSION(:), INTENT(IN) :: PLAT ! latitude -REAL, DIMENSION(:), INTENT(OUT) :: PGRID_TRIP! parameters defining this grid -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -! -!* 0.2 Declarations of local variables -! ------------------------------- -! -!------------------------------------------------------------------------------- -IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:PUT_GRID_TRIP',0,ZHOOK_HANDLE) -PGRID_TRIP(1) = PLONMIN -PGRID_TRIP(2) = PLONMAX -PGRID_TRIP(3) = PLATMIN -PGRID_TRIP(4) = PLATMAX -PGRID_TRIP(5) = PRES -PGRID_TRIP(6) = FLOAT(KLON) -PGRID_TRIP(7) = FLOAT(KLAT) -PGRID_TRIP(8:7+KLON) = PLON -PGRID_TRIP(8+KLON:7+KLON+KLAT) = PLAT -IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:PUT_GRID_TRIP',1,ZHOOK_HANDLE) -!------------------------------------------------------------------------------- -END SUBROUTINE PUT_GRID_TRIP -!############################################################################ -!############################################################################ -!############################################################################ -! #################################################################### - SUBROUTINE GET_GRID_TRIP(PGRID_TRIP,PLONMIN,PLONMAX,PLATMIN, & - PLATMAX,PRES,KLON,KLAT,PLON,PLAT ) -! #################################################################### -! -!!**** *GET_GRID_TRIP* - routine to get from PGRID_TRIP the horizontal grid -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2005 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -IMPLICIT NONE -! -! -!* 0.1 Declarations of arguments -! ------------------------- -! -REAL, DIMENSION(:), INTENT(IN) :: PGRID_TRIP! parameters defining this grid -REAL, INTENT(OUT), OPTIONAL :: PLONMIN ! minimum longitude -REAL, INTENT(OUT), OPTIONAL :: PLONMAX ! maximum longitude -REAL, INTENT(OUT), OPTIONAL :: PLATMIN ! minimum latitude -REAL, INTENT(OUT), OPTIONAL :: PLATMAX ! maximum latitude -REAL, INTENT(OUT), OPTIONAL :: PRES ! 1° or 0.5° resolution -INTEGER, INTENT(OUT), OPTIONAL :: KLON ! number of points in longitude -INTEGER, INTENT(OUT), OPTIONAL :: KLAT ! number of points in latitude -REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLON ! longitude -REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLAT ! latitude -! -! -!* 0.2 Declarations of local variables -! ------------------------------- -! -INTEGER :: ILON, ILAT -INTEGER :: IL -REAL(KIND=JPRB) :: ZHOOK_HANDLE -!------------------------------------------------------------------------------- -IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:GET_GRID_TRIP',0,ZHOOK_HANDLE) -ILON = NINT(PGRID_TRIP(6)) -ILAT = NINT(PGRID_TRIP(7)) -! -IF (PRESENT(PLONMIN)) PLONMIN = PGRID_TRIP(1) -IF (PRESENT(PLONMAX)) PLONMAX = PGRID_TRIP(2) -IF (PRESENT(PLATMIN)) PLATMIN = PGRID_TRIP(3) -IF (PRESENT(PLATMAX)) PLATMAX = PGRID_TRIP(4) -IF (PRESENT(PRES )) PRES = PGRID_TRIP(5) -IF (PRESENT(KLON )) KLON = ILON -IF (PRESENT(KLAT )) KLAT = ILAT -IF (PRESENT(PLON )) PLON(:) = PGRID_TRIP(8:7+ILON) -IF (PRESENT(PLAT )) PLAT(:) = PGRID_TRIP(8+ILON:7+ILON+ILAT) -IF (LHOOK) CALL DR_HOOK('MODE_GRID_TRIP:GET_GRID_TRIP',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -END SUBROUTINE GET_GRID_TRIP -!--------------------------------------------------------------------------------- -! -!############################################################################ -!############################################################################ -!############################################################################ -!############################################################################ -!############################################################################ -!############################################################################ -! -END MODULE MODE_GRID_TRIP diff --git a/src/SURFEX/mode_modeln_trip_handler.F90 b/src/SURFEX/mode_modeln_trip_handler.F90 deleted file mode 100644 index cfc38493cedeb19c5edee58aaa1802127018a023..0000000000000000000000000000000000000000 --- a/src/SURFEX/mode_modeln_trip_handler.F90 +++ /dev/null @@ -1,62 +0,0 @@ -MODULE MODE_MODELN_TRIP_HANDLER -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE - -INTEGER, SAVE, PRIVATE :: ICURRENT_MODEL_TRIP = -1 -!$OMP THREADPRIVATE(ICURRENT_MODEL_TRIP) - -CONTAINS - -FUNCTION GET_CURRENT_MODEL_INDEX_TRIP() -INTEGER :: GET_CURRENT_MODEL_INDEX_TRIP -REAL(KIND=JPRB) :: ZHOOK_HANDLE -!! -IF (LHOOK) CALL DR_HOOK('MODE_MODELN_TRIP_HANDLER:GET_CURRENT_MODEL_INDEX_TRIP',0,ZHOOK_HANDLE) -GET_CURRENT_MODEL_INDEX_TRIP = ICURRENT_MODEL_TRIP -IF (LHOOK) CALL DR_HOOK('MODE_MODELN_TRIP_HANDLER:GET_CURRENT_MODEL_INDEX_TRIP',1,ZHOOK_HANDLE) -!! -END FUNCTION GET_CURRENT_MODEL_INDEX_TRIP -! -SUBROUTINE GOTO_MODEL_TRIP(KMI, LKFROM) -! -USE MODI_GOTO_WRAPPER_TRIP -! -LOGICAL, INTENT(IN) :: LKFROM -INTEGER, INTENT(IN) :: KMI -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_MODELN_TRIP_HANDLER:GOTO_MODEL_TRIP',0,ZHOOK_HANDLE) - -IF (LKFROM) THEN - - IF (ICURRENT_MODEL_TRIP == -1) THEN - ! First call to GOTO_MODEL_TRIP - ICURRENT_MODEL_TRIP = 1 ! Default model index - ! - CALL GOTO_WRAPPER_TRIP (ICURRENT_MODEL_TRIP, KMI, LKFROM) - ICURRENT_MODEL_TRIP = KMI - ! - ELSE - ! - CALL GOTO_WRAPPER_TRIP (ICURRENT_MODEL_TRIP, KMI, LKFROM) - ICURRENT_MODEL_TRIP = KMI - ! - END IF - ! -ELSE - ! - CALL GOTO_WRAPPER_TRIP (ICURRENT_MODEL_TRIP, KMI, LKFROM) - ICURRENT_MODEL_TRIP = KMI - ! -END IF -! -IF (LHOOK) CALL DR_HOOK('MODE_MODELN_TRIP_HANDLER:GOTO_MODEL_TRIP',1,ZHOOK_HANDLE) -! -END SUBROUTINE GOTO_MODEL_TRIP - -END MODULE MODE_MODELN_TRIP_HANDLER - diff --git a/src/SURFEX/mode_rw_trip.F90 b/src/SURFEX/mode_rw_trip.F90 deleted file mode 100644 index d4680d3768afd7e8ec8f091cbe0e1157b55979c8..0000000000000000000000000000000000000000 --- a/src/SURFEX/mode_rw_trip.F90 +++ /dev/null @@ -1,291 +0,0 @@ -!###################### -MODULE MODE_RW_TRIP -!###################### -! -!!**** *MODE_RW_TRIP* -!! -!! PURPOSE -!! ------- -! -! The purpose of this routine is to store here all routines -! used by TRIP for read/write variables. -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! NONE -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme * Meteo France * -!! -!! MODIFICATIONS -!! ------------- -!! Original 25/04/08 -!-------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! - INTERFACE READ_TRIP - MODULE PROCEDURE READ_TRIP_XY - MODULE PROCEDURE READ_TRIP_XYZ - END INTERFACE -! - INTERFACE WRITE_TRIP - MODULE PROCEDURE WRITE_TRIP_XY - MODULE PROCEDURE WRITE_TRIP_XYZ - END INTERFACE -! -!------------------------------------------------------------------------------- -! -CONTAINS -! -!------------------------------------------------------------------------------- -! -! ################################################## - SUBROUTINE READ_TRIP_XY(KLUOUT,HFILE,HVNAME,PREAD) -! ################################################## -! -!! PURPOSE -!! ------- -! -! Read a XY variable in a netcdf file -! -USE MODE_TRIP_NETCDF -USE MODD_TRIP_n, ONLY : LNCPRINT -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=*), INTENT(IN) :: HFILE - CHARACTER(LEN=*), INTENT(IN) :: HVNAME -! -INTEGER, INTENT(IN) :: KLUOUT -! -REAL, DIMENSION(:,:), INTENT(OUT) :: PREAD -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YFILE - CHARACTER(LEN=nf_max_name) :: YVNAME -! -LOGICAL, PARAMETER :: LRW = .FALSE. -! -INTEGER :: INCID -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:READ_TRIP_XY',0,ZHOOK_HANDLE) -YFILE = HFILE (1:LEN_TRIM(HFILE )) -YVNAME = HVNAME(1:LEN_TRIM(HVNAME)) -! - CALL NCOPEN(KLUOUT,LRW,LNCPRINT,YFILE,INCID) - CALL NCREAD(KLUOUT,INCID,YVNAME,PREAD,LNCPRINT) - CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:READ_TRIP_XY',1,ZHOOK_HANDLE) -! -END SUBROUTINE READ_TRIP_XY -! -!------------------------------------------------------------------------------- -! -! ################################################## - SUBROUTINE READ_TRIP_XYZ(KLUOUT,HFILE,HVNAME,PREAD) -! ################################################## -! -!! PURPOSE -!! ------- -! -! Read a XYZ variable in a netcdf file -! -USE MODE_TRIP_NETCDF -USE MODD_TRIP_n, ONLY : LNCPRINT -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=*), INTENT(IN) :: HFILE - CHARACTER(LEN=*), INTENT(IN) :: HVNAME -! -INTEGER, INTENT(IN) :: KLUOUT -! -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PREAD -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YFILE - CHARACTER(LEN=nf_max_name) :: YVNAME -! -LOGICAL, PARAMETER :: LRW = .FALSE. -! -INTEGER :: INCID -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:READ_TRIP_XYZ',0,ZHOOK_HANDLE) -YFILE = HFILE (1:LEN_TRIM(HFILE )) -YVNAME = HVNAME(1:LEN_TRIM(HVNAME)) -! - CALL NCOPEN(KLUOUT,LRW,LNCPRINT,YFILE,INCID) - CALL NCREAD(KLUOUT,INCID,YVNAME,PREAD,LNCPRINT) - CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:READ_TRIP_XYZ',1,ZHOOK_HANDLE) -! -END SUBROUTINE READ_TRIP_XYZ -! -!------------------------------------------------------------------------------- -! -! ###################################################################### - SUBROUTINE WRITE_TRIP_XY(KLUOUT,HFILE,HVNAME,PMASK,PWRITE,KTNUM,KTVAL) -! ###################################################################### -! -!! PURPOSE -!! ------- -! -! Write a XY variable in HFILE -! -USE MODE_TRIP_NETCDF -USE MODD_TRIP_n, ONLY : LNCPRINT -USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=*), INTENT(IN) :: HFILE - CHARACTER(LEN=*), INTENT(IN) :: HVNAME -! -INTEGER, INTENT(IN) :: KLUOUT -! -REAL, DIMENSION(:,:), INTENT(IN) :: PMASK -REAL, DIMENSION(:,:), INTENT(IN) :: PWRITE -! -INTEGER, INTENT(IN), OPTIONAL :: KTNUM -INTEGER, INTENT(IN), OPTIONAL :: KTVAL -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YFILE - CHARACTER(LEN=nf_max_name) :: YVNAME -! -LOGICAL, PARAMETER :: LRW = .TRUE. -! -REAL, DIMENSION(SIZE(PWRITE,1),SIZE(PWRITE,2)) :: ZWRITE -! -INTEGER :: INCID -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:WRITE_TRIP_XY',0,ZHOOK_HANDLE) -YFILE = HFILE (1:LEN_TRIM(HFILE )) -YVNAME = HVNAME(1:LEN_TRIM(HVNAME)) -! -ZWRITE = PWRITE -WHERE(PMASK(:,:)==0.0) ZWRITE(:,:)=XTRIP_UNDEF -! - CALL NCOPEN(KLUOUT,LRW,LNCPRINT,YFILE,INCID) -IF(PRESENT(KTNUM).AND.PRESENT(KTVAL))THEN - CALL NCSTORE(KLUOUT,INCID,YVNAME,ZWRITE,LNCPRINT,KTNUM,KTVAL) -ELSE - CALL NCSTORE(KLUOUT,INCID,YVNAME,ZWRITE,LNCPRINT) -ENDIF - CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) -! -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:WRITE_TRIP_XY',1,ZHOOK_HANDLE) -! -END SUBROUTINE WRITE_TRIP_XY -! -!------------------------------------------------------------------------------- -! -! ####################################################################### - SUBROUTINE WRITE_TRIP_XYZ(KLUOUT,HFILE,HVNAME,PMASK,PWRITE,KTNUM,KTVAL) -! ####################################################################### -! -!! PURPOSE -!! ------- -! -! Write a XY variable in HFILE -! -USE MODE_TRIP_NETCDF -USE MODD_TRIP_n, ONLY : LNCPRINT -USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=*), INTENT(IN) :: HFILE - CHARACTER(LEN=*), INTENT(IN) :: HVNAME -! -INTEGER, INTENT(IN) :: KLUOUT -! -REAL, DIMENSION(:,:), INTENT(IN) :: PMASK -REAL, DIMENSION(:,:,:), INTENT(IN) :: PWRITE -! -INTEGER, INTENT(IN), OPTIONAL :: KTNUM -INTEGER, INTENT(IN), OPTIONAL :: KTVAL -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YFILE - CHARACTER(LEN=nf_max_name) :: YVNAME -! -LOGICAL, PARAMETER :: LRW = .TRUE. -LOGICAL, PARAMETER :: LZW = .TRUE. -! -REAL, DIMENSION(SIZE(PWRITE,1),SIZE(PWRITE,2)) :: ZWRITE -! -INTEGER :: INCID, IZLEN, J -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:WRITE_TRIP_XYZ',0,ZHOOK_HANDLE) -IZLEN=SIZE(PWRITE,3) -! -YFILE = HFILE (1:LEN_TRIM(HFILE )) -YVNAME = HVNAME(1:LEN_TRIM(HVNAME)) -! - CALL NCOPEN(KLUOUT,LRW,LNCPRINT,YFILE,INCID) -DO J=1,IZLEN - WHERE(PMASK(:,:)>0.0) - ZWRITE(:,:) = PWRITE(:,:,J) - ELSEWHERE - ZWRITE(:,:)=XTRIP_UNDEF - ENDWHERE - IF(PRESENT(KTNUM).AND.PRESENT(KTVAL))THEN - CALL NCSTORE(KLUOUT,INCID,YVNAME,ZWRITE,LNCPRINT,KTNUM,KTVAL,J,LZW) - ELSE - CALL NCSTORE(KLUOUT,INCID,YVNAME,ZWRITE,LNCPRINT,KLEVEL=J,OVARZDIM=LZW) - ENDIF -ENDDO - CALL NCCLOSE(KLUOUT,LNCPRINT,YFILE,INCID) -! -IF (LHOOK) CALL DR_HOOK('MODE_RW_TRIP:WRITE_TRIP_XYZ',1,ZHOOK_HANDLE) -! -END SUBROUTINE WRITE_TRIP_XYZ -! -!------------------------------------------------------------------------------- -! -END MODULE MODE_RW_TRIP diff --git a/src/SURFEX/mode_trip_function.F90 b/src/SURFEX/mode_trip_function.F90 deleted file mode 100644 index 184dc77f88b76fad8800bed7459ee300a90d9458..0000000000000000000000000000000000000000 --- a/src/SURFEX/mode_trip_function.F90 +++ /dev/null @@ -1,472 +0,0 @@ -!######################## -MODULE MODE_TRIP_FUNCTION -!######################## -! -!!**** *MODE_TRIP_FUNCTION* -!! -!! PURPOSE -!! ------- -! -! The purpose of this routine is to store here all functions -! used by MODE_TRIP_INIT. -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! NONE -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme * Meteo France * -!! -!! MODIFICATIONS -!! ------------- -!! Original 15/04/08 -!-------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -! -!------------------------------------------------------------------------------- -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -CONTAINS -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION IRNXTX(IX,NX,IRIV) RESULT(KNEXTX) -! ############################################### -! -IMPLICIT NONE -! -INTEGER, INTENT(IN) :: IX,NX,IRIV -INTEGER :: KNEXTX -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:IRNXTX',0,ZHOOK_HANDLE) -IF(IRIV==1.OR.IRIV==5)THEN - KNEXTX = IX -ELSEIF(IRIV==8.OR.IRIV==7.OR.IRIV==6)THEN - IF(IX==1)THEN - KNEXTX = NX - ELSE - KNEXTX = IX-1 - ENDIF -ELSEIF(IRIV==2.OR.IRIV==3.OR.IRIV==4)THEN - IF(IX==NX)THEN - KNEXTX = 1 - ELSE - KNEXTX = IX+1 - ENDIF -ELSE - KNEXTX = 0 -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:IRNXTX',1,ZHOOK_HANDLE) -! -END FUNCTION IRNXTX -! -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION IRNXTY(IY,NY,IRIV) RESULT(KNEXTY) -! ############################################### -! -IMPLICIT NONE -! -INTEGER, INTENT(IN) :: IY,NY,IRIV -INTEGER :: KNEXTY -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:IRNXTY',0,ZHOOK_HANDLE) -IF(IRIV==7.OR.IRIV==3)THEN - KNEXTY = IY -ELSEIF(IRIV==6.OR.IRIV==5.OR.IRIV==4)THEN - KNEXTY = IY-1 -ELSEIF(IRIV==8.OR.IRIV==1.OR.IRIV==2)THEN - IF(IY==NY)THEN - KNEXTY = 0 - ELSE - KNEXTY = IY+1 - ENDIF -ELSE - KNEXTY = 0 -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:IRNXTY',1,ZHOOK_HANDLE) -! -END FUNCTION IRNXTY -! -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION GETLON(IX,NX) RESULT(PLON0) -! ############################################### -! -IMPLICIT NONE -! -INTEGER, INTENT(IN) :: IX,NX -REAL :: PLON0 -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GETLON',0,ZHOOK_HANDLE) -PLON0 = 360.0 * (REAL(IX)-0.5) / REAL(NX) - 180.0 -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GETLON',1,ZHOOK_HANDLE) -! -END FUNCTION GETLON -! -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION GETLAT(IY,NY) RESULT(PLAT0) -! ############################################### -! -IMPLICIT NONE -! -INTEGER, INTENT(IN) :: IY,NY -REAL :: PLAT0 -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GETLAT',0,ZHOOK_HANDLE) -PLAT0 = 180.0 * (REAL(IY)-0.5) / REAL(NY) - 90.0 -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GETLAT',1,ZHOOK_HANDLE) -! -END FUNCTION GETLAT -! -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION GIVELON(ZY) RESULT(PDLON) -! ############################################### -! -USE MODD_TRIP_PAR, ONLY : XPI_T, XRAD_T -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: ZY -REAL :: PDLON -! -REAL, PARAMETER :: ZE2 = 0.006694470 -REAL :: ZR, ZY_RAD, ZRA -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVELON',0,ZHOOK_HANDLE) -ZRA = XRAD_T/1000.0 -! -ZY_RAD = ZY * XPI_T / 180. -! -PDLON = XPI_T / 180.0 * ZRA * COS(ZY_RAD) / SQRT(1.0 - ZE2 * SIN(ZY_RAD) * SIN(ZY_RAD)) -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVELON',1,ZHOOK_HANDLE) -! -END FUNCTION GIVELON -! -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION GIVELAT(ZY) RESULT(PDLAT) -! ############################################### -! -USE MODD_TRIP_PAR, ONLY : XPI_T, XRAD_T -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: ZY -REAL :: PDLAT -! -REAL, PARAMETER :: ZE2 = 0.006694470 -REAL :: ZR, ZY_RAD, ZRA -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVELAT',0,ZHOOK_HANDLE) -ZRA = XRAD_T/1000.0 -! -ZY_RAD = ZY * XPI_T / 180. -! -PDLAT = XPI_T / 180.0 * ZRA * (1.0-ZE2) / SQRT( (1.0 - ZE2 * SIN(ZY_RAD) * SIN(ZY_RAD))**3. ) -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVELAT',1,ZHOOK_HANDLE) -! -END FUNCTION GIVELAT -! -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION GIVERAD(ZY) RESULT(PRAD) -! ############################################### -! -USE MODD_TRIP_PAR, ONLY : XRAD_T, XPI_T -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: ZY -REAL :: PRAD -! -REAL, PARAMETER :: ZE2 = 0.006694470 -REAL :: ZR, ZY_RAD, ZRN, ZRA -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVERAD',0,ZHOOK_HANDLE) -ZRA = XRAD_T/1000.0 -! -ZY_RAD = ZY * XPI_T / 180. -! -ZRN = ZRA / SQRT(1.0 - ZE2 * SIN(ZY_RAD) * SIN(ZY_RAD) ) -! -PRAD = ZRN * SQRT( 1.0 - ZE2 * SIN(ZY_RAD) + ZE2 * ZE2 * SIN(ZY_RAD) * SIN(ZY_RAD) ) -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVERAD',1,ZHOOK_HANDLE) -! -END FUNCTION GIVERAD -! -!------------------------------------------------------------------------------- -! -! ############################################### - FUNCTION GIVELEN(ZX,ZY,ZX_N,ZY_N) RESULT(PLEN0) -! ############################################### -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: ZX,ZY,ZX_N,ZY_N -REAL :: PLEN0 -! -REAL :: ZLAT, ZDX, ZDY, ZRAD, ZDLON, ZDLAT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVELEN',0,ZHOOK_HANDLE) -ZDLON = ABS(ZX-ZX_N) -ZDLAT = ABS(ZY-ZY_N) -! -IF(ZDLON>=180.0)ZDLON = ABS(360.0 - ZDLON) -! -PLEN0 = 0.0 -! -IF(ZX==ZX_N)THEN - ZLAT = (ZY+ZY_N) / 2.0 - PLEN0 = GIVELAT(ZLAT) * ZDLAT -ELSEIF(ZY==ZY_N)THEN - ZLAT = ZY - PLEN0 = GIVELON(ZLAT) * ZDLON -ELSE - ZLAT = (ZY+ZY_N) / 2.0 - ZRAD = GIVERAD(ZLAT) - ZDX = GIVELON(ZLAT) * ZDLON / ZRAD - ZDY = GIVELAT(ZLAT) * ZDLAT / ZRAD - PLEN0 = ACOS(COS(ZDX)*COS(ZDY)) * ZRAD -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:GIVELEN',1,ZHOOK_HANDLE) -! -END FUNCTION GIVELEN -! -!------------------------------------------------------------------------------- -! -! ############################################## - FUNCTION FUNCVEL(PRC,PL,PW,PX,PSIN) RESULT(PY) -! ############################################## -! -USE MODD_TRIP_PAR, ONLY : XM_EXP, XRHOLW_T -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: PRC,PL,PW,PX,PSIN -! -REAL :: PY -REAL :: ZHS,ZRADIUS,ZVEL -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:FUNCVEL',0,ZHOOK_HANDLE) -ZHS=0.0 -IF(PRC>0.0)THEN - ZHS=PX/(XRHOLW_T*PL*PW) -ENDIF -! -ZVEL=DIAGVEL(PRC,PL,PW,ZHS) -! -PY= PSIN-ZVEL*PX/PL -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:FUNCVEL',1,ZHOOK_HANDLE) -! -END FUNCTION FUNCVEL -! -!------------------------------------------------------------------------------- -! -! ############################################## - FUNCTION DIAGVEL(PRC,PL,PW,PX) RESULT(PY) -! ############################################## -! -USE MODD_TRIP_n, ONLY : XTRIP_TSTEP,XCVEL -USE MODD_TRIP_PAR, ONLY : XM_EXP,XRHOLW_T -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: PRC,PL,PW,PX -! -REAL :: PY -REAL :: ZRADIUS, ZVV -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:DIAGVEL',0,ZHOOK_HANDLE) -! -IF(PRC>0.0)THEN - ZRADIUS=PW*PX/(PW+2.0*PX) - ZVV=MIN(PRC*(ZRADIUS**XM_EXP),PL/XTRIP_TSTEP) - PY=MAX(0.1,ZVV) -ELSE - PY=XCVEL -ENDIF -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:DIAGVEL',1,ZHOOK_HANDLE) -! -END FUNCTION DIAGVEL -! -!------------------------------------------------------------------------------- -! -! ################################################################## - FUNCTION FUNCFLOOD(PX,PF,PHF,PLF,PWF,PHC,PNF,PW,PL,PD,PFF) RESULT(PY) -! ################################################################## -! -USE MODD_TRIP_PAR, ONLY : XRHOLW_T -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: PX,PF,PHF,PHC,PNF,PLF,PWF,PW,PL,PD,PFF -REAL :: PY -REAL :: ZMEX,ZMDEF,ZHT,ZVIN,ZVOUT,ZHS -REAL :: ZQIN,ZQOUT,ZFL,ZHIN,ZHOUT,ZHLIM -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:FUNCFLOOD',0,ZHOOK_HANDLE) -PY=0.0 -IF(PHC==0.0.OR.PD==1.0 .AND. LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:FUNCFLOOD',1,ZHOOK_HANDLE) -IF(PHC==0.0.OR.PD==1.0)RETURN -! -ZHS=PX/(XRHOLW_T*PL*PW) -! -ZFL=MAX(1.E-3,PLF) -! -! * water mass exchanged -! -ZHIN =MAX(0.0,ZHS-PHC-PHF) -ZHOUT=MAX(0.0,PHF+PHC-ZHS) -! -ZMEX =ZFL*ZHIN *PW*XRHOLW_T -ZMDEF=ZFL*ZHOUT*PW*XRHOLW_T -! -ZMDEF=MIN(ZMDEF,PF) -! -! * water velocity -! - CALL VELFLOOD(ZHS,PFF,PHF,PLF,PWF,PHC,PNF,PW,PD,ZVIN,ZVOUT) -! -! * inflow or outflow water flux -! -ZQIN =ZVIN *ZMEX /(PW+PWF) -ZQOUT=ZVOUT*ZMDEF/(PW+PWF) -! -! * total water flux -! -PY=ZQIN-ZQOUT -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:FUNCFLOOD',1,ZHOOK_HANDLE) -! -END FUNCTION FUNCFLOOD -! -!------------------------------------------------------------------------------- -! -! ############################################## - SUBROUTINE VELFLOOD(PHS,PFF,PHF,PLF,PWF,PHC, & - PNF,PW,PD,PVIN,PVOUT ) -! ############################################## -! -USE MODD_TRIP_n, ONLY : XTRIP_TSTEP -USE MODD_TRIP_PAR, ONLY : XM_EXP -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: PHS,PHF,PLF,PWF,PHC,PNF,PW,PD,PFF -REAL, INTENT(OUT) :: PVIN,PVOUT -! -REAL :: ZSLOPE_IN,ZSLOPE_OUT,ZFL, & - ZRADIN,ZRADOUT,ZHEX -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:VELFLOOD',0,ZHOOK_HANDLE) -PVIN =0.0 -PVOUT=0.0 -! -IF(PHC==0.0.OR.PD==1.0 .AND. LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:VELFLOOD',1,ZHOOK_HANDLE) -IF(PHC==0.0.OR.PD==1.0)RETURN -! -ZFL=MAX(1.E-3,PLF) -! -! * water slope -! -ZSLOPE_IN =2.0*MAX(0.0,PHS-PHC-PHF)/(PW+PWF) -ZSLOPE_OUT=2.0*MAX(0.0,PHF+PHC-PHS)/(PW+PWF) -! -! * manning velocity -! -ZHEX =MAX(0.0,PHS-PHC) -! -ZRADIN = ZHEX*ZFL/(ZFL+2.0*ZHEX) -ZRADOUT = PHF *ZFL/(ZFL+2.0*PHF) -! -IF(PFF<1.0)THEN - PVIN =(ZRADIN **XM_EXP)*SQRT(ZSLOPE_IN )/PNF -ENDIF -! -PVOUT=(ZRADOUT**XM_EXP)*SQRT(ZSLOPE_OUT)/PNF -! -IF(PVIN >0.0)PVIN =MAX(0.001,PVIN) -IF(PVOUT>0.0)PVOUT=MAX(0.001,PVOUT) -! -PVIN =MIN(PVIN, (PW+PWF)/XTRIP_TSTEP) -PVOUT=MIN(PVOUT,(PW+PWF)/XTRIP_TSTEP) -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:VELFLOOD',1,ZHOOK_HANDLE) -! -END SUBROUTINE VELFLOOD -! -!------------------------------------------------------------------------------- -! -! ########################################################### - FUNCTION DELTA_FLOOD(PX,PF,PHF,PLF,PWF,PHC,PW,PL) RESULT(PY) -! ########################################################### -! -USE MODD_TRIP_PAR, ONLY : XRHOLW_T -! -IMPLICIT NONE -! -REAL, INTENT(IN) :: PX,PF,PHF,PLF,PWF,PHC,PW,PL -REAL :: PY -REAL :: ZMDEF,ZHDEF,ZHS,ZFL -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:DELTA_FLOOD',0,ZHOOK_HANDLE) -PY=0.0 -IF(PHC==0.0 .AND. LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:DELTA_FLOOD',1,ZHOOK_HANDLE) -IF(PHC==0.0)RETURN -! -ZHS=PX/(XRHOLW_T*PL*PW) -! -ZFL=MAX(1.E-3,PLF) -! -IF(PHF==0.0)THEN - ZHDEF=0.0 -ELSE - ZHDEF=MAX(0.0,PHF+PHC-ZHS) -ENDIF -! -ZMDEF=ZHDEF*XRHOLW_T*PW*ZFL -IF(PF<ZMDEF)THEN - PY=1.0 -ELSE - PY=0.0 -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_FUNCTION:DELTA_FLOOD',1,ZHOOK_HANDLE) -! -END FUNCTION DELTA_FLOOD -! -!------------------------------------------------------------------------------- -! -END MODULE MODE_TRIP_FUNCTION diff --git a/src/SURFEX/mode_trip_init.F90 b/src/SURFEX/mode_trip_init.F90 deleted file mode 100644 index 96b65e788387bdb029d7bbfc9e021bed5639d975..0000000000000000000000000000000000000000 --- a/src/SURFEX/mode_trip_init.F90 +++ /dev/null @@ -1,331 +0,0 @@ -!################### -MODULE MODE_TRIP_INIT -!################### -! -!!**** *MODE_TRIP_INIT* -!! -!! PURPOSE -!! ------- -! -! The purpose of this routine is to store here all routines -! used by INIT_TRIP. -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! NONE -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme * Meteo France * -!! -!! MODIFICATIONS -!! ------------- -!! Original 15/04/08 -!-------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! - INTERFACE SETNEXT - MODULE PROCEDURE SETNEXT - END INTERFACE -! - INTERFACE SETAREA - MODULE PROCEDURE SETAREA - END INTERFACE -! - INTERFACE SETLEN - MODULE PROCEDURE SETLEN - END INTERFACE -! - INTERFACE SET_SUBGRID_FLOOD - MODULE PROCEDURE SET_SUBGRID_FLOOD - END INTERFACE -! -!------------------------------------------------------------------------------- -! -CONTAINS -!------------------------------------------------------------------------------- -! -! ############################################################# - SUBROUTINE SETNEXT(KLON,KLAT,KGRCN,KNEXTX,KNEXTY,GMLON,GMLAT) -! ############################################################# -! -!! PURPOSE -!! ------- -! -! set the destination grid point -! -! (i, j) ===> (inextx(i,j), inexty(i,j)) -! at river mouth : pointing itself -! at sea : 0 -! -USE MODE_TRIP_FUNCTION -! -IMPLICIT NONE -! -!* declarations of arguments -! -INTEGER, INTENT(IN) :: KLON, KLAT -! -INTEGER, DIMENSION(:,:), INTENT(INOUT) :: KGRCN -! -INTEGER, DIMENSION(:,:), INTENT(OUT) :: KNEXTX, KNEXTY -! -LOGICAL, INTENT(IN), OPTIONAL :: GMLON,GMLAT -! -!* declarations of local variables -! -INTEGER :: I, J, K -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SETNEXT',0,ZHOOK_HANDLE) -IF(PRESENT(GMLON))THEN -IF(GMLON)THEN - DO J=1,KLAT - IF(KGRCN(KLON,J)==2..OR.KGRCN(KLON,J)==3.OR.KGRCN(KLON,J)==4.)KGRCN(KLON,J)=9 - IF(KGRCN( 1,J)==6..OR.KGRCN( 1,J)==7.OR.KGRCN( 1,J)==8.)KGRCN( 1,J)=9 - ENDDO -ENDIF -ENDIF -! -IF(PRESENT(GMLAT))THEN -IF(GMLAT)THEN - DO I=1,KLON - IF(KGRCN(I, 1)==4..OR.KGRCN(I, 1)==5.OR.KGRCN(I, 1)==6.)KGRCN(I, 1)=9 - IF(KGRCN(I,KLAT)==1..OR.KGRCN(I,KLAT)==2.OR.KGRCN(I,KLAT)==8.)KGRCN(I,KLAT)=9 - ENDDO -ENDIF -ENDIF -! -DO I=1,KLON - DO J=1,KLAT -! - K=KGRCN(I,J) -! - IF((K>=1).AND.(K<=8))THEN - KNEXTX(I,J)=IRNXTX(I,KLON,K) - KNEXTY(I,J)=IRNXTY(J,KLAT,K) - ELSEIF(K==9.OR.K==12)THEN - KNEXTX(I,J)=I - KNEXTY(I,J)=J - ELSE - KNEXTX(I,J)=0 - KNEXTY(I,J)=0 - ENDIF -! - ENDDO -ENDDO -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SETNEXT',1,ZHOOK_HANDLE) -! -END SUBROUTINE SETNEXT -! -!------------------------------------------------------------------------------- -! -! ################################################# - SUBROUTINE SETAREA(KLAT,PLATMIN,PRES,PAREA) -! ################################################# -! -!! PURPOSE -!! ------- -! -! set area [m²] of each grid box -! -USE MODD_TRIP_PAR, ONLY : XPI_T, XRAD_T -! -IMPLICIT NONE -! -!* declarations of arguments -! -INTEGER, INTENT(IN) :: KLAT -REAL, INTENT(IN) :: PRES -REAL, INTENT(IN) :: PLATMIN -! -REAL, DIMENSION(:,:), INTENT(OUT) :: PAREA -! -!* declarations of local variables -! -REAL :: ZDLAT, ZDLON, ZLAT -! -INTEGER :: I, J, K -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SETAREA',0,ZHOOK_HANDLE) -ZDLON=PRES -ZDLAT=PRES -! -ZLAT=PLATMIN-(PRES/2.) -! -DO J=1,KLAT -! - ZLAT=ZLAT+PRES -! - PAREA(:,J) = XRAD_T**2 * XPI_T/180.*(ZDLON) & - * (SIN((ZLAT+ZDLAT/2.)*XPI_T/180.)-SIN((ZLAT-ZDLAT/2.)*XPI_T/180.)) -! -ENDDO -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SETAREA',1,ZHOOK_HANDLE) -! -END SUBROUTINE SETAREA -! -!------------------------------------------------------------------------------- -! -! ############################################################# - SUBROUTINE SETLEN(KLON,KLAT,KGRCN,KNEXTX,KNEXTY,PRATMED,PLEN) -! ############################################################# -! -!! PURPOSE -!! ------- -! -! length from (i, j) to the destination in [m] -! river mouth : distance to 1 grid north -! sea : 0.0 -! -! -USE MODE_TRIP_FUNCTION -! -IMPLICIT NONE -! -!* declarations of arguments -! -INTEGER, INTENT(IN) :: KLON, KLAT -REAL, INTENT(IN) :: PRATMED -! -INTEGER, DIMENSION(:,:), INTENT(IN) :: KGRCN -! -INTEGER, DIMENSION(:,:), INTENT(IN) :: KNEXTX, KNEXTY -! -REAL, DIMENSION(:,:), INTENT(OUT) :: PLEN -! -!* declarations of local variables -! -REAL :: ZLON, ZLAT, ZLON_N, ZLAT_N -! -INTEGER :: I, J, K -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SETLEN',0,ZHOOK_HANDLE) -ZLON=0.0 -ZLAT=0.0 -! -DO J=1,KLAT -! - ZLAT=GETLAT(KLAT-J+1,KLAT) -! - DO I=1,KLON -! - ZLON=GETLON(I,KLON) -! - IF(KGRCN(I,J)>=1.AND.KGRCN(I,J)<=8)THEN - ZLON_N = GETLON(KNEXTX(I,J),KLON) - ZLAT_N = GETLAT(KLAT-KNEXTY(I,J)+1,KLAT) - PLEN(I,J) = GIVELEN(ZLON,ZLAT,ZLON_N,ZLAT_N) * 1000.0 - ELSEIF(KGRCN(I,J)==9.OR.KGRCN(I,J)==12)THEN - ZLAT_N = GETLAT(KLAT-(J-1)+1,KLAT) - PLEN(I,J) = GIVELEN(ZLON,ZLAT,ZLON,ZLAT_N) * 1000.0 - ELSE - PLEN(I,J) = 0.0 - ENDIF -! - ENDDO -! -ENDDO -! -PLEN=PLEN*PRATMED -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SETLEN',1,ZHOOK_HANDLE) -! -END SUBROUTINE SETLEN -! -!------------------------------------------------------------------------------- -! -! ################################################################### - SUBROUTINE SET_SUBGRID_FLOOD(KLON,KLAT,PAREA,PTAB_H,PTAB_F,PTAB_VF) -! ################################################################### -! -!! PURPOSE -!! ------- -! -! set area [m²] of each grid box -! -USE MODD_TRIP_PAR, ONLY : XTRIP_UNDEF, XRHOLW_T -! -IMPLICIT NONE -! -!* declarations of arguments -! -INTEGER, INTENT(IN) :: KLON, KLAT -REAL, DIMENSION(:,: ), INTENT(IN) :: PAREA -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTAB_H -! -REAL, DIMENSION(:,:,:), INTENT(INOUT):: PTAB_F -REAL, DIMENSION(:,:,:), INTENT( OUT):: PTAB_VF -! -!* declarations of local variables -! -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZF,ZV -! -INTEGER :: I, J, K, IZDIM -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SET_SUBGRID_FLOOD',0,ZHOOK_HANDLE) -IZDIM=SIZE(PTAB_H,3) -! -ALLOCATE(ZF(KLON,KLAT,IZDIM)) -ALLOCATE(ZV(KLON,KLAT,IZDIM)) -ZF = 0.0 -ZV = 0.0 -! -DO J=1,KLAT - DO I=1,KLON -! - IF(ALL(PTAB_H(I,J,:)>XTRIP_UNDEF-10.0))THEN - ZV(I,J,:)=XTRIP_UNDEF - ZF(I,J,:)=XTRIP_UNDEF - CYCLE - ENDIF -! - DO K=2,IZDIM - IF(PTAB_H(I,J,K)<XTRIP_UNDEF-1.0)THEN - ZV(I,J,K)=ZV(I,J,K-1)+0.5*PTAB_H(I,J,K)*PTAB_F(I,J,K)*PAREA(I,J)*XRHOLW_T - ZF(I,J,K)=ZF(I,J,K-1)+PTAB_F(I,J,K) - ELSE - ZV(I,J,K:IZDIM)=XTRIP_UNDEF - ZF(I,J,K:IZDIM)=XTRIP_UNDEF - EXIT - ENDIF - ENDDO -! - ENDDO -ENDDO -! -WHERE(PTAB_H(:,:,:)<XTRIP_UNDEF-1.0) - PTAB_F (:,:,:)=ZF(:,:,:) - PTAB_VF(:,:,:)=ZV(:,:,:) -ENDWHERE -! -DEALLOCATE(ZF) -DEALLOCATE(ZV) -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_INIT:SET_SUBGRID_FLOOD',1,ZHOOK_HANDLE) -! -END SUBROUTINE SET_SUBGRID_FLOOD -! -!------------------------------------------------------------------------------- -! -END MODULE MODE_TRIP_INIT diff --git a/src/SURFEX/mode_trip_netcdf.F90 b/src/SURFEX/mode_trip_netcdf.F90 deleted file mode 100644 index 76ccd7ae07f70832c05ed5e811db2e79baa4130b..0000000000000000000000000000000000000000 --- a/src/SURFEX/mode_trip_netcdf.F90 +++ /dev/null @@ -1,596 +0,0 @@ -!###################### -MODULE MODE_TRIP_NETCDF -!###################### -! -!!**** *MODE_TRIP_NETCDF* -!! -!! PURPOSE -!! ------- -! -! The purpose of this routine is to store here all routines -! used by TRIP for read/store variables in netcdf. -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! NONE -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme * Meteo France * -!! -!! MODIFICATIONS -!! ------------- -!! Original 25/04/08 -!-------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! - INTERFACE NCOPEN - MODULE PROCEDURE NCOPEN - END INTERFACE -! - INTERFACE NCCLOSE - MODULE PROCEDURE NCCLOSE - END INTERFACE -! - INTERFACE NCREAD - MODULE PROCEDURE NCREAD_X - MODULE PROCEDURE NCREAD_XY - MODULE PROCEDURE NCREAD_XYZ - END INTERFACE -! - INTERFACE NCCREATE - MODULE PROCEDURE NCCREATE - END INTERFACE -! - INTERFACE NCSTORE - MODULE PROCEDURE NCSTORE - END INTERFACE -! -!------------------------------------------------------------------------------- -! -CONTAINS -! -!------------------------------------------------------------------------------- -! -! ###################################################### - SUBROUTINE NCOPEN(KLUOUT,ORW,OVERBOSE,HFILENAME,KNCID) -! ###################################################### -! -!! PURPOSE -!! ------- -! -! Open a netcdf file name YFILENAME -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=nf_max_name), INTENT(IN) :: HFILENAME -! -LOGICAL, INTENT(IN) :: ORW, OVERBOSE -! -INTEGER, INTENT(IN) :: KLUOUT -! -INTEGER, INTENT(OUT) :: KNCID -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YFNAME -! -INTEGER :: IC -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCOPEN',0,ZHOOK_HANDLE) -YFNAME = HFILENAME(1:LEN_TRIM(HFILENAME)) -! -IF(ORW)THEN - IC = NF_OPEN(YFNAME,NF_WRITE,KNCID) -ELSE - IC = NF_OPEN(YFNAME,NF_NOWRITE,KNCID) -ENDIF -! -IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCOPEN for TRIP : Error opening file ',HFILENAME(1:LEN_TRIM(HFILENAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP -ELSEIF(OVERBOSE)THEN - WRITE(KLUOUT,*)'NCOPEN for TRIP : Opening file ',HFILENAME(1:LEN_TRIM(HFILENAME)) -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCOPEN',1,ZHOOK_HANDLE) -! -END SUBROUTINE NCOPEN -! -!------------------------------------------------------------------------------- -! -! ################################################### - SUBROUTINE NCCLOSE(KLUOUT,OVERBOSE,HFILENAME,KNCID) -! ################################################### -! -!! PURPOSE -!! ------- -! -! Close a netcdf file -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=nf_max_name), INTENT(IN) :: HFILENAME -! -LOGICAL, INTENT(IN) :: OVERBOSE -INTEGER, INTENT(IN) :: KLUOUT -INTEGER, INTENT(IN) :: KNCID -! -!* declarations of local variables -! -INTEGER :: IC -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCCLOSE',0,ZHOOK_HANDLE) -IC = NF_CLOSE(KNCID) -IF(OVERBOSE)WRITE(KLUOUT,*)'NCCLOSE for TRIP : Close file ',HFILENAME(1:LEN_TRIM(HFILENAME)) -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCCLOSE',1,ZHOOK_HANDLE) -! -END SUBROUTINE NCCLOSE -! -!------------------------------------------------------------------------------- -! -! ######################################################################### - SUBROUTINE NCREAD_X(KLUOUT,KNCID,HVNAME,PVECT,OVERBOSE) -! ######################################################################### -! -!! PURPOSE -!! ------- -! -! Read a XY variable in a netcdf file -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=nf_max_name), INTENT(IN) :: HVNAME -! -INTEGER, INTENT(IN) :: KLUOUT -INTEGER, INTENT(IN) :: KNCID -! -LOGICAL, INTENT(IN) :: OVERBOSE -! -REAL, DIMENSION(:), INTENT(OUT) :: PVECT -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YVNAME -! -INTEGER :: IC, ID -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCREAD_X',0,ZHOOK_HANDLE) -YVNAME = HVNAME(1:LEN_TRIM(HVNAME)) -! -IC = NF_INQ_VARID(KNCID,YVNAME,ID) -! -IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCREAD_X for TRIP : Error reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP -ELSE - IC=NF_GET_VAR_DOUBLE(KNCID,ID,PVECT) - IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCREAD_X for TRIP : Error reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP - ELSEIF(OVERBOSE)THEN - WRITE(KLUOUT,*)'NCREAD_X for TRIP : Success in reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - ENDIF -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCREAD_X',1,ZHOOK_HANDLE) -! -END SUBROUTINE NCREAD_X -!------------------------------------------------------------------------------- -! -! ######################################################################### - SUBROUTINE NCREAD_XY(KLUOUT,KNCID,HVNAME,PVECT,OVERBOSE) -! ######################################################################### -! -!! PURPOSE -!! ------- -! -! Read a XY variable in a netcdf file -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=nf_max_name), INTENT(IN) :: HVNAME -! -INTEGER, INTENT(IN) :: KLUOUT -INTEGER, INTENT(IN) :: KNCID -! -LOGICAL, INTENT(IN) :: OVERBOSE -! -REAL, DIMENSION(:,:), INTENT(OUT) :: PVECT -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YVNAME -! -INTEGER :: IC, ID -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCREAD_XY',0,ZHOOK_HANDLE) -YVNAME = HVNAME(1:LEN_TRIM(HVNAME)) -! -IC = NF_INQ_VARID(KNCID,YVNAME,ID) -! -IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCREAD_XY for TRIP : Error reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP -ELSE - IC=NF_GET_VAR_DOUBLE(KNCID,ID,PVECT) - IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCREAD_XY for TRIP : Error reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP - ELSEIF(OVERBOSE)THEN - WRITE(KLUOUT,*)'NCREAD_XY for TRIP : Success in reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - ENDIF -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCREAD_XY',1,ZHOOK_HANDLE) -! -END SUBROUTINE NCREAD_XY -!------------------------------------------------------------------------------- -! -! ######################################################################### - SUBROUTINE NCREAD_XYZ(KLUOUT,KNCID,HVNAME,PVECT,OVERBOSE) -! ######################################################################### -! -!! PURPOSE -!! ------- -! -! Read a XYZ variable in a netcdf file -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=nf_max_name), INTENT(IN) :: HVNAME -! -INTEGER, INTENT(IN) :: KLUOUT -INTEGER, INTENT(IN) :: KNCID -! -LOGICAL, INTENT(IN) :: OVERBOSE -! -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PVECT -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YVNAME -! -INTEGER :: IC, ID -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCREAD_XYZ',0,ZHOOK_HANDLE) -YVNAME = HVNAME(1:LEN_TRIM(HVNAME)) -! -IC = NF_INQ_VARID(KNCID,YVNAME,ID) -! -IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCREAD_XYZ for TRIP : Error reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP -ELSE - IC=NF_GET_VAR_DOUBLE(KNCID,ID,PVECT) - IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCREAD_XYZ for TRIP : Error reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP - ELSEIF(OVERBOSE)THEN - WRITE(KLUOUT,*)'NCREAD_XYZ for TRIP : Success in reading variable ',HVNAME(1:LEN_TRIM(HVNAME)) - ENDIF -ENDIF -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCREAD_XYZ',1,ZHOOK_HANDLE) -! -END SUBROUTINE NCREAD_XYZ -! -!------------------------------------------------------------------------------- -! -! ######################################################## - SUBROUTINE NCCREATE(KLUOUT,HFILENAME,HTITLE,HTIMEUNIT, & - HVNAME,HVLNAME,HUNIT,PLON,PLAT, & - PMISSVAL,OVERBOSE,KNCID,OTIME, & - KZLEN,OVARZDIM) -! ######################################################## -! -!! PURPOSE -!! ------- -! -! Open a netcdf file name YFILENAME -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=nf_max_name), INTENT(IN) :: HFILENAME, HTITLE, HTIMEUNIT -! - CHARACTER(LEN=nf_max_name), DIMENSION(:), INTENT(IN) :: HVNAME, HVLNAME, HUNIT -! -REAL, DIMENSION(:), INTENT(IN) :: PLON -REAL, DIMENSION(:), INTENT(IN) :: PLAT -! -LOGICAL, INTENT(IN) :: OVERBOSE -! -REAL, INTENT(IN) :: PMISSVAL -! -INTEGER, INTENT(IN) :: KLUOUT -! -INTEGER, INTENT(OUT) :: KNCID -! -LOGICAL, INTENT(IN) :: OTIME -! -INTEGER, INTENT(IN), OPTIONAL :: KZLEN -LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: OVARZDIM -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YWORK -! -REAL, DIMENSION(:), ALLOCATABLE :: ZWORK -! -INTEGER :: ILONDIM, ILATDIM, ILEVDIM, ITIMEDIM -INTEGER :: ILON_ID, ILAT_ID, ILEV_ID, ITIME_ID, VAR_ID -INTEGER :: IC, IWORK, INVAR -INTEGER :: JVAR -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -! -!Creation -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCCREATE',0,ZHOOK_HANDLE) -YWORK = HFILENAME(1:LEN_TRIM(HFILENAME)) -IC = NF_CREATE(YWORK,NF_CLOBBER,KNCID) -IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCCREATE for TRIP : Error create file ',HFILENAME(1:LEN_TRIM(HFILENAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP -ELSEIF(OVERBOSE)THEN - WRITE(KLUOUT,*)'NCCREATE for TRIP : Success in creating file ',HFILENAME(1:LEN_TRIM(HFILENAME)) -ENDIF -! -!Attributs -YWORK = HTITLE(1:LEN_TRIM(HTITLE)) -IC = NF_PUT_ATT_TEXT(KNCID,NF_GLOBAL,'title',LEN_TRIM(YWORK),YWORK) -YWORK = 'COARDS' -IC = NF_PUT_ATT_TEXT(KNCID,NF_GLOBAL,'Conventions',LEN_TRIM(YWORK),YWORK) -! -!Dimensions -IWORK = SIZE(PLON) -IC = NF_DEF_DIM(KNCID,'longitude',IWORK,ILONDIM) -IWORK = SIZE(PLAT) -IC = NF_DEF_DIM(KNCID,'latitude',IWORK,ILATDIM) -IF(PRESENT(KZLEN)) IC = NF_DEF_DIM(KNCID,'level',KZLEN,ILEVDIM) -IF(OTIME) IC = NF_DEF_DIM(KNCID,'time',NF_UNLIMITED,ITIMEDIM) -! -!Variable attributs -! -IC = NF_DEF_VAR(KNCID,'longitude',NF_DOUBLE,1,ILONDIM,ILON_ID) -IC = NF_DEF_VAR(KNCID,'latitude' ,NF_DOUBLE,1,ILATDIM,ILAT_ID) -YWORK = 'degrees_east' -IC = NF_PUT_ATT_TEXT(KNCID,ILON_ID,'units',LEN_TRIM(YWORK),YWORK) -YWORK = 'degrees_north' -IC = NF_PUT_ATT_TEXT(KNCID,ILAT_ID,'units',LEN_TRIM(YWORK),YWORK) -IF(PRESENT(KZLEN))THEN - IC = NF_DEF_VAR(KNCID,'level',NF_DOUBLE,1,ILEVDIM,ILEV_ID) - YWORK = 'level' - IC = NF_PUT_ATT_TEXT(KNCID,ILEV_ID,'units',LEN_TRIM(YWORK),YWORK) -ENDIF -! -IF(OTIME)THEN - YWORK = HTIMEUNIT(1:LEN_TRIM(HTIMEUNIT)) - IC = NF_DEF_VAR(KNCID,'time',NF_INT,1,ITIMEDIM,ITIME_ID) - IC = NF_PUT_ATT_TEXT(KNCID,ITIME_ID,'units',LEN_TRIM(YWORK),YWORK) -ENDIF -! -!Variables parametres -! -INVAR = SIZE(HVNAME) -! -DO JVAR=1,INVAR - YWORK = HVNAME(JVAR)(1:LEN_TRIM(HVNAME(JVAR))) - IF(PRESENT(KZLEN))THEN - IF(OTIME)THEN - IF(OVARZDIM(JVAR))THEN - IC = NF_DEF_VAR(KNCID,YWORK,NF_DOUBLE,4,(/ILONDIM,ILATDIM,ILEVDIM,ITIMEDIM/),VAR_ID) - ELSE - IC = NF_DEF_VAR(KNCID,YWORK,NF_DOUBLE,3,(/ILONDIM,ILATDIM,ITIMEDIM/),VAR_ID) - ENDIF - ELSE - IF(OVARZDIM(JVAR))THEN - IC = NF_DEF_VAR(KNCID,YWORK,NF_DOUBLE,3,(/ILONDIM,ILATDIM,ILEVDIM/),VAR_ID) - ELSE - IC = NF_DEF_VAR(KNCID,YWORK,NF_DOUBLE,2,(/ILONDIM,ILATDIM/),VAR_ID) - ENDIF - ENDIF - ELSE - IF(OTIME)THEN - IC = NF_DEF_VAR(KNCID,YWORK,NF_DOUBLE,3,(/ILONDIM,ILATDIM,ITIMEDIM/),VAR_ID) - ELSE - IC = NF_DEF_VAR(KNCID,YWORK,NF_DOUBLE,2,(/ILONDIM,ILATDIM/),VAR_ID) - ENDIF - ENDIF - YWORK = HVLNAME(JVAR)(1:LEN_TRIM(HVLNAME(JVAR))) - IC = NF_PUT_ATT_TEXT(KNCID,VAR_ID,'long_name',LEN_TRIM(YWORK),YWORK) - YWORK = HUNIT(JVAR)(1:LEN_TRIM(HUNIT(JVAR))) - IC = NF_PUT_ATT_TEXT(KNCID,VAR_ID,'units',LEN_TRIM(YWORK),YWORK) - IC = NF_PUT_ATT_DOUBLE(KNCID,VAR_ID,'missing_value',NF_DOUBLE,1,PMISSVAL) -ENDDO -! -IC = NF_ENDDEF(KNCID) -! -!Write dimensions -IC = NF_PUT_VAR_DOUBLE(KNCID,ILON_ID,PLON) -IC = NF_PUT_VAR_DOUBLE(KNCID,ILAT_ID,PLAT) -IF(PRESENT(KZLEN))THEN - ALLOCATE(ZWORK(KZLEN)) - DO JVAR = 1,KZLEN - ZWORK(JVAR)=JVAR - ENDDO - IC = NF_PUT_VAR_DOUBLE(KNCID,ILEV_ID,ZWORK) - DEALLOCATE(ZWORK) -ENDIF -! -WRITE(KLUOUT,*)'NCCREATE ',HFILENAME(1:LEN_TRIM(HFILENAME)),' for TRIP OK !' -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCCREATE',1,ZHOOK_HANDLE) -! -END SUBROUTINE NCCREATE -! -!------------------------------------------------------------------------------- -! -! ################################################ - SUBROUTINE NCSTORE(KLUOUT,KNCID,HVNAME,PWRITE, & - OVERBOSE,KTIMENUM,KTIMEVAL, & - KLEVEL,OVARZDIM) -! ################################################ -! -!! PURPOSE -!! ------- -! -! Write in a netcdf file with illimited time if this this the case -! -IMPLICIT NONE -! -include 'netcdf.inc' -! -!* declarations of arguments -! - CHARACTER(LEN=nf_max_name), INTENT(IN) :: HVNAME -! -REAL, DIMENSION(:,:), INTENT(IN) :: PWRITE -! -INTEGER, INTENT(IN) :: KLUOUT, KNCID -! -LOGICAL, INTENT(IN) :: OVERBOSE -! -INTEGER, INTENT(IN), OPTIONAL :: KTIMENUM -INTEGER, INTENT(IN), OPTIONAL :: KTIMEVAL - -INTEGER, INTENT(IN), OPTIONAL :: KLEVEL -LOGICAL, INTENT(IN), OPTIONAL :: OVARZDIM -! -!* declarations of local variables -! - CHARACTER(LEN=nf_max_name) :: YWORK -! -INTEGER, DIMENSION(4) :: ISTART, ICOUNT -! -INTEGER :: IUNLIMID, ITIMEID, ILENGHT, INDIM -INTEGER :: IC, IVAR_ID -REAL :: ZWORK -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!* procedure -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCSTORE',0,ZHOOK_HANDLE) -IF(PRESENT(KLEVEL).AND..NOT.PRESENT(OVARZDIM))THEN - WRITE(KLUOUT,*)'NCSTORE for TRIP : Error writing variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)'ILEVEL present but not LVARZDIM' - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP -ENDIF -! -IF(PRESENT(KTIMENUM).AND.PRESENT(KTIMEVAL))THEN - IC = NF_INQ_UNLIMDIM(KNCID,IUNLIMID) - IF(IUNLIMID/=-1)THEN - IC = NF_INQ_DIMLEN(KNCID,IUNLIMID,ILENGHT) - IF(KTIMENUM/=ILENGHT)THEN - IC = NF_INQ_VARID(KNCID,'time',ITIMEID) - ZWORK = KTIMEVAL - IC = NF_PUT_VAR1_DOUBLE(KNCID,ITIMEID,(/KTIMENUM/),ZWORK) - IF(OVERBOSE)THEN - WRITE(KLUOUT,*)'NCSTORE : re-writing of time variable number=',& - KTIMENUM,' and value=',KTIMEVAL - ENDIF - ENDIF - ENDIF -ENDIF -! -YWORK = HVNAME(1:LEN_TRIM(HVNAME)) -! -IC = NF_INQ_VARID(KNCID,YWORK,IVAR_ID) -IC = NF_INQ_VARNDIMS(KNCID,IVAR_ID,INDIM) -! -ICOUNT(1) = SIZE(PWRITE,1) -ICOUNT(2) = SIZE(PWRITE,2) -ICOUNT(3) = 1 -ICOUNT(4) = 1 -! -ISTART(1) = 1 -ISTART(2) = 1 -! -IF(PRESENT(KLEVEL).AND.OVARZDIM)THEN - ISTART(3) = KLEVEL - IF(PRESENT(KTIMENUM).AND.PRESENT(KTIMEVAL))THEN - ISTART(4) = KTIMENUM - IC = NF_PUT_VARA_DOUBLE(KNCID,IVAR_ID,ISTART(1:4),ICOUNT(1:4),PWRITE) - ELSE - IC = NF_PUT_VARA_DOUBLE(KNCID,IVAR_ID,ISTART(1:3),ICOUNT(1:3),PWRITE) - ENDIF -ELSE - IF(PRESENT(KTIMENUM).AND.PRESENT(KTIMEVAL))THEN - ISTART(3) = KTIMENUM - IC = NF_PUT_VARA_DOUBLE(KNCID,IVAR_ID,ISTART(1:3),ICOUNT(1:3),PWRITE) - ELSE - IC = NF_PUT_VARA_DOUBLE(KNCID,IVAR_ID,ISTART(1:2),ICOUNT(1:2),PWRITE) - ENDIF -ENDIF -! -IF(IC/=NF_NOERR)THEN - WRITE(KLUOUT,*)'NCSTORE for TRIP : Error writing variable ',HVNAME(1:LEN_TRIM(HVNAME)) - WRITE(KLUOUT,*)NF_STRERROR(IC) - STOP -ELSEIF(OVERBOSE)THEN - WRITE(KLUOUT,*)'NCSTORE for TRIP : Success in writing variable ',HVNAME(1:LEN_TRIM(HVNAME)) - IF(PRESENT(KLEVEL))WRITE(KLUOUT,*)' level: ',KLEVEL -ENDIF -! -IF (LHOOK) CALL DR_HOOK('MODE_TRIP_NETCDF:NCSTORE',1,ZHOOK_HANDLE) -! -END SUBROUTINE NCSTORE -! -!------------------------------------------------------------------------------- -! -END MODULE MODE_TRIP_NETCDF diff --git a/src/SURFEX/modn_tripn.F90 b/src/SURFEX/modn_tripn.F90 deleted file mode 100644 index f375d6e1abc149a93b3b26adaeebe4923d3075cd..0000000000000000000000000000000000000000 --- a/src/SURFEX/modn_tripn.F90 +++ /dev/null @@ -1,111 +0,0 @@ -!################## -MODULE MODN_TRIP_n -!################## -! -!!**** *MODN_TRIP_n* - declaration of namelist NAM_TRIP -!! -!! PURPOSE -!! ------- -! The purpose of this module is to specify the namelist NAM_TRIP -! which concern the river routing model configuration configuration. -! -!! -!!** IMPLICIT ARGUMENTS -!! ------------------ -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2008 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_n, ONLY: & - CVIT_n => CVIT, & - CGROUNDW_n => CGROUNDW, & - LFLOODT_n => LFLOODT, & - LTRIP_DIAG_MISC_n => LTRIP_DIAG_MISC, & - LDIAG_CPL_n => LDIAG_CPL, & - LNCPRINT_n => LNCPRINT, & - LPRINT_TRIP_n => LPRINT_TRIP, & - XDATA_TAUG_n => XDATA_TAUG, & - XCVEL_n => XCVEL, & - XRATMED_n => XRATMED, & - XTRIP_TSTEP_n => XTRIP_TSTEP, & - XTSTEP_COUPLING_n => XTSTEP_COUPLING -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! - CHARACTER(LEN=3) :: CVIT - CHARACTER(LEN=3) :: CGROUNDW -LOGICAL :: LFLOODT -LOGICAL :: LTRIP_DIAG_MISC -LOGICAL :: LDIAG_CPL -LOGICAL :: LNCPRINT -LOGICAL :: LPRINT_TRIP -REAL :: XTSTEP_COUPLING -REAL :: XDATA_TAUG -REAL :: XCVEL -REAL :: XRATMED -REAL :: XTRIP_TSTEP -! -NAMELIST/NAM_TRIPn/CVIT,CGROUNDW,LFLOODT,LTRIP_DIAG_MISC,LDIAG_CPL, & - LNCPRINT,LPRINT_TRIP,XTSTEP_COUPLING,XTRIP_TSTEP,& - XDATA_TAUG,XRATMED,XCVEL -! -CONTAINS -! -SUBROUTINE INIT_NAM_TRIPn - - REAL(KIND=JPRB) :: ZHOOK_HANDLE - - IF (LHOOK) CALL DR_HOOK('MODN_TRIP_N:INIT_NAM_TRIPN',0,ZHOOK_HANDLE) - CVIT = CVIT_n - CGROUNDW = CGROUNDW_n - LFLOODT = LFLOODT_n - LTRIP_DIAG_MISC = LTRIP_DIAG_MISC_n - LDIAG_CPL = LDIAG_CPL_n - LNCPRINT = LNCPRINT_n - LPRINT_TRIP = LPRINT_TRIP_n - XDATA_TAUG = XDATA_TAUG_n - XCVEL = XCVEL_n - XRATMED = XRATMED_n - XTRIP_TSTEP = XTRIP_TSTEP_n - XTSTEP_COUPLING = XTSTEP_COUPLING_n -IF (LHOOK) CALL DR_HOOK('MODN_TRIP_N:INIT_NAM_TRIPN',1,ZHOOK_HANDLE) -END SUBROUTINE INIT_NAM_TRIPn -! -SUBROUTINE UPDATE_NAM_TRIPn - - REAL(KIND=JPRB) :: ZHOOK_HANDLE - - IF (LHOOK) CALL DR_HOOK('MODN_TRIP_N:UPDATE_NAM_TRIPN',0,ZHOOK_HANDLE) - CVIT_n = CVIT - CGROUNDW_n = CGROUNDW - LFLOODT_n = LFLOODT - LTRIP_DIAG_MISC_n = LTRIP_DIAG_MISC - LDIAG_CPL_n = LDIAG_CPL - LNCPRINT_n = LNCPRINT - LPRINT_TRIP_n = LPRINT_TRIP - XDATA_TAUG_n = XDATA_TAUG - XCVEL_n = XCVEL - XRATMED_n = XRATMED - XTRIP_TSTEP_n = XTRIP_TSTEP - XTSTEP_COUPLING_n = XTSTEP_COUPLING -IF (LHOOK) CALL DR_HOOK('MODN_TRIP_N:UPDATE_NAM_TRIPN',1,ZHOOK_HANDLE) -END SUBROUTINE UPDATE_NAM_TRIPn -! -END MODULE MODN_TRIP_n diff --git a/src/SURFEX/prep_trip.F90 b/src/SURFEX/prep_trip.F90 deleted file mode 100644 index 47e07e7edf0e2129d1a0281f5b70e55dfaedcb14..0000000000000000000000000000000000000000 --- a/src/SURFEX/prep_trip.F90 +++ /dev/null @@ -1,615 +0,0 @@ -! ######### - SUBROUTINE PREP_TRIP (HPROGRAM) -! ############################### -! -!!**** *PREP_TRIP* -!! -!! PURPOSE -!! ------- -! -! Prepare TRIP variables and parameters. -! -!!** METHOD -!! ------ -! -! Direct calculation -! -!! EXTERNAL -!! -------- -! -! None -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme (Météo-France) -!! -!! MODIFICATIONS -!! ------------- -!! Original 27/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR -USE MODD_TRIP_GRID_n -USE MODD_TRIP_n, ONLY : XSURF_STO, XGROUND_STO, XTAUG, XHC_BED, & - XFLOOD_STO, XHFLOOD, XFFLOOD, XN, & - XSLOPEBED, XWIDTH, XTAB_F, XTAB_H, & - XTAB_VF, CGROUNDW, CVIT, LFLOODT, & - LDIAG_CPL, LNCPRINT,LPRINT_TRIP, & - XTSTEP_COUPLING, XTRIP_TSTEP,XLEN, & - LTRIP_DIAG_MISC, XDATA_TAUG, & - XN_FLOOD, XRATMED, XCVEL -! -USE MODD_READ_NAMELIST, ONLY : LNAM_READ -! -USE MODE_TRIP_INIT -USE MODE_RW_TRIP -! -USE MODI_INIT_TRIP_PAR -USE MODI_GET_LUOUT -USE MODI_GET_GRID_CONF_TRIP_n -! -USE MODI_DEFAULT_TRIP -USE MODI_READ_NAM_GRID_TRIP -USE MODI_READ_TRIP_CONF_n -USE MODI_INIT_PARAM_TRIP_n -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -USE MODI_INIT_RESTART_TRIP_n -IMPLICIT NONE -! -!------------------------------------------------------------------------------- -! -!* 0.1 declarations of arguments -! - CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM -! -!------------------------------------------------------------------------------- -! -!* 0.2 declarations of local variables -! - CHARACTER(LEN=14), PARAMETER :: YFILE_PARAM_1D ='TRIP_PGD_1D.nc' - CHARACTER(LEN=14), PARAMETER :: YFILE_PARAM_HD ='TRIP_PGD_HD.nc' - CHARACTER(LEN=15), PARAMETER :: YFILE_INIT_1D ='TRIP_INIT_1D.nc' - CHARACTER(LEN=15), PARAMETER :: YFILE_INIT_HD ='TRIP_INIT_HD.nc' -! - CHARACTER(LEN=13), PARAMETER :: YFILE_PARAM ='TRIP_PARAM.nc' - CHARACTER(LEN=12), PARAMETER :: YFILE_PREP ='TRIP_PREP.nc' -! - CHARACTER(LEN=14) :: YFILE_READ - CHARACTER(LEN=15) :: YFILE_READ_INIT -! - CHARACTER(LEN=18), PARAMETER :: YFILE_FLOOD_1D ='TRIP_SGFLOOD_1D.nc' - CHARACTER(LEN=18), PARAMETER :: YFILE_FLOOD_HD ='TRIP_SGFLOOD_HD.nc' - CHARACTER(LEN=18) :: YFILE_FLOOD_READ -! - CHARACTER(LEN=20) :: YVAR -! -LOGICAL,DIMENSION(:,:),ALLOCATABLE :: LMASK_NATURE -! -REAL,DIMENSION(:,:),ALLOCATABLE :: ZSAND, ZCLAY, ZSILT, ZPERM -REAL,DIMENSION(:,:),ALLOCATABLE :: ZGRCN, ZSEQ, ZMASK, ZNUM_BAS, & - ZDR_AREA, ZELEV -! -INTEGER,DIMENSION(:,:),ALLOCATABLE :: IGRCN,INEXTX,INEXTY -! -REAL,DIMENSION(:,:),ALLOCATABLE :: ZREAD -REAL,DIMENSION(:,:,:),ALLOCATABLE :: ZREAD3D -REAL,DIMENSION(:),ALLOCATABLE :: ZTAUG -! -INTEGER :: ILUOUT ! output listing logical unit -! -! -REAL :: ZLONMIN ! minimum longitude (degrees) -REAL :: ZLONMAX ! maximum longitude (degrees) -REAL :: ZLATMIN ! minimum latitude (degrees) -REAL :: ZLATMAX ! maximum latitude (degrees) -REAL :: ZGRID_RES ! 1° or 0.5° resolution -INTEGER :: ILON ! number of points in longitude -INTEGER :: ILAT ! number of points in latitude -! -INTEGER :: ILON_G, ILON_DEB, ILON_END -INTEGER :: ILAT_G, ILAT_DEB, ILAT_END -! -INTEGER :: IWORK, IFLOOD, I, J, INI, ILATF -! -LOGICAL :: LMASKLON, LMASKLAT -! -!------------------------------------------------------------------------------- -!Output attribut for netcdf diag file -!------------------------------------------------------------------------------- -! - CHARACTER(LEN=50) :: YTITLE,YTIMEUNIT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! YTITLE = Title of each output file -! YTIMEUNIT = Time unit in each output file if present -! -!------------------------------------------------------------------------------- -!Initilyse TRIP -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('PREP_TRIP',0,ZHOOK_HANDLE) - CALL INIT_TRIP_PAR -! - CALL GET_LUOUT(HPROGRAM,ILUOUT) -! -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)' PREP TRIP ' -WRITE(ILUOUT,*)'' -! -!------------------------------------------------------------------------------- -! -IF (LNAM_READ) THEN -! -! * default values for the TRIP configuration -! - CALL DEFAULT_TRIP(CGROUNDW,CVIT,LFLOODT,LDIAG_CPL,LTRIP_DIAG_MISC, & - LNCPRINT,LPRINT_TRIP,XTSTEP_COUPLING,XTRIP_TSTEP,& - XDATA_TAUG,XCVEL,XRATMED ) -! -ENDIF -! -! * TRIP general options -! - CALL READ_TRIP_CONF_n(HPROGRAM) -! -IF(LFLOODT)THEN - IF(CGROUNDW=='DEF') & - WRITE(ILUOUT,*)'! Attention, you use the flooding scheme without the groundwater scheme !!!' - IF(CVIT /= 'VAR')THEN - WRITE(ILUOUT,*)'! You cannot use the flooding scheme without the variable velocity scheme !!!' - STOP - ENDIF -ENDIF -! -IF(MOD(XTSTEP_COUPLING,XTRIP_TSTEP)/=0.)THEN - WRITE(ILUOUT,*)'! XTSTEP_COUPLING and XTRIP_TSTEP are not good !!!' - WRITE(ILUOUT,*)'! MOD(XTSTEP_COUPLING,XTRIP_TSTEP) should be 0 !!!' - STOP -ENDIF -! -!------------------------------------------------------------------------------- -! * Read TRIP grid configuration -!------------------------------------------------------------------------------- -! - CALL READ_NAM_GRID_TRIP(HPROGRAM) -! - CALL GET_GRID_CONF_TRIP_n(ZLONMIN,ZLONMAX,ZLATMIN,ZLATMAX,ZGRID_RES,ILON,ILAT) -! -IF(ZGRID_RES==1.0)THEN -! - WRITE(ILUOUT,*)'! 1° by 1° TRIP run !!!' -! - ILON_G = 360 - ILAT_G = 180 - ILATF = 31 - YFILE_READ = YFILE_PARAM_1D - YFILE_READ_INIT = YFILE_INIT_1D - YFILE_FLOOD_READ = YFILE_FLOOD_1D -! -ELSEIF(ZGRID_RES==0.5)THEN -! - WRITE(ILUOUT,*)'! 0.5° by 0.5° TRIP run !!!' -! - ILON_G = 720 - ILAT_G = 360 - ILATF = 61 - YFILE_READ = YFILE_PARAM_HD - YFILE_READ_INIT = YFILE_INIT_HD - YFILE_FLOOD_READ = YFILE_FLOOD_HD -! - IF(XRATMED==1.4)THEN - WRITE(ILUOUT,*)'! meandering ratio is the same than at 1° resolution !!!' - WRITE(ILUOUT,*)'! if you want another value change XRATMED in namelist !!!' - ENDIF -! -ELSE -! - WRITE(ILUOUT,*)'! The resolution of the TRIP run is not good !!!' - WRITE(ILUOUT,*)' ! Should be 1° or 0.5° !!! ' - STOP -! -ENDIF -! -LMASKLON=.FALSE. -IF(ZLONMIN/=-180..OR.ZLONMAX/=180.)LMASKLON=.TRUE. -! -LMASKLAT=.FALSE. -IF(ZLATMIN/=-180..OR.ZLATMAX/=180.)LMASKLAT=.TRUE. -! -!------------------------------------------------------------------------------- -!Allocate arguments -!------------------------------------------------------------------------------- -! -ALLOCATE(ZREAD (ILON_G,ILAT_G)) -! -ALLOCATE(ZGRCN (ILON,ILAT)) -ALLOCATE(ZMASK (ILON,ILAT)) -ALLOCATE(XLEN (ILON,ILAT)) -ALLOCATE(XAREA (ILON,ILAT)) -ALLOCATE(ZSEQ (ILON,ILAT)) -ALLOCATE(XSURF_STO(ILON,ILAT)) -ALLOCATE(ZNUM_BAS (ILON,ILAT)) -ALLOCATE(ZDR_AREA (ILON,ILAT)) -ALLOCATE(ZELEV (ILON,ILAT)) -! -IF(CGROUNDW/='DEF')THEN - ALLOCATE(XGROUND_STO(ILON,ILAT)) - ALLOCATE(XTAUG (ILON,ILAT)) -ELSE - ALLOCATE(XGROUND_STO(0,0)) - ALLOCATE(XTAUG (0,0)) -ENDIF -! -IF(LFLOODT)THEN - ALLOCATE(XHC_BED (ILON,ILAT)) - ALLOCATE(XN_FLOOD (ILON,ILAT)) - ALLOCATE(XFLOOD_STO (ILON,ILAT)) - ALLOCATE(XHFLOOD (ILON,ILAT)) - ALLOCATE(XFFLOOD (ILON,ILAT)) -ELSE - ALLOCATE(XHC_BED (0,0)) - ALLOCATE(XN_FLOOD (0,0)) - ALLOCATE(XFLOOD_STO(0,0)) - ALLOCATE(XHFLOOD (0,0)) - ALLOCATE(XFFLOOD (0,0)) -ENDIF -! -IF(CVIT=='VAR')THEN - ALLOCATE(XSLOPEBED(ILON,ILAT)) - ALLOCATE(XWIDTH (ILON,ILAT)) - ALLOCATE(XN (ILON,ILAT)) -ELSE - ALLOCATE(XSLOPEBED(0,0)) - ALLOCATE(XWIDTH (0,0)) - ALLOCATE(XN (0,0)) -ENDIF -! -!------------------------------------------------------------------------------- -! * Create param and init file -!------------------------------------------------------------------------------- -! -YTITLE = 'TRIP parameters for a run' -YTIMEUNIT = '-' - CALL INIT_PARAM_TRIP_n(ILUOUT,YFILE_PARAM,ILON,ILAT,YTITLE,YTIMEUNIT) -! -YTITLE ='TRIP prep historical variable' -YTIMEUNIT='-' - CALL INIT_RESTART_TRIP_n(ILUOUT,YFILE_PREP,ILON,ILAT,YTITLE,YTIMEUNIT,.FALSE.) -! -!------------------------------------------------------------------------------- -! * Compute the mask of the run -!------------------------------------------------------------------------------- -! -ILON_DEB = INT(ZLONMIN/ZGRID_RES) + ILON_G/2 + 1 -ILON_END = INT(ZLONMAX/ZGRID_RES) + ILON_G/2 -ILAT_DEB = INT(ZLATMIN/ZGRID_RES) + ILAT_G/2 + 1 -ILAT_END = INT(ZLATMAX/ZGRID_RES) + ILAT_G/2 -! -!------------------------------------------------------------------------------- -! * Compute and Read TRIP parameter -!------------------------------------------------------------------------------- -! -ALLOCATE(IGRCN (ILON_G,ILAT_G)) -ALLOCATE(INEXTX(ILON_G,ILAT_G)) -ALLOCATE(INEXTY(ILON_G,ILAT_G)) -! -! * Basin ID -! -YVAR ='NUM_BAS' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) -ZNUM_BAS = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! -! * Drainage Area -! -YVAR ='DR_AREA' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) -ZDR_AREA = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! -! * Elevation -! -YVAR ='ELEV' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) -ZELEV = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! -! * Flow direction -! -YVAR ='FLOWDIR' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) -ZGRCN=ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -WHERE(ZREAD==XTRIP_UNDEF)ZREAD=0.0 -IGRCN = INT(ZREAD) -! -ZMASK=0.0 -WHERE(ZGRCN/=XTRIP_UNDEF)ZMASK=1.0 -! -! * Set the distance between grids with the meandering ratio -! - CALL SETNEXT(ILON_G,ILAT_G,IGRCN,INEXTX,INEXTY) -! -YVAR ='RIVLEN' - CALL SETLEN(ILON_G,ILAT_G,IGRCN,INEXTX,INEXTY,XRATMED,ZREAD) -XLEN = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! -DEALLOCATE(IGRCN ) -DEALLOCATE(INEXTX) -DEALLOCATE(INEXTY) -! -! * Domain test -! -ALLOCATE(IGRCN (ILON,ILAT)) -ALLOCATE(INEXTX(ILON,ILAT)) -ALLOCATE(INEXTY(ILON,ILAT)) -! -WHERE(ZGRCN(:,:)<XTRIP_UNDEF) - IGRCN(:,:)=INT(ZGRCN(:,:)) -ELSEWHERE - IGRCN(:,:)=0 -ENDWHERE -! - CALL SETNEXT(ILON,ILAT,IGRCN(:,:),INEXTX(:,:),INEXTY(:,:),LMASKLON,LMASKLAT) -! -! * Store some param -! -YVAR ='FLOWDIR' -ZGRCN(:,:)=REAL(IGRCN(:,:)) - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,ZGRCN) -YVAR ='RIVLEN' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XLEN) -YVAR ='NUM_BAS' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,ZNUM_BAS) -YVAR ='DR_AREA' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,ZDR_AREA) -YVAR ='ELEV' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,ZELEV) -! -DEALLOCATE(IGRCN ) -DEALLOCATE(INEXTX) -DEALLOCATE(INEXTY) -DEALLOCATE(ZDR_AREA) -DEALLOCATE(ZELEV) -DEALLOCATE(ZNUM_BAS) -! -! * River sequence values read -! -YVAR ='RIVSEQ' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) -ZSEQ = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,ZSEQ) -! -! * Set area size -! - CALL SETAREA(ILAT,ZLATMIN,ZGRID_RES,XAREA) -! -! * Initial river storage -! -YVAR ='SURF_STO' - CALL READ_TRIP(ILUOUT,YFILE_READ_INIT,YVAR,ZREAD) -XSURF_STO = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - CALL WRITE_TRIP(ILUOUT,YFILE_PREP,YVAR,ZMASK,XSURF_STO) -! -! * Calculate the groundwater transfert time -! -IF(CGROUNDW=='VAR')THEN -! - ALLOCATE(ZSAND (ILON,ILAT)) - ALLOCATE(ZCLAY (ILON,ILAT)) - ALLOCATE(ZSILT (ILON,ILAT)) - ALLOCATE(ZPERM (ILON,ILAT)) - ALLOCATE(ZTAUG (3)) -! - YVAR ='CLAY' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - ZCLAY = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - YVAR ='SAND' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - ZSAND = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - ZTAUG(1)=XDATA_TAUG - ZTAUG(2)=1.5*XDATA_TAUG - ZTAUG(3)=2.0*XDATA_TAUG -! - WHERE(ZCLAY(:,:)>=0.0.AND.ZSAND(:,:)>=0.0.AND.ZCLAY(:,:)/=XTRIP_UNDEF) - ZSILT(:,:)=1.0-(ZCLAY(:,:)+ZSAND(:,:)) - XTAUG(:,:)=ZTAUG(2) - WHERE(ZCLAY(:,:)>ZSILT(:,:).AND.ZCLAY(:,:)>ZSAND(:,:))XTAUG(:,:)=ZTAUG(3) - WHERE(ZSAND(:,:)>ZCLAY(:,:).AND.ZSAND(:,:)>ZSILT(:,:))XTAUG(:,:)=ZTAUG(1) - ELSEWHERE - XTAUG(:,:)=XTRIP_UNDEF - ENDWHERE -! - YVAR ='PERM' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - ZPERM = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - WHERE(ZPERM(:,:)==1)XTAUG(:,:)=0.0 -! - YVAR ='TAUG' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XTAUG) -! - DEALLOCATE(ZSAND) - DEALLOCATE(ZCLAY) - DEALLOCATE(ZSILT) - DEALLOCATE(ZTAUG) - DEALLOCATE(ZPERM) -! -ELSEIF(CGROUNDW=='CST')THEN -! - ALLOCATE(ZPERM (ILON,ILAT)) -! - YVAR ='PERM' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - ZPERM = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - XTAUG(:,:)=XDATA_TAUG - WHERE(ZPERM(:,:)==1)XTAUG(:,:)=0.0 -! - YVAR ='TAUG' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XTAUG) -! - DEALLOCATE(ZPERM) -! -ENDIF -! -! * Groundwater water storage -! -IF(CGROUNDW/='DEF')THEN -! - YVAR ='GROUND_STO' - CALL READ_TRIP(ILUOUT,YFILE_READ_INIT,YVAR,ZREAD) - XGROUND_STO = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - CALL WRITE_TRIP(ILUOUT,YFILE_PREP,YVAR,ZMASK,XGROUND_STO) -! -ENDIF -! -! * Variable velocity scheme parameters -! -IF(CVIT == 'VAR')THEN -! - YVAR ='N_RIV' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - XN = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XN) -! - YVAR ='WIDTHRIV' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - XWIDTH = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XWIDTH) -! - YVAR ='SLOPERIV' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - XSLOPEBED = MAX(ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END),1.E-5) - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XSLOPEBED) -! -ENDIF -! -! * Calculate floodplains parameters -! -IF(LFLOODT)THEN -! - YVAR ='RIVDEPTH' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - XHC_BED = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) - WHERE(XHC_BED(:,:)==0.0)XHC_BED(:,:)=XTRIP_UNDEF -! - YVAR ='NFLOOD' - CALL READ_TRIP(ILUOUT,YFILE_READ,YVAR,ZREAD) - XN_FLOOD = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) -! - ALLOCATE(ZREAD3D(ILON_G,ILAT_G,NTRIPTAB)) -! - ALLOCATE(XTAB_F (ILON,ILAT,NTRIPTAB)) - ALLOCATE(XTAB_H (ILON,ILAT,NTRIPTAB)) - ALLOCATE(XTAB_VF(ILON,ILAT,NTRIPTAB)) -! - XTAB_F (:,:,:)= XTRIP_UNDEF - XTAB_H (:,:,:)= XTRIP_UNDEF - XTAB_VF(:,:,:)= XTRIP_UNDEF -! - YVAR ='TABF' - CALL READ_TRIP(ILUOUT,YFILE_FLOOD_READ,YVAR,ZREAD3D(:,ILATF:ILAT_G,:)) - XTAB_F = ZREAD3D(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END,:) - YVAR ='TABH' - CALL READ_TRIP(ILUOUT,YFILE_FLOOD_READ,YVAR,ZREAD3D(:,ILATF:ILAT_G,:)) - XTAB_H = ZREAD3D(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END,:) -! - CALL SET_SUBGRID_FLOOD(ILON,ILAT,XAREA,XTAB_H,XTAB_F,XTAB_VF) -! - DEALLOCATE(ZREAD3D) -! - IF(.NOT.ASSOCIATED(GMASK))THEN - ALLOCATE(GMASK(ILON,ILAT)) - GMASK(:,:)=.TRUE. - WHERE(ZMASK(:,:)==0.0)GMASK(:,:)=.FALSE. - ENDIF - DO I=1,ILON - DO J=1,ILAT - IF(GMASK(I,J))THEN - IF(COUNT(XTAB_H(I,J,:)<XTRIP_UNDEF-1.0)<2)THEN - XTAB_F (I,J,:)= XTRIP_UNDEF - XTAB_H (I,J,:)= XTRIP_UNDEF - XTAB_VF(I,J,:)= XTRIP_UNDEF - XHC_BED(I,J) = XTRIP_UNDEF - ENDIF - IF(XTAB_F (I,J,2)>=0.98)THEN - XTAB_F (I,J,:)= XTRIP_UNDEF - XTAB_H (I,J,:)= XTRIP_UNDEF - XTAB_VF(I,J,:)= XTRIP_UNDEF - XHC_BED(I,J) = XTRIP_UNDEF - ENDIF - ENDIF - IF(XHC_BED(I,J)==XTRIP_UNDEF)THEN - XTAB_F (I,J,:) = XTRIP_UNDEF - XTAB_H (I,J,:) = XTRIP_UNDEF - XTAB_VF (I,J,:) = XTRIP_UNDEF - XN_FLOOD(I,J) = XTRIP_UNDEF - ENDIF - ENDDO - ENDDO -! - WHERE(XTAB_H(:,:,1)==XTRIP_UNDEF) - XHC_BED (:,:)=XTRIP_UNDEF - XN_FLOOD(:,:)=XTRIP_UNDEF - ENDWHERE -! - YVAR ='RIVDEPTH' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XHC_BED) -! - YVAR ='NFLOOD' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XN_FLOOD) -! - YVAR ='TABF' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XTAB_F) - YVAR ='TABH' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XTAB_H) - YVAR ='TABVF' - CALL WRITE_TRIP(ILUOUT,YFILE_PARAM,YVAR,ZMASK,XTAB_VF) -! -! Floodplains initial variables -! - YVAR ='FLOOD_STO' - CALL READ_TRIP(ILUOUT,YFILE_READ_INIT,YVAR,ZREAD) - XFLOOD_STO = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) - CALL WRITE_TRIP(ILUOUT,YFILE_PREP,YVAR,ZMASK,XFLOOD_STO) -! - YVAR ='FFLOOD_T' - CALL READ_TRIP(ILUOUT,YFILE_READ_INIT,YVAR,ZREAD) - XFFLOOD = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) - CALL WRITE_TRIP(ILUOUT,YFILE_PREP,YVAR,ZMASK,XFFLOOD) -! - YVAR ='HFLOOD_T' - CALL READ_TRIP(ILUOUT,YFILE_READ_INIT,YVAR,ZREAD) - XHFLOOD = ZREAD(ILON_DEB:ILON_END,ILAT_DEB:ILAT_END) - CALL WRITE_TRIP(ILUOUT,YFILE_PREP,YVAR,ZMASK,XHFLOOD) -! -ENDIF -! -DEALLOCATE(ZREAD) -! -!------------------------------------------------------------------------------- -! * END -!------------------------------------------------------------------------------- -! -WRITE(ILUOUT,*)'' -WRITE(ILUOUT,*)' END PREP TRIP ' -WRITE(ILUOUT,*)'' -IF (LHOOK) CALL DR_HOOK('PREP_TRIP',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -END SUBROUTINE PREP_TRIP diff --git a/src/SURFEX/read_nam_grid_trip.F90 b/src/SURFEX/read_nam_grid_trip.F90 deleted file mode 100644 index 535cc0b8cd3612ecf159ceb6c45291ee670fda0f..0000000000000000000000000000000000000000 --- a/src/SURFEX/read_nam_grid_trip.F90 +++ /dev/null @@ -1,151 +0,0 @@ -! ######### -SUBROUTINE READ_NAM_GRID_TRIP(HPROGRAM) -!###################################### -! -!!**** *READ_NAM_GRID_TRIP* - routine to read in namelist the TRIP horizontal grid -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------ -!! -!! EXTERNAL -!! -------- -!! -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2008 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_POS_SURF -USE MODD_TRIP_GRID_n, ONLY : XGRID_TRIP -! -USE MODI_OPEN_NAMELIST -USE MODI_CLOSE_NAMELIST -USE MODI_GET_LUOUT -! -USE MODE_GRID_TRIP -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 Declarations of arguments -! ------------------------- -! - CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program -! -!* 0.2 Declarations of local variables -! ------------------------------- -! -INTEGER :: ILUOUT ! output listing logical unit -INTEGER :: ILUNAM ! namelist file logical unit -INTEGER :: I -LOGICAL :: GFOUND -REAL :: ZWORK -! -! -!* 0.3 Declarations of namelist -! ------------------------ -! -REAL :: TLONMIN ! minimum longitude (degrees) -REAL :: TLONMAX ! maximum longitude (degrees) -REAL :: TLATMIN ! minimum latitude (degrees) -REAL :: TLATMAX ! maximum latitude (degrees) -REAL :: TRES ! 1° or 0.5° resolution -! -REAL, DIMENSION(:), ALLOCATABLE :: ZLON -REAL, DIMENSION(:), ALLOCATABLE :: ZLAT -! -INTEGER :: ILON,ILAT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -NAMELIST/NAM_GRID_TRIP/TLONMIN, TLONMAX, TLATMIN, TLATMAX, TRES -! -!------------------------------------------------------------------------------ -! -!* 1. opening of namelist -! -IF (LHOOK) CALL DR_HOOK('READ_NAM_GRID_TRIP',0,ZHOOK_HANDLE) - CALL GET_LUOUT(HPROGRAM,ILUOUT) -! - CALL OPEN_NAMELIST(HPROGRAM,ILUNAM) -! -!--------------------------------------------------------------------------- -! -!* 2. Reading of projection parameters -! -------------------------------- -! - CALL POSNAM(ILUNAM,'NAM_GRID_TRIP',GFOUND,ILUOUT) -IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_GRID_TRIP) -! - CALL CLOSE_NAMELIST(HPROGRAM,ILUNAM) -! -IF(TRES/=0.5.AND.TRES/=1.0.AND.TRES/=0.1)THEN - WRITE(ILUOUT,*)'Error : The resolution of the TRIP grid must be 1° or 0.5°' - WRITE(ILUOUT,*)' or 0.1° over France ' - WRITE(ILUOUT,*)' In NAM_GRID_TRIP, TRES should be 0.1 or 0.5 or 1. ' - STOP -ENDIF -! -!--------------------------------------------------------------------------- -! -!* 3. Number of lattitude and longitude -! -ILON = INT((TLONMAX-TLONMIN)/TRES) -ILAT = INT((TLATMAX-TLATMIN)/TRES) -! -!--------------------------------------------------------------------------- -! -!* 4. lattitude and longitude values -! -ALLOCATE(ZLON(ILON)) -ALLOCATE(ZLAT(ILAT)) -! -ZWORK = TLONMIN-(TRES/2.) -DO I=1,ILON - ZWORK = ZWORK + TRES - ZLON(I) = ZWORK -ENDDO -! -ZWORK =TLATMIN-(TRES/2.) -DO I=1,ILAT - ZWORK = ZWORK + TRES - ZLAT(I) = ZWORK -ENDDO -! -!--------------------------------------------------------------------------- -! -!* 5. All this information stored into PGRID_TRIP -! ------------------------------------------- -! -ALLOCATE(XGRID_TRIP(7+ILON+ILAT)) -XGRID_TRIP(:) = 0.0 -! - CALL PUT_GRID_TRIP(XGRID_TRIP,TLONMIN,TLONMAX,TLATMIN,TLATMAX,TRES,ILON,ILAT,ZLON,ZLAT) -! -DEALLOCATE(ZLON) -DEALLOCATE(ZLAT) -IF (LHOOK) CALL DR_HOOK('READ_NAM_GRID_TRIP',1,ZHOOK_HANDLE) -! -!--------------------------------------------------------------------------- -! -END SUBROUTINE READ_NAM_GRID_TRIP diff --git a/src/SURFEX/read_namelists_tripn.F90 b/src/SURFEX/read_namelists_tripn.F90 deleted file mode 100644 index cbb815fabebd2160003ac059e7e0cf5df6a4427e..0000000000000000000000000000000000000000 --- a/src/SURFEX/read_namelists_tripn.F90 +++ /dev/null @@ -1,35 +0,0 @@ -! ######### -SUBROUTINE READ_NAMELISTS_TRIP_n(HPROGRAM) -! ####################################################### -! -!---------------------------------------------- -! -USE MODN_TRIP_n -! -USE MODI_DEFAULT_TRIP -! -USE MODI_READ_TRIP_CONF_n -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! - CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!-------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('READ_NAMELISTS_TRIP_N',0,ZHOOK_HANDLE) - CALL DEFAULT_TRIP(CGROUNDW,CVIT,LFLOODT,LDIAG_CPL,LTRIP_DIAG_MISC, & - LNCPRINT,LPRINT_TRIP,XTSTEP_COUPLING,XTRIP_TSTEP,& - XDATA_TAUG,XCVEL,XRATMED ) -! - CALL READ_TRIP_CONF_n(HPROGRAM) -! -IF (LHOOK) CALL DR_HOOK('READ_NAMELISTS_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------- -! -END SUBROUTINE READ_NAMELISTS_TRIP_n diff --git a/src/SURFEX/read_trip_confn.F90 b/src/SURFEX/read_trip_confn.F90 deleted file mode 100644 index aa1656ea13016e2c13499ed4b1f7d54459a312e8..0000000000000000000000000000000000000000 --- a/src/SURFEX/read_trip_confn.F90 +++ /dev/null @@ -1,107 +0,0 @@ -! ######### - SUBROUTINE READ_TRIP_CONF_n(HPROGRAM) -! ####################################################### -! -!!**** *READ_TRIP_CONF* - routine to read the configuration for TRIP -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------ -!! -!! EXTERNAL -!! -------- -!! -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! REFERENCE -!! --------- -!! -!! -!! AUTHOR -!! ------ -!! B. Decharme *Meteo France* -!! -!! MODIFICATIONS -!! ------------- -!! Original 05/2008 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_MODELN_TRIP_HANDLER -! -USE MODE_POS_SURF -! -USE MODI_TEST_NAM_VAR_SURF -USE MODI_GET_LUOUT -USE MODI_OPEN_NAMELIST -USE MODI_CLOSE_NAMELIST -! -USE MODD_READ_NAMELIST, ONLY : LNAM_READ -USE MODN_TRIP_n -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 Declarations of arguments -! ------------------------- -! - CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling TRIP - -! -!* 0.2 Declarations of local variables -! ------------------------------- -! -! -LOGICAL :: GFOUND ! Return code when searching namelist -INTEGER :: ILUOUT ! logical unit of output file -INTEGER :: INAM ! logical unit of namelist file -INTEGER :: IMI -REAL(KIND=JPRB) :: ZHOOK_HANDLE -!------------------------------------------------------------------------------- -! -!* get output listing file logical unit -! -IF (LHOOK) CALL DR_HOOK('READ_TRIP_CONF_N',0,ZHOOK_HANDLE) - CALL GET_LUOUT(HPROGRAM,ILUOUT) -! -IMI=GET_CURRENT_MODEL_INDEX_TRIP() -! -IF (IMI.NE.-1 .AND. LNAM_READ) CALL INIT_NAM_TRIPn -! -IF (LNAM_READ) THEN - ! - !* open namelist file - ! - CALL OPEN_NAMELIST(HPROGRAM,INAM) - ! - !* reading of namelist - ! ------------------- - ! - CALL POSNAM(INAM,'NAM_TRIPN',GFOUND,ILUOUT) - IF (GFOUND) READ(UNIT=INAM,NML=NAM_TRIPn) - ! - CALL TEST_NAM_VAR_SURF(ILUOUT,'CGROUNDW',CGROUNDW,'DEF','CST','VAR') - CALL TEST_NAM_VAR_SURF(ILUOUT,'CVIT',CVIT,'DEF','VAR') - ! - !* close namelist file - ! - CALL CLOSE_NAMELIST(HPROGRAM,INAM) - ! -ENDIF -! -IF (IMI.NE.-1) CALL UPDATE_NAM_TRIPn -IF (LHOOK) CALL DR_HOOK('READ_TRIP_CONF_N',1,ZHOOK_HANDLE) -! -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE READ_TRIP_CONF_n diff --git a/src/SURFEX/restart_tripn.F90 b/src/SURFEX/restart_tripn.F90 deleted file mode 100644 index 8aced6241c7fda03b8c987498f47ac750304728d..0000000000000000000000000000000000000000 --- a/src/SURFEX/restart_tripn.F90 +++ /dev/null @@ -1,73 +0,0 @@ -! ######### - SUBROUTINE RESTART_TRIP_n (KLUOUT) -! ################################ -! -!!**** *RESTART_TRIP_n* -!! -!! PURPOSE -!! ------- -! -! TRIP river routing restart. -! -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 28/05/05 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_RW_TRIP -! -USE MODD_TRIP_n, ONLY : CGROUNDW, LFLOODT, LPRINT_TRIP, XLEN, & - XSURF_STO, XGROUND_STO, XFLOOD_STO, & - XFFLOOD, XHFLOOD -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -INTEGER, INTENT(IN) :: KLUOUT -! -!* 0.2 declarations of local variables -! - CHARACTER(LEN=15), PARAMETER :: YFILE ='TRIP_RESTART.nc' - CHARACTER(LEN=20) :: YVNAME -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -! -! * Store output in diag file -! -IF (LHOOK) CALL DR_HOOK('RESTART_TRIP_N',0,ZHOOK_HANDLE) -YVNAME = 'SURF_STO' - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,XSURF_STO) -! -IF(CGROUNDW/='DEF')THEN - YVNAME = 'GROUND_STO' - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,XGROUND_STO) -ENDIF -! -IF(LFLOODT)THEN - YVNAME = 'FLOOD_STO' - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,XFLOOD_STO) - YVNAME = 'FFLOOD_T' - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,XFFLOOD) - YVNAME = 'HFLOOD_T' - CALL WRITE_TRIP(KLUOUT,YFILE,YVNAME,XLEN,XHFLOOD) -ENDIF -! -IF(LPRINT_TRIP)WRITE(KLUOUT,*)YFILE,' ended successfully !' -IF (LHOOK) CALL DR_HOOK('RESTART_TRIP_N',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -END SUBROUTINE RESTART_TRIP_n diff --git a/src/SURFEX/trip.F90 b/src/SURFEX/trip.F90 deleted file mode 100644 index d213034ed45dd4a996ae3a3ccc9d2937a47e5335..0000000000000000000000000000000000000000 --- a/src/SURFEX/trip.F90 +++ /dev/null @@ -1,243 +0,0 @@ -! ######### - SUBROUTINE TRIP (KLUOUT,HGROUNDW,HVIT,OFLOOD,OPRINT,PTSTEP, & - KGRCN,KSEQ,KNEXTX,KNEXTY,KSEQMAX,PTAUG,PAREA, & - PLEN,PFLOOD_LEN,PSLOPEBED,PWIDTH,PN,PN_FLOOD, & - PHC_BED,PWFLOOD,PTAB_F,PTAB_H,PTAB_VF,PDRAIN, & - PRUNOFF,PSOURCE,PGROUND_STO,PSURF_STO, & - PFLOOD_STO,PSOUT,PGOUT,PHS,PHFLOOD,PVEL, & - PFFLOOD,PQFR,PQRF,PVFIN,PVFOUT, & - PHSF,PSIN,KTRIP,KTSEPT,KTSTEP_END,KTABMAX ) -! ################################################################### -! -!!**** *TRIP* -!! -!! PURPOSE -!! ------- -! -! TRIP river routing and Floodplains schemes. -! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/02/05 -!! Modif. 28/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR, ONLY : XRHOLW_T,XSEA_T,XYEAR_T -! -USE MODI_TRIP_GROUND_WATER -! -USE MODI_TRIP_SURFACE_WATER -USE MODI_TRIP_SURFACE_WATER_VELVAR -USE MODI_TRIP_SURFACE_WATER_FLOOD -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -INTEGER, INTENT(IN) :: KLUOUT -INTEGER, INTENT(IN) :: KTRIP -INTEGER, INTENT(IN) :: KTSEPT -INTEGER, INTENT(IN) :: KTSTEP_END -! - CHARACTER(LEN=3), INTENT(IN) :: HGROUNDW !Groundwater scheme key - CHARACTER(LEN=3), INTENT(IN) :: HVIT !Variable velocity scheme key -! -LOGICAL, INTENT(IN) :: OFLOOD !Flood scheme key -LOGICAL, INTENT(IN) :: OPRINT !Printable budget key -! -REAL, INTENT(IN) :: PTSTEP !Trip timestep -! -INTEGER, INTENT(IN) :: KSEQMAX !maximum down flow -INTEGER, DIMENSION(:,:),INTENT(IN) :: KGRCN !Flow direction (1->8) -INTEGER, DIMENSION(:,:),INTENT(IN) :: KSEQ !River sequence -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTX !returns x and y point -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTY !of destination grid -! -REAL, DIMENSION(:,:), INTENT(IN) :: PTAUG !ground water transfer time [s] -! -REAL,DIMENSION(:,:), INTENT(IN) :: PLEN ! river length [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PSLOPEBED ! river bed slopes [m/m] -REAL,DIMENSION(:,:), INTENT(IN) :: PWIDTH ! river widths [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PN ! Manning roughness coeficient [-] (0.03 to 0.065) -REAL,DIMENSION(:,:), INTENT(IN) :: PN_FLOOD ! Manning coeficient over floodplains [-] (0.1) -REAL,DIMENSION(:,:), INTENT(IN) :: PHC_BED ! River bed depth [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PSOURCE ! precip-infiltration-evaporation [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PAREA ! Grid-cell area [m²] -REAL,DIMENSION(:,:), INTENT(IN) :: PDRAIN ! Subsurface runoff from ISBA [kg/s] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PRUNOFF ! Surface runoff from ISBA [kg/s] -! -REAL,DIMENSION(:,:), INTENT(INOUT) :: PHFLOOD ! Floodplain water depth [m] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PWFLOOD ! Floodplain width [m] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PFLOOD_LEN ! Floodplain length along the river [m] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PFFLOOD ! Fraction of flood [-] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PSURF_STO ! river channel storage at t [kg] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PGROUND_STO! groundwater storage at t [kg] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PFLOOD_STO ! Floodplain water storage at t [kg] -! -REAL,DIMENSION(:,:), INTENT(OUT) :: PSOUT ! Outflow from the surface river reservoir [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PSIN ! Inflow to the surface river reservoir [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PGOUT ! ground water outflow [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PHS ! River height [m] -REAL,DIMENSION(:,:), INTENT(OUT) :: PVEL ! River channel velocity [m/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PQFR ! Flood flow to river -REAL,DIMENSION(:,:), INTENT(OUT) :: PQRF ! River flow to floodplain -! -REAL,DIMENSION(:,:), INTENT(OUT) :: PVFIN ! River flow to flood velocity [m/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PVFOUT! Flood flow to river velocity [m/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PHSF ! River-Floodplain depth comparison [m] -! -REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_F ! Flood fraction array -REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_H ! Topo height array -REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_VF ! Flood volume array -INTEGER, DIMENSION(:,:),INTENT(IN) :: KTABMAX -! -!* 0.2 declarations of local variables -! -REAL, DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZSURF_STO2 ! river channel storage at t+1 [kg] -REAL, DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZGROUND_STO2! Groundwater storage at t+1 [kg] -REAL, DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZFLOOD_STO2 ! Floodplain water storage at t+1 [kg] -! -REAL :: ZGSTO_ALL, ZGSTO2_ALL, ZGIN_ALL, ZGOUT_ALL, ZFSTO_ALL, & - ZFSTO2_ALL, ZSOURCE_ALL, ZSSTO_ALL, ZSSTO2_ALL, ZSIN_ALL,& - ZDRUN_ALL, ZSOUT_ALL, ZVEL_ALL, ZFIN_ALL, ZFOUT_ALL, & - ZSFLOOD_ALL,ZHS_ALL,ZHF_ALL,ZFF_ALL -! -INTEGER :: ILON, ILAT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!-------------------------------------------------------------------------------! -! -IF (LHOOK) CALL DR_HOOK('TRIP',0,ZHOOK_HANDLE) -ILON = SIZE(PLEN,1) -ILAT = SIZE(PLEN,2) -! -ZGSTO_ALL = 0.0 -ZGSTO2_ALL = 0.0 -ZGIN_ALL = 0.0 -ZGOUT_ALL = 0.0 -ZFSTO_ALL = 0.0 -ZFSTO2_ALL = 0.0 -ZSOURCE_ALL = 0.0 -ZSSTO_ALL = 0.0 -ZSSTO2_ALL = 0.0 -ZSIN_ALL = 0.0 -ZDRUN_ALL = 0.0 -ZSOUT_ALL = 0.0 -ZVEL_ALL = 0.0 -ZFIN_ALL = 0.0 -ZFOUT_ALL = 0.0 -ZSFLOOD_ALL = 0.0 -ZHS_ALL = 0.0 -ZHF_ALL = 0.0 -ZFF_ALL = 0.0 -! -ZSURF_STO2 = 0.0 -ZGROUND_STO2 = 0.0 -ZFLOOD_STO2 = 0.0 -! -! * Ground water storage -! -IF(HGROUNDW/='DEF')THEN -! - CALL TRIP_GROUND_WATER(PTSTEP,PGROUND_STO,ZGROUND_STO2,PDRAIN,PTAUG, & - PGOUT,ZGSTO_ALL,ZGSTO2_ALL,ZGIN_ALL,ZGOUT_ALL ) -! - PGROUND_STO = ZGROUND_STO2 -! -ELSE -! - PGOUT=PDRAIN -! -ENDIF -! -! * Surface water storage with or without Floodplains -! -IF(OFLOOD)THEN -! - CALL TRIP_SURFACE_WATER_FLOOD(KLUOUT,PTSTEP,KGRCN,KSEQ,KNEXTX,KNEXTY, & - KSEQMAX,PLEN,PFLOOD_LEN,PSLOPEBED,PWIDTH, & - PN,PN_FLOOD,PHC_BED,PHFLOOD,PRUNOFF, & - PSURF_STO,ZSURF_STO2,PGOUT,PSOURCE, & - PFLOOD_STO,ZFLOOD_STO2,PSOUT,PVEL,PHS, & - PFFLOOD,PAREA,PQFR,PQRF, & - PVFIN,PVFOUT,PHSF,PSIN, & - ZSSTO_ALL,ZSSTO2_ALL,ZSIN_ALL,ZDRUN_ALL, & - ZSOUT_ALL,ZVEL_ALL,ZFSTO_ALL,ZFSTO2_ALL, & - ZSOURCE_ALL,ZFIN_ALL,ZFOUT_ALL,PWFLOOD, & - ZSFLOOD_ALL,ZHS_ALL,PTAB_F,PTAB_H,PTAB_VF, & - KTABMAX ) -! - PFLOOD_STO(:,:) = ZFLOOD_STO2(:,:) -! - IF(OPRINT)THEN - ZHF_ALL = SUM(PHFLOOD(:,:)*PAREA(:,:),PWIDTH(:,:)>0.0)/SUM(PAREA(:,:),PWIDTH(:,:)>0.0) - ZFF_ALL = SUM(PFFLOOD(:,:)*PAREA(:,:),PWIDTH(:,:)>0.0)/SUM(PAREA(:,:),PWIDTH(:,:)>0.0) - ENDIF -! -ELSEIF(HVIT=='VAR')THEN -! - CALL TRIP_SURFACE_WATER_VELVAR(PTSTEP,KGRCN,KSEQ,KNEXTX,KNEXTY,KSEQMAX, & - PLEN,PSLOPEBED,PWIDTH,PN,PRUNOFF,PSURF_STO, & - ZSURF_STO2,PGOUT,PSIN,PSOUT,PVEL,PHS,PAREA, & - ZSSTO_ALL,ZSSTO2_ALL,ZSIN_ALL,ZDRUN_ALL, & - ZSOUT_ALL,ZVEL_ALL,ZHS_ALL ) -! -ELSE -! - CALL TRIP_SURFACE_WATER(PTSTEP,KGRCN,KSEQ,KNEXTX,KNEXTY,KSEQMAX, & - PLEN,PRUNOFF,PGOUT,PSURF_STO,ZSURF_STO2, & - PSIN,PSOUT,ZSSTO_ALL,ZSSTO2_ALL,ZSIN_ALL,& - ZDRUN_ALL,ZSOUT_ALL) -! -ENDIF -! -PSURF_STO(:,:) = ZSURF_STO2(:,:) -! -! * Writting the budget -! -IF(OPRINT.AND.KTRIP==1.AND.KTSEPT==1)THEN -! - WRITE(KLUOUT,*)'' - WRITE(KLUOUT,*)' START RUN ISBA-TRIP-FP ' - WRITE(KLUOUT,*)' Budget en 10^12 kg ' - WRITE(KLUOUT,*)'' - WRITE(KLUOUT,'(a81)')'RUN TSTEP S_err F_err G_err MR(mm/y) Vel(m/s) Hs Hf Ff' - WRITE(KLUOUT,*)'' -! -ENDIF -! -IF(OPRINT) & - WRITE(KLUOUT,'(i3,1x,i3,3(2x,g8.2),f8.2,f8.2,7(2x,g8.2))') & - KTRIP,KTSEPT, & -! surface budget S_err - (ZSSTO_ALL-ZSSTO2_ALL)+PTSTEP*(ZSIN_ALL-ZSOUT_ALL+ZSFLOOD_ALL), & -! floodplains budget F_err - (ZFSTO_ALL-ZFSTO2_ALL)+PTSTEP*(ZSOURCE_ALL+ZFIN_ALL-ZFOUT_ALL), & -! ground budget G_err - (ZGSTO_ALL-ZGSTO2_ALL)+PTSTEP*(ZGIN_ALL-ZGOUT_ALL), & -! output flow to the sea, MR(mm/y) - (ZSSTO_ALL-ZSSTO2_ALL +PTSTEP*ZDRUN_ALL)/XSEA_T*XYEAR_T*REAL(KTSTEP_END),& -! mean flow velocity, Vel(m/s), and mean stream depth, Hs (m) -! mean floddplains depth, Hf (m), and mean flood fraction, Ff (%) - ZVEL_ALL,ZHS_ALL,ZHF_ALL,100.*ZFF_ALL -IF (LHOOK) CALL DR_HOOK('TRIP',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE TRIP diff --git a/src/SURFEX/trip_ground_water.F90 b/src/SURFEX/trip_ground_water.F90 deleted file mode 100644 index d3ddbbf16ba183092259deefb35b66f2b41db56c..0000000000000000000000000000000000000000 --- a/src/SURFEX/trip_ground_water.F90 +++ /dev/null @@ -1,132 +0,0 @@ -! ######### - SUBROUTINE TRIP_GROUND_WATER (PTSTEP,PGROUND_STO,PGROUND_STO2,PDRAIN,PTAUG, & - PGOUT,PGSTO_ALL,PGSTO2_ALL,PGIN_ALL,PGOUT_ALL) -! ############################################################################# -! -!!**** *TRIP_GROUND_WATER* -!! -!! PURPOSE -!! ------- -! -! Calculate the storage in the next time step based on the storage -! of current time step.The deep drainage is constant during the time step. -! -!!** METHOD -!! ------ -! -! Direct calculation -! -!! EXTERNAL -!! -------- -! -! None -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/02/05 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -REAL, INTENT(IN) :: PTSTEP -! KTSTEP = timestep value (=FRC) [s] -! = 10800s -! -! -REAL, DIMENSION(:,:), INTENT(IN) :: PDRAIN, PTAUG -! PRUNOFF = Surface runoff from ISBA [kg/m²] -! PTAUG = ground water transfer time [s] -! -REAL, DIMENSION(:,:), INTENT(IN ) :: PGROUND_STO -REAL, DIMENSION(:,:), INTENT(INOUT) :: PGROUND_STO2 -! PGROUND_STO = ground water storage at t [kg] -! PGROUND_STO2 = ground water storage at t+1 [kg] -! -REAL, DIMENSION(:,:), INTENT(OUT) :: PGOUT -! PGOUT = Outflow from the ground reservoir -! -REAL, INTENT(OUT) :: PGSTO_ALL,PGSTO2_ALL,PGIN_ALL,PGOUT_ALL -! Final budget variable -! -!* 0.2 declarations of local variables -! -REAL, DIMENSION(SIZE(PGROUND_STO,1),SIZE(PGROUND_STO,2)) :: ZGSTOMAX, ZGOUT -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('TRIP_GROUND_WATER',0,ZHOOK_HANDLE) -! -PGROUND_STO2(:,:) = 0.0 -PGOUT (:,:) = 0.0 -! -ZGSTOMAX (:,:) = 0.0 -ZGOUT (:,:) = 0.0 -! -PGSTO_ALL = 0.0 -PGSTO2_ALL = 0.0 -PGIN_ALL = 0.0 -PGOUT_ALL = 0.0 -! -WHERE(PTAUG(:,:)>0.0) -! -! --------------------------------------------------------------------------- -! ground water storage calculation -! - PGROUND_STO2(:,:)=PGROUND_STO(:,:)*EXP(-PTSTEP/PTAUG(:,:)) & - + (1.0-EXP(-PTSTEP/PTAUG(:,:)))*PDRAIN(:,:)*PTAUG(:,:) -! -! --------------------------------------------------------------------------- -! supress numerical artifacs -! - ZGSTOMAX(:,:)=PDRAIN(:,:)*PTSTEP+PGROUND_STO(:,:) -! - PGROUND_STO2(:,:)=MIN(ZGSTOMAX(:,:),PGROUND_STO2(:,:)) -! -! --------------------------------------------------------------------------- -! ground water discharge calculation -! - ZGOUT(:,:)=(PGROUND_STO(:,:)-PGROUND_STO2(:,:))/PTSTEP+PDRAIN(:,:) -! -! --------------------------------------------------------------------------- -! supress numerical artifacs -! - PGOUT(:,:)=MAX(0.0,ZGOUT(:,:)) - PGROUND_STO2(:,:) = PGROUND_STO2(:,:) + (PGOUT(:,:)-ZGOUT(:,:)) -! -ENDWHERE -! -!------------------------------------------------------------------------------- -!budget calculation -! -PGSTO_ALL = SUM(PGROUND_STO (:,:), PTAUG(:,:)>0.0) -PGSTO2_ALL = SUM(PGROUND_STO2(:,:), PTAUG(:,:)>0.0) -PGIN_ALL = SUM(PDRAIN (:,:), PTAUG(:,:)>0.0) -PGOUT_ALL = SUM(PGOUT (:,:), PTAUG(:,:)>0.0) -! -IF (LHOOK) CALL DR_HOOK('TRIP_GROUND_WATER',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE TRIP_GROUND_WATER diff --git a/src/SURFEX/trip_interface.F90 b/src/SURFEX/trip_interface.F90 deleted file mode 100644 index 46eba71558f86c59338620edb965dba99f20ce8a..0000000000000000000000000000000000000000 --- a/src/SURFEX/trip_interface.F90 +++ /dev/null @@ -1,321 +0,0 @@ -!#################################################################### -SUBROUTINE TRIP_INTERFACE (KLUOUT,KLON,KLAT,ORESTART,KYEAR,KMONTH, & - KTRIP,PDURATION,PRUNOFF,PDRAIN,PSRC_FLOOD) -!#################################################################### -! -!!**** *TRIP* -!! -!! PURPOSE -!! ------- -! -! Driver for the TRIP river routing. -! Here, we call the physical and the diag routines -! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/02/05 -!! Modif. 28/05/08 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR, ONLY : XRHOLW_T -USE MODD_TRIP_GRID_n, ONLY : XAREA -USE MODD_DIAG_TRIP_n -USE MODD_TRIP_n -! -! -USE MODI_TRIP -USE MODI_DIAG_TRIP_n -USE MODI_RESTART_TRIP_n -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -LOGICAL, INTENT(IN) :: ORESTART -! -INTEGER, INTENT(IN) :: KLON -INTEGER, INTENT(IN) :: KLAT -INTEGER, INTENT(IN) :: KLUOUT -INTEGER, INTENT(IN) :: KYEAR -INTEGER, INTENT(IN) :: KMONTH -INTEGER, INTENT(IN) :: KTRIP -! -REAL, INTENT(IN) :: PDURATION -! -REAL, DIMENSION(KLON,KLAT), INTENT(INOUT) :: PRUNOFF -REAL, DIMENSION(KLON,KLAT), INTENT(INOUT) :: PDRAIN -! -REAL, DIMENSION(KLON,KLAT), INTENT(INOUT),OPTIONAL :: PSRC_FLOOD -! -!* 0.2 declarations of local variables -! -INTEGER, DIMENSION(5,2) :: ISIZE -INTEGER :: JTSTEP, ITRIP_TSTEP -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -! Allocate local variables -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('TRIP_INTERFACE',0,ZHOOK_HANDLE) -! -ISIZE(:,:) = 0 -! -IF (LTRIP_DIAG_MISC) THEN - ISIZE(1,1) = KLON - ISIZE(1,2) = KLAT -ENDIF -! -IF (CGROUNDW/='DEF') THEN - ISIZE(2,1) = KLON - ISIZE(2,2) = KLAT -ENDIF -! -IF (CVIT=='VAR') THEN - ISIZE(3,1) = KLON - ISIZE(3,2) = KLAT -ENDIF -! -IF (LFLOODT) THEN - ! - IF (.NOT.PRESENT(PSRC_FLOOD)) THEN - WRITE(KLUOUT,*)'!Probleme when you call the coupling_trip_n.f90 routine!!!!' - STOP - ENDIF - ! - ISIZE(4,1) = KLON - ISIZE(4,2) = KLAT - ! - IF(LTRIP_DIAG_MISC)THEN - ISIZE(5,1) = KLON - ISIZE(5,2) = KLAT - ENDIF -ENDIF -! - CALL TRIP_INTERFACE_DIM(ISIZE) -! -!------------------------------------------------------------------------------- -!Write restart -!------------------------------------------------------------------------------- -! -IF(ORESTART.AND.KTRIP==INT(PDURATION/XTSTEP_COUPLING))THEN - CALL RESTART_TRIP_n(KLUOUT) -ENDIF -! -IF (LHOOK) CALL DR_HOOK('TRIP_INTERFACE',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -! -CONTAINS -! -SUBROUTINE TRIP_INTERFACE_DIM(KSIZE) -! -IMPLICIT NONE -! -INTEGER, DIMENSION(:,:), INTENT(IN) :: KSIZE -! -REAL, DIMENSION(KLON,KLAT) :: ZGOUT -REAL, DIMENSION(KLON,KLAT) :: ZSOUT -REAL, DIMENSION(KLON,KLAT) :: ZSIN -REAL, DIMENSION(KLON,KLAT) :: ZSURF_STO_OLD -REAL, DIMENSION(KLON,KLAT) :: ZQDIS_OLD -! -REAL, DIMENSION(KSIZE(1,1),KSIZE(1,2)) :: ZQIN_OLD -! -REAL, DIMENSION(KSIZE(2,1),KSIZE(2,2)) :: ZGROUND_STO_OLD -REAL, DIMENSION(KSIZE(2,1),KSIZE(2,2)) :: ZQGF_OLD -! -REAL, DIMENSION(KSIZE(3,1),KSIZE(3,2)) :: ZVEL -REAL, DIMENSION(KSIZE(3,1),KSIZE(3,2)) :: ZHS -REAL, DIMENSION(KSIZE(3,1),KSIZE(3,2)) :: ZVEL_OLD -REAL, DIMENSION(KSIZE(3,1),KSIZE(3,2)) :: ZHS_OLD -! -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZSOURCE -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZQFR -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZQRF -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZVFIN -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZVFOUT -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZHSF -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZFLOOD_STO_OLD -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZFF_OLD -REAL, DIMENSION(KSIZE(4,1),KSIZE(4,2)) :: ZHF_OLD -! -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZQFR_OLD -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZQRF_OLD -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZVFIN_OLD -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZVFOUT_OLD -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZWF_OLD -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZLF_OLD -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZHSF_OLD -REAL, DIMENSION(KSIZE(5,1),KSIZE(5,2)) :: ZSOURCE_OLD -! -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -IF (LHOOK) CALL DR_HOOK('TRIP_INTERFACE:TRIP_INTERFACE_DIM',0,ZHOOK_HANDLE) -!------------------------------------------------------------------------------- -!Put ISBA variables in TRIP dimension (kg --> kg/s) -!------------------------------------------------------------------------------- -! -PRUNOFF(:,:) = PRUNOFF(:,:) / XTSTEP_COUPLING -PDRAIN (:,:) = PDRAIN (:,:) / XTSTEP_COUPLING -! -!------------------------------------------------------------- -! -ZGOUT (:,:) = 0.0 -ZSIN (:,:) = 0.0 -ZSOUT (:,:) = 0.0 -ZSURF_STO_OLD(:,:) = XDIAG_SURF_STO -ZQDIS_OLD (:,:) = XDIAG_QDIS -! -IF(LTRIP_DIAG_MISC) ZQIN_OLD(:,:) = XDIAG_QIN -! -! No groundwater treatement (e.g. permafrost) -! -IF(CGROUNDW/='DEF')THEN - ! - ZGROUND_STO_OLD(:,:) = XDIAG_GROUND_STO - ZQGF_OLD (:,:) = XDIAG_QGF - ! - WHERE(XTAUG(:,:)==0.0) - PRUNOFF(:,:) = PRUNOFF(:,:)+PDRAIN(:,:) - PDRAIN(:,:) = 0.0 - ENDWHERE - ! -ENDIF -! -IF(CVIT=='VAR')THEN - ZVEL (:,:) = 0.0 - ZHS (:,:) = 0.0 - ZVEL_OLD(:,:) = XDIAG_VEL - ZHS_OLD (:,:) = XDIAG_HS -ENDIF -! -IF(LFLOODT)THEN - ! - ZSOURCE(:,:) = PSRC_FLOOD(:,:) / XTSTEP_COUPLING - WHERE(XFFLOOD(:,:)==1.0.AND.ZSOURCE(:,:)>0.0) - PRUNOFF(:,:) = PRUNOFF(:,:) + ZSOURCE(:,:) - ZSOURCE(:,:) = 0.0 - ENDWHERE - ! - ZQFR (:,:) = 0.0 - ZQRF (:,:) = 0.0 - ZVFIN (:,:) = 0.0 - ZVFOUT (:,:) = 0.0 - ZHSF (:,:) = 0.0 - ZFLOOD_STO_OLD(:,:) = XDIAG_FLOOD_STO - ZFF_OLD (:,:) = XDIAG_FF - ZHF_OLD (:,:) = XDIAG_HF - ! - - IF(LTRIP_DIAG_MISC)THEN - ZQFR_OLD (:,:) = XDIAG_QFR - ZQRF_OLD (:,:) = XDIAG_QRF - ZVFIN_OLD (:,:) = XDIAG_VFIN - ZVFOUT_OLD (:,:) = XDIAG_VFOUT - ZWF_OLD (:,:) = XDIAG_WF - ZLF_OLD (:,:) = XDIAG_LF - ZHSF_OLD (:,:) = XDIAG_HSF - ZSOURCE_OLD (:,:) = XDIAG_SOURCE - ENDIF -! -ENDIF -! -!------------------------------------------------------------------------------- -!Call physical routines -!------------------------------------------------------------------------------- -! -ITRIP_TSTEP = INT(XTSTEP_COUPLING/XTRIP_TSTEP) -! -DO JTSTEP=1,ITRIP_TSTEP -! -! * TRIP time step loop -! - CALL TRIP(KLUOUT,CGROUNDW,CVIT,LFLOODT,LPRINT_TRIP, & - XTRIP_TSTEP,IGRCN,ISEQ,INEXTX,INEXTY,ISEQMAX, & - XTAUG,XAREA,XLEN,XFLOOD_LEN,XSLOPEBED,XWIDTH,XN, & - XN_FLOOD,XHC_BED,XWFLOOD,XTAB_F,XTAB_H,XTAB_VF, & - PDRAIN,PRUNOFF,ZSOURCE,XGROUND_STO,XSURF_STO, & - XFLOOD_STO,ZSOUT,ZGOUT,ZHS,XHFLOOD,ZVEL, & - XFFLOOD,ZQFR,ZQRF,ZVFIN,ZVFOUT, & - ZHSF,ZSIN,KTRIP,JTSTEP,ITRIP_TSTEP,ITABMAX ) -! -! * Actualisation of diagnostic variables -! - XDIAG_QDIS(:,:) = XDIAG_QDIS(:,:) + ZSOUT(:,:) * XTRIP_TSTEP / XRHOLW_T -! - IF(CGROUNDW/='DEF')THEN - XDIAG_QGF(:,:) = XDIAG_QGF(:,:) + ZGOUT(:,:) * XTRIP_TSTEP / XRHOLW_T - ENDIF -! - IF(LTRIP_DIAG_MISC)THEN - XDIAG_QIN (:,:) = XDIAG_QIN (:,:) + ZSIN (:,:) * XTRIP_TSTEP / XRHOLW_T - IF(LFLOODT)THEN - XDIAG_QFR(:,:) = XDIAG_QFR(:,:) + ZQFR(:,:) * XTRIP_TSTEP / XRHOLW_T - XDIAG_QRF(:,:) = XDIAG_QRF(:,:) + ZQRF(:,:) * XTRIP_TSTEP / XRHOLW_T - ENDIF - ENDIF -! -ENDDO ! * End TRIP time step loop -! -XDIAG_SURF_STO(:,:) = XDIAG_SURF_STO(:,:) + XSURF_STO(:,:) / XAREA(:,:) -! -IF(CGROUNDW/='DEF')THEN - XDIAG_GROUND_STO(:,:) = XDIAG_GROUND_STO(:,:) + XGROUND_STO(:,:) / XAREA(:,:) -ENDIF -! -IF(CVIT=='VAR')THEN - XDIAG_VEL(:,:) = XDIAG_VEL(:,:) + ZVEL(:,:) - XDIAG_HS (:,:) = XDIAG_HS (:,:) + ZHS (:,:) -ENDIF - -IF(LFLOODT)THEN -! - XDIAG_FLOOD_STO(:,:) = XDIAG_FLOOD_STO(:,:) + XFLOOD_STO(:,:) / XAREA(:,:) - XDIAG_FF (:,:) = XDIAG_FF (:,:) + XFFLOOD (:,:) - XDIAG_HF (:,:) = XDIAG_HF (:,:) + XHFLOOD (:,:) -! - IF(LTRIP_DIAG_MISC)THEN - XDIAG_VFIN (:,:) = XDIAG_VFIN (:,:) + ZVFIN (:,:) - XDIAG_VFOUT (:,:) = XDIAG_VFOUT (:,:) + ZVFOUT (:,:) - XDIAG_WF (:,:) = XDIAG_WF (:,:) + XWFLOOD (:,:) - XDIAG_LF (:,:) = XDIAG_LF (:,:) + XFLOOD_LEN(:,:) - XDIAG_HSF (:,:) = XDIAG_HSF (:,:) + ZHSF (:,:) - XDIAG_SOURCE(:,:) = XDIAG_SOURCE(:,:) + ZSOURCE (:,:) * XTSTEP_COUPLING / XAREA(:,:) - ENDIF -! -! Coupling variables -! - XPIFLOOD(:,:)=XFLOOD_STO(:,:) -! -ENDIF -! -!------------------------------------------------------------------------------- -!Store result -!------------------------------------------------------------------------------- -! -IF(LPRINT_TRIP)WRITE(KLUOUT,*)'' -! - CALL DIAG_TRIP_n(KLUOUT,KYEAR,KMONTH,KTRIP,PDURATION, & - ZSURF_STO_OLD,ZQDIS_OLD,ZGROUND_STO_OLD, & - ZQGF_OLD,ZVEL_OLD,ZHS_OLD,ZFLOOD_STO_OLD,& - ZFF_OLD,ZHF_OLD,ZQFR_OLD,ZQRF_OLD, & - ZVFIN_OLD,ZVFOUT_OLD,ZWF_OLD,ZLF_OLD, & - ZHSF_OLD,ZQIN_OLD,ZSOURCE_OLD ) -! -IF (LHOOK) CALL DR_HOOK('TRIP_INTERFACE:TRIP_INTERFACE_DIM',1,ZHOOK_HANDLE) -! -END SUBROUTINE TRIP_INTERFACE_DIM -! -END SUBROUTINE TRIP_INTERFACE diff --git a/src/SURFEX/trip_surface_water.F90 b/src/SURFEX/trip_surface_water.F90 deleted file mode 100644 index 0e907f4199d8d2c0619d4946b61ad8a149bd2ae5..0000000000000000000000000000000000000000 --- a/src/SURFEX/trip_surface_water.F90 +++ /dev/null @@ -1,173 +0,0 @@ -! ######### - SUBROUTINE TRIP_SURFACE_WATER (PTSTEP,KGRCN,KSEQ,KNEXTX,KNEXTY,KSEQMAX, & - PLEN,PRUNOFF,PGOUT,PSURF_STO,PSURF_STO2, & - PSIN,PSOUT,PSSTO_ALL,PSSTO2_ALL,PSIN_ALL,& - PDRUN_ALL,PSOUT_ALL) -! ################################################################ -! -!!**** *TRIP_SURFACE_WATER* -!! -!! PURPOSE -!! ------- -! -! Calculate the river storage in the next time step based on the storage -! of current time step using fixed 0.5m/s stream flow velocity. -! -! -!!** METHOD -!! ------ -! -! Direct calculation -! -!! EXTERNAL -!! -------- -! -! None -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/02/05 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_n, ONLY : XCVEL -USE MODD_TRIP_PAR, ONLY : XRHOLW_T -! -! -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK -USE PARKIND1 ,ONLY : JPRB -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -REAL, INTENT(IN) :: PTSTEP ! Trip timestep value (10800s) -! -INTEGER, DIMENSION(:,:),INTENT(IN) :: KGRCN ! Flow direction (1->8) -INTEGER, DIMENSION(:,:),INTENT(IN) :: KSEQ ! River sequence -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTX ! returns x and y point -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTY ! of destination grid: -! 8 1 2 -! 7 3 -! 6 5 4 -! -INTEGER, INTENT(IN) :: KSEQMAX ! maximum down flow -! -REAL,DIMENSION(:,:), INTENT(IN) :: PLEN ! river length [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PRUNOFF ! Surface runoff from ISBA [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PGOUT ! ground water outflow [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PSURF_STO ! river channel storage at t [kg] -! -REAL,DIMENSION(:,:), INTENT(INOUT) :: PSURF_STO2 ! river channel storage at t+1 [kg] -! -REAL,DIMENSION(:,:), INTENT(OUT) :: PSIN ! Inflow to the surface river reservoir [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PSOUT ! Outflow from the surface river reservoir [kg/s] -! -REAL, INTENT(OUT) :: PSSTO_ALL,PSSTO2_ALL,PSIN_ALL, & - PDRUN_ALL,PSOUT_ALL -! Final budget variable -! -!* 0.2 declarations of local variables -! -REAL, DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZQIN -! -REAL :: ZRC,ZQOUT,ZSTOMAX -! -INTEGER :: ILON, ILAT, I, J, ISEQ -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('TRIP_SURFACE_WATER',0,ZHOOK_HANDLE) -ILON = SIZE(PLEN,1) -ILAT = SIZE(PLEN,2) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -PSURF_STO2 (:,:) = 0.0 -PSIN (:,:) = 0.0 -PSOUT (:,:) = 0.0 -! -ZQIN (:,:) = 0.0 -! -PSSTO_ALL = 0.0 -PSSTO2_ALL = 0.0 -PSIN_ALL = 0.0 -PDRUN_ALL = 0.0 -PSOUT_ALL = 0.0 -! -!------------------------------------------------------------------------------- -!Sequence loop -! -DO ISEQ=1,KSEQMAX - DO J=1,ILAT - DO I=1,ILON -! - IF(KSEQ(I,J)/=ISEQ.OR.KSEQ(I,J)==0)CYCLE -! -! --------------------------------------------------------------------- -! inflow calculation -! - ZQIN(I,J)=ZQIN(I,J)+PRUNOFF(I,J)+PGOUT(I,J) - PDRUN_ALL=PDRUN_ALL+PRUNOFF(I,J)+PGOUT(I,J) -! - PSIN(I,J)=ZQIN(I,J) -! -! ------------------------------------------------------------------ -! Fixed river channel velocity - ZRC = XCVEL / PLEN(I,J) -! -! ------------------------------------------------------------------ -! river channel storage calculation - PSURF_STO2(I,J) = PSURF_STO(I,J)*EXP(-(ZRC*PTSTEP))+(1.0-EXP(-(ZRC*PTSTEP)))*ZQIN(I,J)/ZRC -! -! ------------------------------------------------------------------- -! supress numerical artifacs - ZSTOMAX=ZQIN(I,J)*PTSTEP+PSURF_STO(I,J) -! - PSURF_STO2(I,J)=MIN(ZSTOMAX, PSURF_STO2(I,J)) -! -! ------------------------------------------------------------------ -! river channel outflow calculation and supress numerical artifacs -! - ZQOUT = (PSURF_STO(I,J)-PSURF_STO2(I,J))/PTSTEP+ZQIN(I,J) - PSOUT(I,J) = MAX(ZQOUT,0.0) -! - PSURF_STO2(I,J) = PSURF_STO2(I,J) + (PSOUT(I,J)-ZQOUT) -! -! ------------------------------------------------------------------ -! budget calculation - PSSTO_ALL = PSSTO_ALL + PSURF_STO(I,J) - PSSTO2_ALL = PSSTO2_ALL + PSURF_STO2(I,J) - PSIN_ALL = PSIN_ALL + ZQIN(I,J) - PSOUT_ALL = PSOUT_ALL + PSOUT(I,J) -! -! ------------------------------------------------------------------ - IF(KGRCN(I,J)>=1.AND.KGRCN(I,J)<=8)THEN - ZQIN(KNEXTX(I,J),KNEXTY(I,J))=ZQIN(KNEXTX(I,J),KNEXTY(I,J))+PSOUT(I,J) - ENDIF -! - ENDDO - ENDDO -ENDDO -! -IF (LHOOK) CALL DR_HOOK('TRIP_SURFACE_WATER',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE TRIP_SURFACE_WATER diff --git a/src/SURFEX/trip_surface_water_flood.F90 b/src/SURFEX/trip_surface_water_flood.F90 deleted file mode 100644 index 9de6a3c7eeae0b798a767b26524542a413631dfd..0000000000000000000000000000000000000000 --- a/src/SURFEX/trip_surface_water_flood.F90 +++ /dev/null @@ -1,411 +0,0 @@ - SUBROUTINE TRIP_SURFACE_WATER_FLOOD (KLUOUT,PTSTEP,KGRCN,KSEQ,KNEXTX,KNEXTY, & - KSEQMAX,PLEN,PFLOOD_LEN,PSLOPEBED, & - PWIDTH,PN,PN_FLOOD,PHC,PHFLOOD,PRUNOFF, & - PSURF_STO,PSURF_STO2,PGOUT,PSOURCE, & - PFLOOD_STO,PFLOOD_STO2,PSOUT,PVEL,PHS, & - PFFLOOD,PAREA,PQFR,PQRF,PVFIN,PVFOUT, & - PHSF,PSIN, & - PSSTO_ALL,PSSTO2_ALL,PSIN_ALL,PDRUN_ALL, & - PSOUT_ALL,PVEL_ALL,PFSTO_ALL,PFSTO2_ALL, & - PSOURCE_ALL,PFIN_ALL,PFOUT_ALL,PWFLOOD, & - PSFLOOD_ALL,PHS_ALL,PTAB_F,PTAB_H, & - PTAB_VF,KTABMAX ) -! ################################################################ -! -!!**** *TRIP_SURFACE_WATER_FLOOD* -!! -!! PURPOSE -!! ------- -! -! Calculate the river and flood storage in the next time step based on storages -! of current time step using the Manning equation and the Arora (1999) -! variable flow velocity scheme. -! Numérical method = RK Ordre 4 Rang 4: -! -! Point de depart : X0(t) =X(t) -! point intermediaire K1: X1(t+dt/2)=X(t) + dt/2 * F(X0(t)) -! point intermediaire K2: X2(t+dt/2)=X(t) + dt/2 * F(X1(t+dt/2)) -! point intermediaire K3: X3(t+dt) =X(t) + dt * F(X2(t+dt/2)) -! point final K4: F(X3(t+dt)) -! -! point Final: X(t+dt)=X(t)+dt/6*(F(X0(t))+2*F(X1(t+dt/2))+2*F(X2(t+dt/2))+F(X3(t+dt))) -! -!!** METHOD -!! ------ -! -! RK Ordre 4 Rang 4 -! -!! EXTERNAL -!! -------- -! -! None -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/02/09 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR, ONLY : XRHOLW_T -! -USE MODE_TRIP_FUNCTION -! -USE MODI_FLOOD_UPDATE -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -INTEGER, INTENT(IN) :: KLUOUT -! -REAL, INTENT(IN) :: PTSTEP ! Trip timestep value (10800s) -! -INTEGER, DIMENSION(:,:),INTENT(IN) :: KGRCN ! Flow direction (1->8) -INTEGER, DIMENSION(:,:),INTENT(IN) :: KSEQ ! River sequence -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTX ! returns x and y point -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTY ! of destination grid: -! 8 1 2 -! 7 3 -! 6 5 4 -! -INTEGER, INTENT(IN) :: KSEQMAX ! maximum down flow -! -REAL,DIMENSION(:,:), INTENT(IN) :: PLEN ! river length [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PSLOPEBED ! river bed slopes [m/m] -REAL,DIMENSION(:,:), INTENT(IN) :: PWIDTH ! river widths [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PN ! Manning roughness coeficient [-] (0.03 to 0.065) -REAL,DIMENSION(:,:), INTENT(IN) :: PN_FLOOD ! Manning coeficient over floodplains [-] (0.1) -REAL,DIMENSION(:,:), INTENT(IN) :: PHC ! River bed depth [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PSOURCE ! precip-infiltration-evaporation [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PAREA ! Grid-cell area [m²] -REAL,DIMENSION(:,:), INTENT(IN) :: PRUNOFF ! Surface runoff from ISBA [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PGOUT ! ground water outflow [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PSURF_STO ! river channel storage at t [kg] -REAL,DIMENSION(:,:), INTENT(IN) :: PFLOOD_STO ! Floodplain water storage at t [kg] -! -REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_F ! Flood fraction array -REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_H ! Topo height array -REAL,DIMENSION(:,:,:), INTENT(IN) :: PTAB_VF ! Flood volume array -INTEGER, DIMENSION(:,:),INTENT(IN) :: KTABMAX -! -REAL,DIMENSION(:,:), INTENT(INOUT) :: PSURF_STO2 ! river channel storage at t+1 [kg] -REAL,DIMENSION(:,:), INTENT(INOUT) :: PFLOOD_STO2! Floodplain water storage at t+1 [kg] -! -REAL,DIMENSION(:,:), INTENT(OUT) :: PHFLOOD ! Floodplain water depth [m] -REAL,DIMENSION(:,:), INTENT(OUT) :: PWFLOOD ! Floodplain width [m] -REAL,DIMENSION(:,:), INTENT(OUT) :: PFLOOD_LEN ! Floodplain length along the river [m] -REAL,DIMENSION(:,:), INTENT(OUT) :: PFFLOOD ! Fraction of flood [-] -! -REAL,DIMENSION(:,:), INTENT(OUT) :: PSIN ! Inflow to the surface river reservoir [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PSOUT ! Outflow from the surface river reservoir [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PVEL ! River channel velocity [m/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PHS -REAL,DIMENSION(:,:), INTENT(OUT) :: PQFR ! Flood flow to river -REAL,DIMENSION(:,:), INTENT(OUT) :: PQRF ! River flow to floodplain -! -REAL,DIMENSION(:,:), INTENT(OUT) :: PVFIN ! River flow to flood velocity [m/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PVFOUT! Flood flow to river velocity [m/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PHSF ! River-Floodplain depth comparison [m] during dt -! -REAL, INTENT(OUT) :: PSSTO_ALL,PSSTO2_ALL,PSIN_ALL, & - PDRUN_ALL,PSOUT_ALL,PVEL_ALL, & - PFSTO_ALL,PFSTO2_ALL,PSOURCE_ALL, & - PFIN_ALL,PFOUT_ALL,PSFLOOD_ALL,PHS_ALL -! Final budget variable -! -!* 0.2 declarations of local variables -! -REAL, DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZQIN -! -INTEGER :: ILON, ILAT, I, J, ISEQ -! -REAL :: ZVELCOEF,ZQOUT,ZAREA,ZTSTEP,ZSTOMAX,ZDELTA,& - ZFLOOD_STO,ZRECUP,ZFOUT,ZHF,ZWF,ZLF,ZFF -! -REAL :: ZS1,ZS2,ZS3 -REAL :: ZF1,ZF2,ZF3 -REAL :: ZK1,ZK2,ZK3,ZK4 -REAL :: ZQ1,ZQ2,ZQ3,ZQ4 -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('MODI_TRIP_SURFACE_WATER_FLOOD:TRIP_SURFACE_WATER_FLOOD',0,ZHOOK_HANDLE) -ILON = SIZE(PLEN,1) -ILAT = SIZE(PLEN,2) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -PSURF_STO2 (:,:) = 0.0 -PSIN (:,:) = 0.0 -PSOUT (:,:) = 0.0 -PVEL (:,:) = 0.0 -PHS (:,:) = 0.0 -PFLOOD_STO2(:,:) = 0.0 -! -PVFIN (:,:) = 0.0 -PVFOUT (:,:) = 0.0 -PHSF (:,:) = 0.0 -! -ZQIN (:,:) = 0.0 -! -PFSTO_ALL = 0.0 -PFSTO2_ALL = 0.0 -PSOURCE_ALL = 0.0 -PSSTO_ALL = 0.0 -PSSTO2_ALL = 0.0 -PSIN_ALL = 0.0 -PDRUN_ALL = 0.0 -PSOUT_ALL = 0.0 -PVEL_ALL = 0.0 -PFIN_ALL = 0.0 -PFOUT_ALL = 0.0 -PSFLOOD_ALL = 0.0 -PHS_ALL=0.0 -! -ZAREA=SUM(PAREA,PLEN>0.0) -! -!------------------------------------------------------------------------------- -!Sequence loop -! -DO ISEQ=1,KSEQMAX - DO J=1,ILAT - DO I=1,ILON -! - IF(KSEQ(I,J)/=ISEQ.OR.KSEQ(I,J)==0)CYCLE -! -! --------------------------------------------------------------------- -! inflow calculation -! - ZQIN(I,J)=ZQIN(I,J)+PRUNOFF(I,J)+PGOUT(I,J) - PDRUN_ALL=PDRUN_ALL+PRUNOFF(I,J)+PGOUT(I,J) -! - PSIN(I,J)=ZQIN(I,J) -! - IF(PN(I,J)>0.0)THEN - ZVELCOEF=SQRT(PSLOPEBED(I,J))/PN(I,J) - ELSE - ZVELCOEF=0.0 - ENDIF -! -! ------------------------------------------------------------------ -! Update the floodplain storage due to source (Precip inter - LEf - Infil) - ZFLOOD_STO=PFLOOD_STO(I,J)+PTSTEP*PSOURCE(I,J) - ZRECUP =MIN(ZFLOOD_STO,0.0) - ZFLOOD_STO=MAX(ZFLOOD_STO,0.0) -! - CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & - PAREA(I,J),ZFLOOD_STO,ZHF,ZFF,ZLF,ZWF) -! -! ------------------------------------------------------------------ -! delta calculation to resolve the end of a flood event without Runge Kutta -! ie : if delta=1, the flood is very small, so it run off directly to the stream - ZDELTA=DELTA_FLOOD(PSURF_STO(I,J),ZFLOOD_STO,ZHF,ZLF,ZWF,PHC(I,J),PWIDTH(I,J),PLEN(I,J)) -! -! ------------------------------------------------------------------ -! Runge Kutta 4 -! ------------------------------------------------------------------ -! -! 1----------------------------------------------------------------- - ZTSTEP=PTSTEP/2.0 -! - ZQ1=FUNCFLOOD(PSURF_STO(I,J),ZFLOOD_STO,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) - ZK1=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),PSURF_STO(I,J),PSIN(I,J)) -! - ZF1=ZFLOOD_STO +ZTSTEP*ZQ1 - ZS1=PSURF_STO(I,J)+ZTSTEP*(ZK1-ZQ1) -! - CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & - PAREA(I,J),ZF1,ZHF,ZFF,ZLF,ZWF) -! -! 2----------------------------------------------------------------- - ZTSTEP=PTSTEP/2.0 -! - ZQ2=FUNCFLOOD(ZS1,ZF1,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) - ZK2=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS1,PSIN(I,J)) -! - ZF2=ZFLOOD_STO +ZTSTEP*ZQ2 - ZS2=PSURF_STO(I,J)+ZTSTEP*(ZK2-ZQ2) -! - CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & - PAREA(I,J),ZF2,ZHF,ZFF,ZLF,ZWF) -! -! 3----------------------------------------------------------------- - ZTSTEP=PTSTEP -! - ZQ3=FUNCFLOOD(ZS2,ZF2,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) - ZK3=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS2,PSIN(I,J)) -! - ZF3=ZFLOOD_STO +ZTSTEP*ZQ3 - ZS3=PSURF_STO(I,J)+ZTSTEP*(ZK3-ZQ3) -! - CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & - PAREA(I,J),ZF3,ZHF,ZFF,ZLF,ZWF) -! -! 4----------------------------------------------------------------- -! - ZQ4=FUNCFLOOD(ZS3,ZF3,ZHF,ZLF,ZWF,PHC(I,J),PN_FLOOD(I,J),PWIDTH(I,J),PLEN(I,J),ZDELTA,ZFF) - ZK4=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS3,PSIN(I,J)) -! -! Final points------------------------------------------------------ - ZTSTEP=PTSTEP/6.0 -! - PFLOOD_STO2(I,J)=ZFLOOD_STO +ZTSTEP*(ZQ1+2.0*ZQ2+2.0*ZQ3+ZQ4)-ZDELTA*ZFLOOD_STO - PSURF_STO2 (I,J)=PSURF_STO(I,J)+ZTSTEP*(ZK1-ZQ1+2.0*(ZK2-ZQ2)+2.0*(ZK3-ZQ3)+ZK4-ZQ4)+ZDELTA*ZFLOOD_STO -! ------------------------------------------------------------------- -! supress numerical artifacs - IF(PSURF_STO2(I,J)<=0.0.AND.PFLOOD_STO2(I,J)>0.0)THEN - WRITE(KLUOUT,*)'-------------------------------------------------------' - WRITE(KLUOUT,*)'Stream reservoir (kg/m²) :',PSURF_STO2 (I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Flood reservoir (kg/m²) :',PFLOOD_STO2(I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Longitude index :',I,'Latitude index :',J - PSURF_STO2 (I,J)=MIN(PLEN(I,J)*PWIDTH(I,J)*PHC(I,J)*XRHOLW_T,PFLOOD_STO2(I,J)) - PFLOOD_STO2(I,J)=MAX(0.0,PFLOOD_STO2(I,J)-PSURF_STO2 (I,J)) - WRITE(KLUOUT,*)'Stream reservoir (kg/m²) :',PSURF_STO2 (I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Flood reservoir (kg/m²) :',PFLOOD_STO2(I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'-------------------------------------------------------' - ENDIF -! - IF(PSURF_STO2(I,J)<0.0)THEN - WRITE(KLUOUT,*)'-------------------------------------------------------' - WRITE(KLUOUT,*)'TRIP_SURFACE_WATER_FLOOD : Stream reservoir is negatif ' - WRITE(KLUOUT,*)' after RK ' - WRITE(KLUOUT,*)'Stream reservoir (kg/m²) :',PSURF_STO2(I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Stream reservoir in (kg/m²) :',PSURF_STO (I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Flood reservoir (kg/m²) :',PFLOOD_STO2(I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Longitude index :',I,'Latitude index :',J - WRITE(KLUOUT,*)'Perhaps TRIP time step too big : ',PTSTEP - WRITE(KLUOUT,*)'-------------------------------------------------------' - STOP - ENDIF -! -! ------------------------------------------------------------------- -! total flood flux - ZFOUT = (ZFLOOD_STO-PFLOOD_STO2(I,J))/PTSTEP -! -! ------------------------------------------------------------------- -! supress numerical artifacs - ZSTOMAX=(ZQIN(I,J)+ZFOUT)*PTSTEP+PSURF_STO(I,J) -! - PSURF_STO2(I,J)=MIN(ZSTOMAX,PSURF_STO2(I,J)) -! -! ------------------------------------------------------------------ -! river channel outflow calculation and supress numerical artifacs -! - ZQOUT = (PSURF_STO(I,J)-PSURF_STO2(I,J))/PTSTEP+ZQIN(I,J)+ZFOUT - PSOUT(I,J) = MAX(ZQOUT,0.0) -! - PSURF_STO2(I,J) = PSURF_STO2(I,J) + (PSOUT(I,J)-ZQOUT) -! -! ------------------------------------------------------------------ -! river channel height and velocity diagnostic -! - IF(ZVELCOEF==0.0)THEN - PHS(I,J)=0.0 - ELSE - PHS(I,J)=PSURF_STO2(I,J)/(XRHOLW_T*PLEN(I,J)*PWIDTH(I,J)) - ENDIF -! - PVEL(I,J)=DIAGVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),PHS(I,J)) -! -! ------------------------------------------------------------------- -! supress numerical artifacs -! - ZRECUP=ZRECUP+MIN(PFLOOD_STO2(I,J),0.0) - PFLOOD_STO2(I,J)=MAX(PFLOOD_STO2(I,J),0.0) -! - PSURF_STO2(I,J) =PSURF_STO2(I,J)+ZRECUP -! -! ------------------------------------------------------------------- - IF(PSURF_STO2(I,J)<0.0)THEN - WRITE(KLUOUT,*)'-------------------------------------------------------' - WRITE(KLUOUT,*)'TRIP_SURFACE_WATER_FLOOD : Stream reservoir is negatif ' - WRITE(KLUOUT,*)' when supress numerical artifacs ' - WRITE(KLUOUT,*)'Stream reservoir (kg/m²) :',PSURF_STO2 (I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Recup (kg/m²) :',ZRECUP/PAREA(I,J) - WRITE(KLUOUT,*)'Flood reservoir in (kg/m²) :',ZFLOOD_STO/PAREA(I,J) - WRITE(KLUOUT,*)'Flood reservoir end (kg/m²) :',PFLOOD_STO2(I,J)/PAREA(I,J) - WRITE(KLUOUT,*)'Longitude index :',I,'Latitude index :',J - WRITE(KLUOUT,*)'Perhaps TRIP time step too big : ',PTSTEP - WRITE(KLUOUT,*)'-------------------------------------------------------' - STOP - ENDIF -! -! ------------------------------------------------------------------ -! flood diag using flood variables at t and stream variables at t+dt -! - PQFR(I,J)= MAX(0.0,ZFOUT) - PQRF(I,J)=ABS(MIN(0.0,ZFOUT)) -! - IF(PHC(I,J)>0.0)THEN - PHSF(I,J)=PHS(I,J)-PHC(I,J)-PHFLOOD(I,J) - ENDIF -! - CALL VELFLOOD(PHS(I,J),PFFLOOD(I,J),PHFLOOD(I,J),PFLOOD_LEN(I,J),PWFLOOD(I,J),PHC(I,J),& - PN_FLOOD(I,J),PWIDTH(I,J),ZDELTA,PVFIN(I,J),PVFOUT(I,J) ) -! - IF(PHFLOOD(I,J)>0.0)THEN - PVFOUT(I,J)=ZDELTA/PTSTEP+(1.0-ZDELTA)*PVFOUT(I,J) - ENDIF -! -! ------------------------------------------------------------------ -! Final flood update -! - CALL FLOOD_UPDATE(PTAB_F(I,J,1:KTABMAX(I,J)),PTAB_H(I,J,1:KTABMAX(I,J)),PTAB_VF(I,J,1:KTABMAX(I,J)), & - PAREA(I,J),PFLOOD_STO2(I,J),ZHF,ZFF,ZLF,ZWF) -! - PFFLOOD (I,J)=ZFF - PHFLOOD (I,J)=ZHF - PFLOOD_LEN(I,J)=ZLF - PWFLOOD (I,J)=ZWF -! -! ------------------------------------------------------------------ -! budget calculation - PSSTO_ALL = PSSTO_ALL + PSURF_STO(I,J) - PSSTO2_ALL = PSSTO2_ALL + PSURF_STO2(I,J) - ZRECUP - PSIN_ALL = PSIN_ALL + ZQIN(I,J) - PSOUT_ALL = PSOUT_ALL + PSOUT(I,J) - PVEL_ALL = PVEL_ALL + PVEL(I,J) * PAREA(I,J) - PHS_ALL = PHS_ALL + PHS (I,J) * PAREA(I,J) -! - IF(PHC(I,J)>0.0)THEN - PSFLOOD_ALL= PSFLOOD_ALL+ ZFOUT - PFSTO_ALL = PFSTO_ALL + PFLOOD_STO(I,J) - PFSTO2_ALL = PFSTO2_ALL + PFLOOD_STO2(I,J) + ZRECUP - PFIN_ALL = PFIN_ALL + PQRF(I,J) - PFOUT_ALL = PFOUT_ALL + PQFR(I,J) - PSOURCE_ALL= PSOURCE_ALL+ PSOURCE(I,J) - ENDIF -! -! ------------------------------------------------------------------ - IF(KGRCN(I,J)>=1.AND.KGRCN(I,J)<=8)THEN - ZQIN(KNEXTX(I,J),KNEXTY(I,J))=ZQIN(KNEXTX(I,J),KNEXTY(I,J))+PSOUT(I,J) - ENDIF -! - ENDDO - ENDDO -ENDDO -! -PVEL_ALL = PVEL_ALL / ZAREA -PHS_ALL = PHS_ALL / ZAREA -! -!------------------------------------------------------------------------------- -IF (LHOOK) CALL DR_HOOK('MODI_TRIP_SURFACE_WATER_FLOOD:TRIP_SURFACE_WATER_FLOOD',1,ZHOOK_HANDLE) -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE TRIP_SURFACE_WATER_FLOOD diff --git a/src/SURFEX/trip_surface_water_velvar.F90 b/src/SURFEX/trip_surface_water_velvar.F90 deleted file mode 100644 index 94bf5145a02272505fc23540de302bef8113195a..0000000000000000000000000000000000000000 --- a/src/SURFEX/trip_surface_water_velvar.F90 +++ /dev/null @@ -1,231 +0,0 @@ -! ######### - SUBROUTINE TRIP_SURFACE_WATER_VELVAR (PTSTEP,KGRCN,KSEQ,KNEXTX,KNEXTY,KSEQMAX, & - PLEN,PSLOPEBED,PWIDTH,PN,PRUNOFF,PSURF_STO, & - PSURF_STO2,PGOUT,PSIN,PSOUT,PVEL,PHS,PAREA, & - PSSTO_ALL,PSSTO2_ALL,PSIN_ALL,PDRUN_ALL, & - PSOUT_ALL,PVEL_ALL,PHS_ALL ) -! ################################################################ -! -!!**** *TRIP_SURFACE_WATER_VELVAR* -!! -!! PURPOSE -!! ------- -! -! Calculate the river storage in the next time step based on the storage -! of current time step using the Manning equation and the Arora (1999) -! variable flow velocity scheme. -! Numérical method = RK Ordre 4 Rang 4: -! -! Point de depart : X0(t) =X(t) -! point intermediaire K1: X1(t+dt/2)=X(t) + dt/2 * F(X0(t)) -! point intermediaire K2: X2(t+dt/2)=X(t) + dt/2 * F(X1(t+dt/2)) -! point intermediaire K3: X3(t+dt) =X(t) + dt * F(X2(t+dt/2)) -! point final K4: F(X3(t+dt)) -! -! point Final: X(t+dt)=X(t)+dt/6*(F(X0(t))+2*F(X1(t+dt/2))+2*F(X2(t+dt/2))+F(X3(t+dt))) -! -! -!!** METHOD -!! ------ -! -! RK Ordre 4 Rang 4 -! -!! EXTERNAL -!! -------- -! -! None -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! B. Decharme -!! -!! MODIFICATIONS -!! ------------- -!! Original 01/02/09 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_TRIP_PAR, ONLY : XRHOLW_T -! -USE MODE_TRIP_FUNCTION -! -IMPLICIT NONE -! -!* 0.1 declarations of arguments -! -REAL, INTENT(IN) :: PTSTEP ! Trip timestep value (10800s) -! -INTEGER, DIMENSION(:,:),INTENT(IN) :: KGRCN ! Flow direction (1->8) -INTEGER, DIMENSION(:,:),INTENT(IN) :: KSEQ ! River sequence -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTX ! returns x and y point -INTEGER, DIMENSION(:,:),INTENT(IN) :: KNEXTY ! of destination grid: -! 8 1 2 -! 7 3 -! 6 5 4 -! -INTEGER, INTENT(IN) :: KSEQMAX ! maximum down flow -! -REAL,DIMENSION(:,:), INTENT(IN) :: PLEN ! river length [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PSLOPEBED ! river bed slopes [m/m] -REAL,DIMENSION(:,:), INTENT(IN) :: PWIDTH ! river widths [m] -REAL,DIMENSION(:,:), INTENT(IN) :: PN ! Manning roughness coeficient [-] (0.03 to 0.065) -REAL,DIMENSION(:,:), INTENT(IN) :: PAREA ! Grid-cell area [m²] -REAL,DIMENSION(:,:), INTENT(IN) :: PRUNOFF ! Surface runoff from ISBA [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PGOUT ! ground water outflow [kg/s] -REAL,DIMENSION(:,:), INTENT(IN) :: PSURF_STO ! river channel storage at t [kg] -! -REAL,DIMENSION(:,:), INTENT(INOUT) :: PSURF_STO2 ! river channel storage at t+1 [kg] -! -REAL,DIMENSION(:,:), INTENT(OUT) :: PHS ! river channel height [m] -REAL,DIMENSION(:,:), INTENT(OUT) :: PSIN ! Inflow to the surface river reservoir [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PSOUT ! Outflow from the surface river reservoir [kg/s] -REAL,DIMENSION(:,:), INTENT(OUT) :: PVEL ! River channel velocity [m/s] -! -REAL, INTENT(OUT) :: PSSTO_ALL,PSSTO2_ALL,PSIN_ALL, & - PDRUN_ALL,PSOUT_ALL,PVEL_ALL, & - PHS_ALL -! Final budget variable -! -!* 0.2 declarations of local variables -! -REAL, DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZQIN -! -REAL :: ZVELCOEF,ZQOUT,ZAREA, & - ZTSTEP,ZSTOMAX -! -REAL :: ZS1,ZS2,ZS3 -REAL :: ZK1,ZK2,ZK3,ZK4 -! -INTEGER :: ILON, ILAT, I, J, ISEQ -REAL(KIND=JPRB) :: ZHOOK_HANDLE -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('MODI_TRIP_SURFACE_WATER_VELVAR:TRIP_SURFACE_WATER_VELVAR',0,ZHOOK_HANDLE) -ILON = SIZE(PLEN,1) -ILAT = SIZE(PLEN,2) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! -PSURF_STO2 (:,:) = 0.0 -PSIN (:,:) = 0.0 -PSOUT (:,:) = 0.0 -PVEL (:,:) = 0.0 -ZQIN (:,:) = 0.0 -! -PSSTO_ALL = 0.0 -PSSTO2_ALL = 0.0 -PSIN_ALL = 0.0 -PDRUN_ALL = 0.0 -PSOUT_ALL = 0.0 -PVEL_ALL = 0.0 -PHS_ALL=0.0 -! -ZAREA=SUM(PAREA,PLEN>0.0) -! -!------------------------------------------------------------------------------- -!Sequence loop -! -DO ISEQ=1,KSEQMAX - DO J=1,ILAT - DO I=1,ILON -! - IF(KSEQ(I,J)/=ISEQ.OR.KSEQ(I,J)==0)CYCLE -! -! --------------------------------------------------------------------- -! inflow calculation -! - ZQIN(I,J)=ZQIN(I,J)+PRUNOFF(I,J)+PGOUT(I,J) - PDRUN_ALL=PDRUN_ALL+PRUNOFF(I,J)+PGOUT(I,J) -! - PSIN(I,J)=ZQIN(I,J) -! - IF(PN(I,J)>0.0)THEN - ZVELCOEF=SQRT(PSLOPEBED(I,J))/PN(I,J) - ELSE - ZVELCOEF=0.0 - ENDIF -! -! ------------------------------------------------------------------ -! Runge Kutta 4 -! ------------------------------------------------------------------ -! - ZTSTEP=PTSTEP/2.0 - ZK1=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),PSURF_STO(I,J),PSIN(I,J)) - ZS1=PSURF_STO(I,J)+ZTSTEP*ZK1 -! - ZTSTEP=PTSTEP/2.0 - ZK2=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS1,PSIN(I,J)) - ZS2=PSURF_STO(I,J)+ZTSTEP*ZK2 -! - ZTSTEP=PTSTEP - ZK3=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS2,PSIN(I,J)) - ZS3=PSURF_STO(I,J)+ZTSTEP*ZK3 -! - ZK4=FUNCVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),ZS3,PSIN(I,J)) -! - ZTSTEP=PTSTEP/6.0 - PSURF_STO2(I,J)=PSURF_STO(I,J)+ZTSTEP*(ZK1+2.0*ZK2+2.0*ZK3+ZK4) -! -! ------------------------------------------------------------------- -! supress numerical artifacs - ZSTOMAX=ZQIN(I,J)*PTSTEP+PSURF_STO(I,J) -! - PSURF_STO2(I,J)=MIN(ZSTOMAX,PSURF_STO2(I,J)) -! -! ------------------------------------------------------------------ -! river channel outflow calculation and supress numerical artifacs -! - ZQOUT = (PSURF_STO(I,J)-PSURF_STO2(I,J))/PTSTEP+ZQIN(I,J) - PSOUT(I,J) = MAX(ZQOUT,0.0) -! - PSURF_STO2(I,J) = PSURF_STO2(I,J) + (PSOUT(I,J)-ZQOUT) -! -! ------------------------------------------------------------------ -! river channel height and velocity diagnostic -! - IF(ZVELCOEF==0.0)THEN - PHS(I,J)=0.0 - ELSE - PHS(I,J)=PSURF_STO2(I,J)/(XRHOLW_T*PLEN(I,J)*PWIDTH(I,J)) - ENDIF -! - PVEL(I,J)=DIAGVEL(ZVELCOEF,PLEN(I,J),PWIDTH(I,J),PHS(I,J)) -! -! ------------------------------------------------------------------ -! budget calculation - PSSTO_ALL = PSSTO_ALL + PSURF_STO (I,J) - PSSTO2_ALL = PSSTO2_ALL + PSURF_STO2(I,J) - PSIN_ALL = PSIN_ALL + ZQIN (I,J) - PSOUT_ALL = PSOUT_ALL + PSOUT (I,J) - PVEL_ALL = PVEL_ALL + PVEL (I,J) * PAREA(I,J) - PHS_ALL = PHS_ALL + PHS (I,J) * PAREA(I,J) -! -! ------------------------------------------------------------------ - IF(KGRCN(I,J)>=1.AND.KGRCN(I,J)<=8)THEN - ZQIN(KNEXTX(I,J),KNEXTY(I,J))=ZQIN(KNEXTX(I,J),KNEXTY(I,J))+PSOUT(I,J) - ENDIF -! - ENDDO - ENDDO -ENDDO -! -PVEL_ALL = PVEL_ALL / ZAREA -PHS_ALL = PHS_ALL / ZAREA -! -IF (LHOOK) CALL DR_HOOK('MODI_TRIP_SURFACE_WATER_VELVAR:TRIP_SURFACE_WATER_VELVAR',1,ZHOOK_HANDLE) -! -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- -END SUBROUTINE TRIP_SURFACE_WATER_VELVAR