SURFEX v7.3
General documentation of Surfex
|
00001 ! ############################################################# 00002 SUBROUTINE INIT_SEA_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_SEA_n* - routine to initialize SEA 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 01/2003 00038 !------------------------------------------------------------------------------- 00039 ! 00040 !* 0. DECLARATIONS 00041 ! ------------ 00042 ! 00043 USE MODD_SURF_ATM_n, ONLY : CSEA 00044 USE MODD_CSTS, ONLY : XTT 00045 ! 00046 ! 00047 ! 00048 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00049 USE PARKIND1 ,ONLY : JPRB 00050 ! 00051 USE MODI_INIT_IDEAL_FLUX 00052 ! 00053 USE MODI_INIT_SEAFLUX_n 00054 ! 00055 IMPLICIT NONE 00056 ! 00057 !* 0.1 Declarations of arguments 00058 ! ------------------------- 00059 ! 00060 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00061 CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize 00062 INTEGER, INTENT(IN) :: KI ! number of points 00063 INTEGER, INTENT(IN) :: KSV ! number of scalars 00064 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands 00065 CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables 00066 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3) 00067 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density 00068 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle 00069 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock) 00070 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band 00071 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band 00072 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band 00073 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity 00074 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature 00075 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC) 00076 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC) 00077 INTEGER, INTENT(IN) :: KDAY ! current day (UTC) 00078 REAL, INTENT(IN) :: PTIME ! current time since 00079 ! midnight (UTC, s) 00080 ! 00081 CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name 00082 CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type 00083 CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' 00084 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00085 ! 00086 ! 00087 !* 0.2 Declarations of local variables 00088 ! ------------------------------- 00089 ! 00090 !------------------------------------------------------------------------------- 00091 ! 00092 !* 2. Selection of surface scheme 00093 ! --------------------------- 00094 ! 00095 IF (LHOOK) CALL DR_HOOK('INIT_SEA_N',0,ZHOOK_HANDLE) 00096 IF (CSEA=='NONE ') THEN 00097 PDIR_ALB=0. 00098 PSCA_ALB=0. 00099 PEMIS =1. 00100 PTSRAD =XTT 00101 ELSE IF (CSEA=='FLUX ') THEN 00102 CALL INIT_IDEAL_FLUX(HPROGRAM,HINIT,KI,KSV,KSW,HSV,PCO2,PRHOA, & 00103 PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & 00104 PEMIS,PTSRAD,'OK' ) 00105 ELSE IF (CSEA=='SEAFLX') THEN 00106 CALL INIT_SEAFLUX_n(HPROGRAM,HINIT,KI,KSV,KSW,HSV,PCO2,PRHOA, & 00107 PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & 00108 PEMIS,PTSRAD, & 00109 KYEAR,KMONTH,KDAY,PTIME,HATMFILE,HATMFILETYPE,& 00110 'OK' ) 00111 END IF 00112 IF (LHOOK) CALL DR_HOOK('INIT_SEA_N',1,ZHOOK_HANDLE) 00113 ! 00114 ! 00115 !------------------------------------------------------------------------------- 00116 ! 00117 END SUBROUTINE INIT_SEA_n