SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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, DGU, UG, U, SM, DGL, &
7  hprogram,hinit, &
8  ki,ksv,ksw, &
9  hsv,pco2,prhoa, &
10  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
11  pemis,ptsrad,ptsurf, &
12  kyear, kmonth,kday, ptime, &
13  hatmfile,hatmfiletype, &
14  htest )
15 ! #############################################################
16 !
17 !!**** *INIT_SEA_n* - routine to initialize SEA
18 !!
19 !! PURPOSE
20 !! -------
21 !!
22 !!** METHOD
23 !! ------
24 !!
25 !! EXTERNAL
26 !! --------
27 !!
28 !!
29 !! IMPLICIT ARGUMENTS
30 !! ------------------
31 !!
32 !! REFERENCE
33 !! ---------
34 !!
35 !!
36 !! AUTHOR
37 !! ------
38 !! V. Masson *Meteo France*
39 !!
40 !! MODIFICATIONS
41 !! -------------
42 !! Original 01/2003
43 !! B. Decharme 04/2013 new coupling variables
44 !-------------------------------------------------------------------------------
45 !
46 !* 0. DECLARATIONS
47 ! ------------
48 !
49 !
51 !
55 USE modd_surf_atm_n, ONLY : surf_atm_t
56 !
58 !
59 USE modd_csts, ONLY : xtt
60 !
61 !
62 USE yomhook ,ONLY : lhook, dr_hook
63 USE parkind1 ,ONLY : jprb
64 !
65 USE modi_init_ideal_flux
66 !
67 USE modi_init_seaflux_n
68 !
69 IMPLICIT NONE
70 !
71 !* 0.1 Declarations of arguments
72 ! -------------------------
73 !
74 !
75 TYPE(data_cover_t), INTENT(INOUT) :: dtco
76 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
77 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
78 TYPE(surf_atm_t), INTENT(INOUT) :: u
79 TYPE(seaflux_model_t), INTENT(INOUT) :: sm
80 TYPE(diag_ideal_t), INTENT(INOUT) :: dgl
81 !
82  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
83  CHARACTER(LEN=3), INTENT(IN) :: hinit ! choice of fields to initialize
84 INTEGER, INTENT(IN) :: ki ! number of points
85 INTEGER, INTENT(IN) :: ksv ! number of scalars
86 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
87  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: hsv ! name of all scalar variables
88 REAL, DIMENSION(KI), INTENT(IN) :: pco2 ! CO2 concentration (kg/m3)
89 REAL, DIMENSION(KI), INTENT(IN) :: prhoa ! air density
90 REAL, DIMENSION(KI), INTENT(IN) :: pzenith ! solar zenithal angle
91 REAL, DIMENSION(KI), INTENT(IN) :: pazim ! solar azimuthal angle (rad from N, clock)
92 REAL, DIMENSION(KSW), INTENT(IN) :: psw_bands ! middle wavelength of each band
93 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: pdir_alb ! direct albedo for each band
94 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: psca_alb ! diffuse albedo for each band
95 REAL, DIMENSION(KI), INTENT(OUT) :: pemis ! emissivity
96 REAL, DIMENSION(KI), INTENT(OUT) :: ptsrad ! radiative temperature
97 REAL, DIMENSION(KI), INTENT(OUT) :: ptsurf ! surface effective temperature (K)
98 INTEGER, INTENT(IN) :: kyear ! current year (UTC)
99 INTEGER, INTENT(IN) :: kmonth ! current month (UTC)
100 INTEGER, INTENT(IN) :: kday ! current day (UTC)
101 REAL, INTENT(IN) :: ptime ! current time since
102  ! midnight (UTC, s)
103 !
104  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! atmospheric file name
105  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! atmospheric file type
106  CHARACTER(LEN=2), INTENT(IN) :: htest ! must be equal to 'OK'
107 REAL(KIND=JPRB) :: zhook_handle
108 !
109 !
110 !* 0.2 Declarations of local variables
111 ! -------------------------------
112 !
113 !-------------------------------------------------------------------------------
114 !
115 !* 2. Selection of surface scheme
116 ! ---------------------------
117 !
118 IF (lhook) CALL dr_hook('INIT_SEA_N',0,zhook_handle)
119 IF (u%CSEA=='NONE ') THEN
120  pdir_alb=0.
121  psca_alb=0.
122  pemis =1.
123  ptsrad =xtt
124  ptsurf =xtt
125 ELSE IF (u%CSEA=='FLUX ') THEN
126  CALL init_ideal_flux(dgl, dgu%LREAD_BUDGETC, &
127  hprogram,hinit,ki,ksv,ksw,hsv,pco2,prhoa, &
128  pzenith,pazim,psw_bands,pdir_alb,psca_alb, &
129  pemis,ptsrad,ptsurf,'OK' )
130 ELSE IF (u%CSEA=='SEAFLX') THEN
131  CALL init_seaflux_n(dtco, dgu, ug, u, 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_seaflux_n(DTCO, DGU, UG, U, SM, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
subroutine init_ideal_flux(DGL, OREAD_BUDGETC, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, HTEST)
subroutine init_sea_n(DTCO, DGU, UG, U, SM, DGL, HPROGRAM, HINIT, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)
Definition: init_sean.F90:6