SURFEX v8.1
General documentation of Surfex
pgd_field.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.
6 !
7 INTERFACE pgd_field
8 !
9 ! #########
10  SUBROUTINE pgd_field_1d (DTCO, UG, U, USS, &
11  HPROGRAM,HFIELD,HAREA,HFILE,HFILETYPE,PUNIF,PFIELD,OPRESENT,PVEGTYPE)
12 ! ##############################################################
13 !
16 USE modd_surf_atm_n, ONLY : surf_atm_t
17 USE modd_sso_n, ONLY : sso_t
18 !
19 IMPLICIT NONE
20 !
21 !* 0.1 Declaration of arguments
22 ! ------------------------
23 !
24 !
25 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
26 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
27 TYPE(surf_atm_t), INTENT(INOUT) :: U
28 TYPE(sso_t), INTENT(INOUT) :: USS
29 !
30  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
31  CHARACTER(LEN=*), INTENT(IN) :: HFIELD ! field name for prints
32  CHARACTER(LEN=3), INTENT(IN) :: HAREA ! area where field is defined
33 ! ! 'ALL' : everywhere
34 ! ! 'NAT' : on nature
35 ! ! 'TWN' : on town
36 ! ! 'SEA' : on sea
37 ! ! 'WAT' : on inland waters
38  CHARACTER(LEN=28), INTENT(IN) :: HFILE ! data file name
39  CHARACTER(LEN=6), INTENT(INOUT) :: HFILETYPE ! data file type
40 REAL, INTENT(IN) :: PUNIF ! prescribed uniform value for field
41 REAL, DIMENSION(:),INTENT(OUT):: PFIELD ! physiographic field
42 LOGICAL, OPTIONAL, INTENT(OUT) :: OPRESENT
43 REAL, DIMENSION(:), OPTIONAL, INTENT(IN) :: PVEGTYPE
44 !
45 !-------------------------------------------------------------------------------
46 !
47 END SUBROUTINE pgd_field_1d
48 !
49 ! #########
50  SUBROUTINE pgd_field_2d (DTCO, UG, U, USS, &
51  HPROGRAM,HFIELD,HAREA,HFILE,HFILETYPE,PUNIF,PFIELD,OPRESENT,PVEGTYPE)
52 ! ##############################################################
53 !
56 USE modd_surf_atm_n, ONLY : surf_atm_t
57 USE modd_sso_n, ONLY : sso_t
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declaration of arguments
62 ! ------------------------
63 !
64 !
65 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
66 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
67 TYPE(surf_atm_t), INTENT(INOUT) :: U
68 TYPE(sso_t), INTENT(INOUT) :: USS
69 !
70  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
71  CHARACTER(LEN=*), INTENT(IN) :: HFIELD ! field name for prints
72  CHARACTER(LEN=3), INTENT(IN) :: HAREA ! area where field is defined
73 ! ! 'ALL' : everywhere
74 ! ! 'NAT' : on nature
75 ! ! 'TWN' : on town
76 ! ! 'SEA' : on sea
77 ! ! 'WAT' : on inland waters
78  CHARACTER(LEN=28), INTENT(IN) :: HFILE ! data file name
79  CHARACTER(LEN=6), INTENT(INOUT) :: HFILETYPE ! data file type
80 REAL, INTENT(IN) :: PUNIF ! prescribed uniform value for field
81 REAL, DIMENSION(:,:),INTENT(OUT):: PFIELD ! physiographic field
82 LOGICAL, OPTIONAL, INTENT(OUT) :: OPRESENT
83 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PVEGTYPE
84 !
85 !-------------------------------------------------------------------------------
86 !
87 END SUBROUTINE pgd_field_2d
88 !
89 END INTERFACE pgd_field
90 !
91 END MODULE modi_pgd_field
92 !
93 !
94 ! #########
95  SUBROUTINE pgd_field_1d (DTCO, UG, U, USS, &
96  HPROGRAM,HFIELD,HAREA,HFILE,HFILETYPE,PUNIF,PFIELD,OPRESENT,PVEGTYPE)
97 ! ##############################################################
98 !
101 USE modd_surf_atm_n, ONLY : surf_atm_t
102 USE modd_sso_n, ONLY : sso_t
103 !
104 USE modi_pgd_fieldin
105 !
106 IMPLICIT NONE
107 !
108 !* 0.1 Declaration of arguments
109 ! ------------------------
110 !
111 !
112 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
113 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
114 TYPE(surf_atm_t), INTENT(INOUT) :: U
115 TYPE(sso_t), INTENT(INOUT) :: USS
116 !
117  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
118  CHARACTER(LEN=*), INTENT(IN) :: HFIELD ! field name for prints
119  CHARACTER(LEN=3), INTENT(IN) :: HAREA ! area where field is defined
120 ! ! 'ALL' : everywhere
121 ! ! 'NAT' : on nature
122 ! ! 'TWN' : on town
123 ! ! 'SEA' : on sea
124 ! ! 'WAT' : on inland waters
125  CHARACTER(LEN=28), INTENT(IN) :: HFILE ! data file name
126  CHARACTER(LEN=6), INTENT(INOUT) :: HFILETYPE ! data file type
127 REAL, INTENT(IN) :: PUNIF ! prescribed uniform value for field
128 REAL, DIMENSION(:),INTENT(OUT):: PFIELD ! physiographic field
129 LOGICAL, OPTIONAL, INTENT(OUT) :: OPRESENT
130 REAL, DIMENSION(:), OPTIONAL, INTENT(IN) :: PVEGTYPE
131 !
132 LOGICAL :: GPRESENT
133 REAL, DIMENSION(:,:), ALLOCATABLE :: ZMASK
134 REAL, DIMENSION(SIZE(PFIELD),1) :: ZFIELD
135 !
136 IF (PRESENT(pvegtype)) THEN
137  ALLOCATE(zmask(SIZE(pvegtype),1))
138  zmask(:,1) = pvegtype
139  CALL pgd_fieldin(dtco, ug, u, uss, &
140  hprogram,hfield,harea,hfile,hfiletype,punif,zfield,gpresent,zmask)
141  DEALLOCATE(zmask)
142 ELSE
143  CALL pgd_fieldin(dtco, ug, u, uss, &
144  hprogram,hfield,harea,hfile,hfiletype,punif,zfield,gpresent)
145 ENDIF
146 !
147 pfield(:) = zfield(:,1)
148 !
149 IF (PRESENT(opresent)) opresent = gpresent
150 !
151 !-------------------------------------------------------------------------------
152 !
153 END SUBROUTINE pgd_field_1d
154 !
155 ! #########
156  SUBROUTINE pgd_field_2d (DTCO, UG, U, USS, &
157  HPROGRAM,HFIELD,HAREA,HFILE,HFILETYPE,PUNIF,PFIELD,OPRESENT,PVEGTYPE)
158 ! ##############################################################
159 !
162 USE modd_surf_atm_n, ONLY : surf_atm_t
163 USE modd_sso_n, ONLY : sso_t
164 !
165 USE modi_pgd_fieldin
166 !
167 IMPLICIT NONE
168 !
169 !* 0.1 Declaration of arguments
170 ! ------------------------
171 !
172 !
173 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
174 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
175 TYPE(surf_atm_t), INTENT(INOUT) :: U
176 TYPE(sso_t), INTENT(INOUT) :: USS
177 !
178  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
179  CHARACTER(LEN=*), INTENT(IN) :: HFIELD ! field name for prints
180  CHARACTER(LEN=3), INTENT(IN) :: HAREA ! area where field is defined
181 ! ! 'ALL' : everywhere
182 ! ! 'NAT' : on nature
183 ! ! 'TWN' : on town
184 ! ! 'SEA' : on sea
185 ! ! 'WAT' : on inland waters
186  CHARACTER(LEN=28), INTENT(IN) :: HFILE ! data file name
187  CHARACTER(LEN=6), INTENT(INOUT) :: HFILETYPE ! data file type
188 REAL, INTENT(IN) :: PUNIF ! prescribed uniform value for field
189 REAL, DIMENSION(:,:),INTENT(OUT):: PFIELD ! physiographic field
190 LOGICAL, OPTIONAL, INTENT(OUT) :: OPRESENT
191 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PVEGTYPE
192 !
193 LOGICAL :: GPRESENT
194 !
195 IF (PRESENT(pvegtype)) THEN
196  CALL pgd_fieldin(dtco, ug, u, uss, &
197  hprogram,hfield,harea,hfile,hfiletype,punif,pfield,gpresent,pvegtype)
198 ELSE
199  CALL pgd_fieldin(dtco, ug, u, uss, &
200  hprogram,hfield,harea,hfile,hfiletype,punif,pfield,gpresent)
201 ENDIF
202 !
203 IF (PRESENT(opresent)) opresent = gpresent
204 !
205 !-------------------------------------------------------------------------------
206 !
207 END SUBROUTINE pgd_field_2d
208 !
subroutine pgd_field_1d(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT, PVEGTYPE)
Definition: pgd_field.F90:97
subroutine pgd_field_2d(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT, PVEGTYPE)
Definition: pgd_field.F90:158
subroutine pgd_fieldin(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF,
Definition: pgd_fieldin.F90:8