SURFEX v8.1
General documentation of Surfex
init_sean.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #############################################################
6  SUBROUTINE init_sea_n (DTCO, OREAD_BUDGETC, UG, U, GCP, SM, &
7  DGO, DL, DLC, HPROGRAM,HINIT,KI,KSV,KSW, &
8  HSV,PCO2,PRHOA, &
9  PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, &
10  PEMIS,PTSRAD,PTSURF, &
11  KYEAR, KMONTH,KDAY, PTIME, &
12  HATMFILE,HATMFILETYPE, &
13  HTEST )
14 ! #############################################################
15 !
16 !!**** *INIT_SEA_n* - routine to initialize SEA
17 !!
18 !! PURPOSE
19 !! -------
20 !!
21 !!** METHOD
22 !! ------
23 !!
24 !! EXTERNAL
25 !! --------
26 !!
27 !!
28 !! IMPLICIT ARGUMENTS
29 !! ------------------
30 !!
31 !! REFERENCE
32 !! ---------
33 !!
34 !!
35 !! AUTHOR
36 !! ------
37 !! V. Masson *Meteo France*
38 !!
39 !! MODIFICATIONS
40 !! -------------
41 !! Original 01/2003
42 !! B. Decharme 04/2013 new coupling variables
43 !-------------------------------------------------------------------------------
44 !
45 !* 0. DECLARATIONS
46 ! ------------
47 !
49 !
52 USE modd_surf_atm_n, ONLY : surf_atm_t
54 !
56 !
57 USE modd_csts, ONLY : xtt
58 !
59 !
60 USE yomhook ,ONLY : lhook, dr_hook
61 USE parkind1 ,ONLY : jprb
62 !
63 USE modi_init_ideal_flux
64 !
65 USE modi_init_seaflux_n
66 !
67 IMPLICIT NONE
68 !
69 !* 0.1 Declarations of arguments
70 ! -------------------------
71 !
72 !
73 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
74 LOGICAL, INTENT(IN) :: OREAD_BUDGETC
75 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
76 TYPE(surf_atm_t), INTENT(INOUT) :: U
77 TYPE(grid_conf_proj_t),INTENT(INOUT) :: GCP
78 TYPE(seaflux_model_t), INTENT(INOUT) :: SM
79 TYPE(diag_options_t), INTENT(INOUT) :: DGO
80 TYPE(diag_t), INTENT(INOUT) :: DL
81 TYPE(diag_t), INTENT(INOUT) :: DLC
82 !
83  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
84  CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize
85 INTEGER, INTENT(IN) :: KI ! number of points
86 INTEGER, INTENT(IN) :: KSV ! number of scalars
87 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
88  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables
89 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3)
90 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density
91 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle
92 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock)
93 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band
94 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band
95 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band
96 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity
97 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature
98 REAL, DIMENSION(KI), INTENT(OUT) :: PTSURF ! surface effective temperature (K)
99 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC)
100 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC)
101 INTEGER, INTENT(IN) :: KDAY ! current day (UTC)
102 REAL, INTENT(IN) :: PTIME ! current time since
103  ! midnight (UTC, s)
104 !
105  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name
106  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type
107  CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK'
108 REAL(KIND=JPRB) :: ZHOOK_HANDLE
109 !
110 !
111 !* 0.2 Declarations of local variables
112 ! -------------------------------
113 !
114 !-------------------------------------------------------------------------------
115 !
116 !* 2. Selection of surface scheme
117 ! ---------------------------
118 !
119 IF (lhook) CALL dr_hook('INIT_SEA_N',0,zhook_handle)
120 IF (u%CSEA=='NONE ') THEN
121  pdir_alb=0.
122  psca_alb=0.
123  pemis =1.
124  ptsrad =xtt
125  ptsurf =xtt
126 ELSE IF (u%CSEA=='FLUX ') THEN
127  CALL init_ideal_flux(dgo, dl, dlc, oread_budgetc, &
128  hprogram,hinit,ki,ksv,ksw,hsv,pdir_alb,psca_alb, &
129  pemis,ptsrad,ptsurf,'OK' )
130 ELSE IF (u%CSEA=='SEAFLX') THEN
131  CALL init_seaflux_n(dtco, oread_budgetc, ug, u, gcp, sm, &
132  hprogram,hinit,ki,ksv,ksw,hsv,pco2,prhoa, &
133  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
134  pemis,ptsrad,ptsurf, &
135  kyear,kmonth,kday,ptime,hatmfile,hatmfiletype,&
136  'OK' )
137 END IF
138 IF (lhook) CALL dr_hook('INIT_SEA_N',1,zhook_handle)
139 !
140 !
141 !-------------------------------------------------------------------------------
142 !
143 END SUBROUTINE init_sea_n
subroutine init_sea_n(DTCO, OREAD_BUDGETC, UG, U, GCP, SM, DGO, DL, DLC, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA,
Definition: init_sean.F90:9
subroutine init_ideal_flux(DGO, D, DC, OREAD_BUDGETC, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, HTEST)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
real, save xtt
Definition: modd_csts.F90:66
subroutine init_seaflux_n(DTCO, OREAD_BUDGETC, UG, U, GCP, SM, HPROGRAM, HINIT, KI, KSV, KSW,