SURFEX v8.1
General documentation of Surfex
prep_surf_atm.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 prep_surf_atm (YSC, HPROGRAM,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,YDCTL)
7 ! #################################################################################
8 !
9 !!**** *PREP_SURF_ATM* - driver for surface fields preparation
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !!** METHOD
15 !! ------
16 !!
17 !! REFERENCE
18 !! ---------
19 !!
20 !!
21 !! AUTHOR
22 !! ------
23 !! V. Masson
24 !!
25 !! MODIFICATIONS
26 !! -------------
27 !! Original 01/2004
28 !! P. Le Moigne 10/2005, Phasage Arome
29 !! P. Marguinaud10/2014, Support for a 2-part PREP
30 !!------------------------------------------------------------------
31 !
32 USE modd_surfex_n, ONLY : surfex_t
33 !
34 USE mode_prep_ctl, ONLY : prep_ctl
35 !
36 USE modi_prep_nature
37 USE modi_prep_sea
38 USE modi_prep_inland_water
39 USE modi_prep_town
40 !
42 !
43 USE yomhook ,ONLY : lhook, dr_hook
44 USE parkind1 ,ONLY : jprb
45 !
46 USE modi_surf_version
47 !
48 IMPLICIT NONE
49 !
50 !* 0.1 declarations of arguments
51 !
52 TYPE(surfex_t), INTENT(INOUT) :: YSC
53 type(prep_ctl), INTENT(INOUT) :: ydctl
54 !
55  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
56  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! name of the Atmospheric file
57  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file
58  CHARACTER(LEN=28), INTENT(IN) :: HPGDFILE ! name of the Atmospheric file
59  CHARACTER(LEN=6), INTENT(IN) :: HPGDFILETYPE! type of the Atmospheric file
60 !
61 !* 0.2 declarations of local variables
62  CHARACTER(LEN=28) :: YATMFILE ! name of the Atmospheric file
63  CHARACTER(LEN=6) :: YATMFILETYPE! type of the Atmospheric file
64  CHARACTER(LEN=28) :: YPGDFILE ! name of the Atmospheric file
65  CHARACTER(LEN=6) :: YPGDFILETYPE! type of the Atmospheric file
66 REAL(KIND=JPRB) :: ZHOOK_HANDLE
67 
68 !
69 !-------------------------------------------------------------------------------------
70 IF (lhook) CALL dr_hook('PREP_SURF_ATM',0,zhook_handle)
71  CALL surf_version
72 !-------------------------------------------------------------------------------------
73 !
74 IF ( len_trim(hatmfile)>0 ) THEN
75  yatmfile=hatmfile
76 ELSE
77  yatmfile=' '
78 ENDIF
79 !
80 IF ( len_trim(hpgdfile)>0 ) THEN
81  ypgdfile=hpgdfile
82 ELSE
83  ypgdfile=' '
84 ENDIF
85 !
86 IF ( len_trim(hatmfiletype)>0 ) THEN
87  yatmfiletype=hatmfiletype
88 ELSE
89  yatmfiletype=' '
90 ENDIF
91 !
92 IF ( len_trim(hpgdfiletype)>0 ) THEN
93  ypgdfiletype=hpgdfiletype
94 ELSE
95  ypgdfiletype=' '
96 ENDIF
97 !
98 IF (ASSOCIATED(ysc%U%XCOVER)) DEALLOCATE(ysc%U%XCOVER)
99 !
100 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
101 ! SEA Tile calculations:
102 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
103 !
104 IF(ysc%U%NDIM_SEA>0) CALL prep_sea(ysc%DTCO, ysc%UG, ysc%U, ysc%GCP, ysc%SM, &
105  hprogram,yatmfile,yatmfiletype,ypgdfile,ypgdfiletype,ydctl)
106 !
107 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
108 ! INLAND WATER Tile calculations:
109 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
110 !
111 IF(ysc%U%NDIM_WATER>0) CALL prep_inland_water(ysc%DTCO, ysc%USS, ysc%UG, ysc%U, ysc%GCP, ysc%FM, ysc%WM, &
112  hprogram,yatmfile,yatmfiletype,ypgdfile,ypgdfiletype,ydctl)
113 !
114 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
115 ! NATURAL SURFACE Tile calculations:
116 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
117 !
118 IF(ysc%U%NDIM_NATURE>0) CALL prep_nature(ysc%DTCO, ysc%IM, ysc%UG, ysc%U, ysc%USS, ysc%GCP, &
119  hprogram,yatmfile,yatmfiletype,ypgdfile,ypgdfiletype,ydctl)
120 !
121 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
122 ! URBAN Tile calculations:
123 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
124 !
125 IF(ysc%U%NDIM_TOWN>0) CALL prep_town(ysc%DTCO, ysc%UG, ysc%U, ysc%USS, ysc%GCP, ysc%TM, ysc%GDM, ysc%GRM, &
126  hprogram,yatmfile,yatmfiletype,ypgdfile,ypgdfiletype,ydctl)
127 !
128  CALL clear_grib_index
129 !
130 IF (lhook) CALL dr_hook('PREP_SURF_ATM',1,zhook_handle)
131 !
132 !-------------------------------------------------------------------------------------
133 !
134 END SUBROUTINE prep_surf_atm
subroutine prep_inland_water(DTCO, USS, UG, U, GCP, FM, WM, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)
subroutine prep_surf_atm(YSC, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine prep_nature(DTCO, IM, UG, U, USS, GCP, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)
Definition: prep_nature.F90:8
logical lhook
Definition: yomhook.F90:15
subroutine prep_sea(DTCO, UG, U, GCP, SM, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)
Definition: prep_sea.F90:8
subroutine surf_version
Definition: surf_version.F90:7
subroutine clear_grib_index
subroutine prep_town(DTCO, UG, U, USS, GCP, TM, GDM, GRM, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)
Definition: prep_town.F90:8