SURFEX v7.3
General documentation of Surfex
|
00001 ! ############################################################# 00002 SUBROUTINE INIT_TOWN_n (HPROGRAM,HINIT, & 00003 KI,KSV,KSW, & 00004 HSV,PCO2,PRHOA, & 00005 PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & 00006 PEMIS,PTSRAD, & 00007 KYEAR, KMONTH,KDAY, PTIME, & 00008 HATMFILE,HATMFILETYPE, & 00009 HTEST ) 00010 ! ############################################################# 00011 ! 00012 !!**** *INIT_TOWN_n* - chooses initialization routine for towns 00013 !! 00014 !! PURPOSE 00015 !! ------- 00016 !! 00017 !!** METHOD 00018 !! ------ 00019 !! 00020 !! EXTERNAL 00021 !! -------- 00022 !! 00023 !! 00024 !! IMPLICIT ARGUMENTS 00025 !! ------------------ 00026 !! 00027 !! REFERENCE 00028 !! --------- 00029 !! 00030 !! 00031 !! AUTHOR 00032 !! ------ 00033 !! V. Masson *Meteo France* 00034 !! 00035 !! MODIFICATIONS 00036 !! ------------- 00037 !! Original 27/09/96 00038 !! V.Masson 18/08/97 call to fmread directly with dates and strings 00039 !! V.Masson 15/03/99 new PGD treatment with COVER types 00040 ! F.Solmon 06/00 adaptation for patch approach 00041 !------------------------------------------------------------------------------- 00042 ! 00043 !* 0. DECLARATIONS 00044 ! ------------ 00045 ! 00046 USE MODD_SURF_ATM_n, ONLY : CTOWN 00047 USE MODD_CSTS, ONLY : XTT 00048 ! 00049 ! 00050 ! 00051 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00052 USE PARKIND1 ,ONLY : JPRB 00053 ! 00054 USE MODI_INIT_IDEAL_FLUX 00055 ! 00056 USE MODI_INIT_TEB_n 00057 ! 00058 IMPLICIT NONE 00059 ! 00060 !* 0.1 Declarations of arguments 00061 ! ------------------------- 00062 ! 00063 ! 00064 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00065 CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize 00066 INTEGER, INTENT(IN) :: KI ! number of points 00067 INTEGER, INTENT(IN) :: KSV ! number of scalars 00068 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands 00069 CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables 00070 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3) 00071 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density 00072 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle 00073 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock) 00074 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band 00075 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band 00076 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band 00077 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity 00078 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature 00079 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC) 00080 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC) 00081 INTEGER, INTENT(IN) :: KDAY ! current day (UTC) 00082 REAL, INTENT(IN) :: PTIME ! current time since 00083 ! midnight (UTC, s) 00084 ! 00085 CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name 00086 CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type 00087 CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' 00088 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00089 ! 00090 ! 00091 ! 00092 !* 0.2 Declarations of local variables 00093 ! ------------------------------- 00094 ! 00095 !------------------------------------------------------------------------------- 00096 ! 00097 !* 2. Selection of surface scheme 00098 ! --------------------------- 00099 ! 00100 IF (LHOOK) CALL DR_HOOK('INIT_TOWN_N',0,ZHOOK_HANDLE) 00101 IF (CTOWN=='NONE ') THEN 00102 PDIR_ALB=0. 00103 PSCA_ALB=0. 00104 PEMIS =1. 00105 PTSRAD =XTT 00106 ELSE IF (CTOWN=='FLUX ') THEN 00107 CALL INIT_IDEAL_FLUX(HPROGRAM,HINIT,KI,KSV,KSW,HSV,PCO2,PRHOA, & 00108 PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & 00109 PEMIS,PTSRAD,'OK' ) 00110 ELSE IF (CTOWN=='TEB ') THEN 00111 CALL INIT_TEB_n(HPROGRAM,HINIT, & 00112 KI,KSV,KSW,HSV,PCO2,PRHOA, & 00113 PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & 00114 PEMIS,PTSRAD, & 00115 KYEAR,KMONTH,KDAY,PTIME,HATMFILE,HATMFILETYPE,& 00116 'OK' ) 00117 END IF 00118 IF (LHOOK) CALL DR_HOOK('INIT_TOWN_N',1,ZHOOK_HANDLE) 00119 ! 00120 !------------------------------------------------------------------------------- 00121 END SUBROUTINE INIT_TOWN_n