38 CHARACTER(len=10) :: btable
39 CHARACTER(len=65) :: description
40 CHARACTER(len=24) :: unit
41 integer :: scalefactor
51 TYPE(vol7d_var),
PARAMETER :: vol7d_var_miss= &
52 vol7d_var(cmiss,cmiss,cmiss,imiss,imiss,imiss,imiss,imiss,imiss)
58 MODULE PROCEDURE vol7d_var_init
64 MODULE PROCEDURE vol7d_var_delete
72 INTERFACE OPERATOR (==)
73 MODULE PROCEDURE vol7d_var_eq
82 INTERFACE OPERATOR (/=)
83 MODULE PROCEDURE vol7d_var_ne, vol7d_var_nesv
88 MODULE PROCEDURE vol7d_var_c_e
91 #define VOL7D_POLY_TYPE TYPE(vol7d_var) 92 #define VOL7D_POLY_TYPES _var 93 #include "array_utilities_pre.F90" 97 MODULE PROCEDURE display_var, display_var_vect
101 INTEGER,
PARAMETER :: var_ord=0
102 INTEGER,
PARAMETER :: var_dir360=1
103 INTEGER,
PARAMETER :: var_press=2
104 INTEGER,
PARAMETER :: var_ucomp=3
105 INTEGER,
PARAMETER :: var_vcomp=4
106 INTEGER,
PARAMETER :: var_wcomp=5
116 elemental SUBROUTINE vol7d_var_init(this, btable, description, unit, scalefactor)
117 TYPE(vol7d_var),
INTENT(INOUT) :: this
118 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: btable
119 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: description
120 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: unit
121 INTEGER,
INTENT(in),
OPTIONAL :: scalefactor
123 IF (
PRESENT(btable))
THEN 127 this%description = cmiss
129 this%scalefactor = imiss
132 IF (
PRESENT(description))
THEN 133 this%description = description
135 this%description = cmiss
137 IF (
PRESENT(unit))
THEN 142 if (
present(scalefactor))
then 143 this%scalefactor = scalefactor
145 this%scalefactor = imiss
154 END SUBROUTINE vol7d_var_init
157 ELEMENTAL FUNCTION vol7d_var_new(btable, description, unit, scalefactor)
RESULT(this)
158 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: btable
159 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: description
160 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: unit
161 INTEGER,
INTENT(in),
OPTIONAL :: scalefactor
163 TYPE(vol7d_var) :: this
165 CALL init(this,btable, description, unit, scalefactor)
167 END FUNCTION vol7d_var_new
171 elemental SUBROUTINE vol7d_var_delete(this)
172 TYPE(vol7d_var),
INTENT(INOUT) :: this
175 this%description = cmiss
177 this%scalefactor = imiss
179 END SUBROUTINE vol7d_var_delete
182 elemental FUNCTION vol7d_var_eq(this, that)
RESULT(res)
183 TYPE(vol7d_var),
INTENT(IN) :: this, that
186 res = this%btable == that%btable
188 END FUNCTION vol7d_var_eq
204 elemental FUNCTION vol7d_var_ne(this, that)
RESULT(res)
205 TYPE(vol7d_var),
INTENT(IN) :: this, that
208 res = .NOT.(this == that)
210 END FUNCTION vol7d_var_ne
213 FUNCTION vol7d_var_nesv(this, that)
RESULT(res)
214 TYPE(vol7d_var),
INTENT(IN) :: this, that(:)
215 LOGICAL :: res(SIZE(that))
220 res(i) = .NOT.(this == that(i))
223 END FUNCTION vol7d_var_nesv
228 subroutine display_var(this)
230 TYPE(vol7d_var),
INTENT(in) :: this
232 print*,
"VOL7DVAR: ",this%btable,trim(this%description),
" : ",this%unit,&
233 " scale factor",this%scalefactor
235 end subroutine display_var
239 subroutine display_var_vect(this)
241 TYPE(vol7d_var),
INTENT(in) :: this(:)
245 call display_var(this(i))
248 end subroutine display_var_vect
250 FUNCTION vol7d_var_c_e(this)
RESULT(c_e)
253 c_e = this /= vol7d_var_miss
254 END FUNCTION vol7d_var_c_e
261 ELEMENTAL FUNCTION vol7d_vartype(this)
RESULT(vartype)
267 SELECT CASE(this%btable)
268 CASE(
'B01012',
'B11001',
'B11043',
'B22001')
270 CASE(
'B07004',
'B10004',
'B10051',
'B10060')
272 CASE(
'B11003',
'B11200')
274 CASE(
'B11004',
'B11201')
276 CASE(
'B11005',
'B11006')
280 END FUNCTION vol7d_vartype
283 #include "array_utilities_inc.F90" Distruttore per la classe vol7d_var.
display on the screen a brief content of object
Classe per la gestione delle variabili osservate da stazioni meteo e affini.
Costruttore per la classe vol7d_var.
Definitions of constants and functions for working with missing values.
Definisce una variabile meteorologica osservata o un suo attributo.
Definition of constants to be used for declaring variables of a desired type.