SURFEX v7.3
General documentation of Surfex
|
00001 !------------------------------------------------------------------------------- 00002 ! ############################################################# 00003 SUBROUTINE INIT_SURF_TOPD(HPROGRAM,KI) 00004 ! ############################################################# 00005 ! 00006 !!**** *INIT_SURF_TOPD* - routine to initialize variables needed for coupling with Topmodel 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 !! 00011 !!** METHOD 00012 !! ------ 00013 !! The routine open and read the namelists NAM_COUPL_TOPD and NAM_TOPD, 00014 !! calculates the number of catchments concerned, the different time step 00015 !! variables and all the variables nedded for coupling with Topmodel. 00016 !! 00017 !! EXTERNAL 00018 !! -------- 00019 !! 00020 !! 00021 !! IMPLICIT ARGUMENTS 00022 !! ------------------ 00023 !! 00024 !! REFERENCE 00025 !! --------- 00026 !! 00027 !! 00028 !! AUTHOR 00029 !! ------ 00030 !! B. Vincendon *Meteo France* 00031 !! 00032 !! MODIFICATIONS 00033 !! ------------- 00034 !! Original 11/2006 00035 !! Modif 04/2007: Arguments PTOPD_STEP,KNB_TOPD_STEP become module 00036 !! variables from MODD_TOPDDYN 00037 !------------------------------------------------------------------------------- 00038 ! 00039 !* 0. DECLARATIONS 00040 ! ------------ 00041 ! 00042 USE MODD_SURFEX_MPI, ONLY : NPROC 00043 USE MODD_SURFEX_OMP, ONLY : NBLOCKTOT 00044 ! 00045 USE MODD_TOPODYN, ONLY :CCAT, XSPEEDR, XSPEEDH, NNCAT, & 00046 XRTOP_D2, XSPEEDG 00047 USE MODD_COUPLING_TOPD, ONLY : LCOUPL_TOPD, NNB_TOPD, LBUDGET_TOPD 00048 ! 00049 USE MODD_ISBA_n, ONLY : TSNOW 00050 ! 00051 USE MODI_GET_LUOUT 00052 USE MODI_ABOR1_SFX 00053 ! 00054 USE MODI_INIT_TOPD 00055 USE MODI_INIT_COUPL_TOPD 00056 USE MODI_INIT_BUDGET_COUPL_ROUT 00057 ! 00058 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00059 USE PARKIND1 ,ONLY : JPRB 00060 ! 00061 IMPLICIT NONE 00062 ! 00063 !* 0.1 Declarations of arguments 00064 ! ------------------------- 00065 ! 00066 CHARACTER(LEN=*), INTENT(IN) :: HPROGRAM ! 00067 INTEGER, INTENT(IN) :: KI ! grid dimension 00068 ! 00069 INTEGER :: ILUOUT 00070 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00071 !------------------------------------------------------------------------------- 00072 IF (LHOOK) CALL DR_HOOK('INIT_SURF_TOPD',0,ZHOOK_HANDLE) 00073 ! 00074 IF (LCOUPL_TOPD) THEN 00075 IF (NPROC>1) CALL ABOR1_SFX('INIT_SURF_TOPD: TOPD CANNOT RUN WITH MORE THAN 1 MPI TASK') 00076 IF (NBLOCKTOT>1) CALL ABOR1_SFX("INIT_SURF_TOPD: TOPD CANNOT RUN WITH NUMEROUS OPENMP BLOCKS") 00077 IF (TSNOW%SCHEME/='3-L') & 00078 CALL ABOR1_SFX("INIT_SURF_TOPD: coupling with topmodel only runs with TSNOW%SCHEME=3-L") 00079 ENDIF 00080 ! 00081 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00082 ! 00083 ! 1. Reads the namelists 00084 ! -------------------- 00085 ! 00086 WRITE(ILUOUT,*) 'Debut init_surf_topo_n' 00087 ! 00088 IF (LCOUPL_TOPD) THEN 00089 ! 00090 ! 3. Initialises variables specific to Topmodel 00091 ! ------------------------------------------- 00092 WRITE(ILUOUT,*) 'NNCAT',NNCAT 00093 ! 00094 CALL INIT_TOPD(HPROGRAM) 00095 ! 00096 ! 4. Initialises variables nedded for coupling with Topmodel 00097 ! ------------------------------------------------------- 00098 ! 00099 CALL INIT_COUPL_TOPD(HPROGRAM,KI) 00100 ! 00101 WRITE(ILUOUT,*) 'Couplage avec TOPMODEL active' 00102 ! 00103 IF (LBUDGET_TOPD) CALL INIT_BUDGET_COUPL_ROUT(KI) 00104 ! 00105 ELSE 00106 ! 00107 WRITE(ILUOUT,*) 'Pas de couplage avec TOPMODEL' 00108 ! 00109 ENDIF 00110 ! 00111 IF (LHOOK) CALL DR_HOOK('INIT_SURF_TOPD',1,ZHOOK_HANDLE) 00112 ! 00113 END SUBROUTINE INIT_SURF_TOPD