libsim  Versione7.2.3
vol7d_network_class.F90
1 ! Copyright (C) 2010 ARPA-SIM <urpsim@smr.arpa.emr.it>
2 ! authors:
3 ! Davide Cesari <dcesari@arpa.emr.it>
4 ! Paolo Patruno <ppatruno@arpa.emr.it>
5 
6 ! This program is free software; you can redistribute it and/or
7 ! modify it under the terms of the GNU General Public License as
8 ! published by the Free Software Foundation; either version 2 of
9 ! the License, or (at your option) any later version.
10 
11 ! This program is distributed in the hope that it will be useful,
12 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ! GNU General Public License for more details.
15 
16 ! You should have received a copy of the GNU General Public License
17 ! along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include "config.h"
19 
27 USE kinds
30 IMPLICIT NONE
31 
32 integer, parameter :: network_name_len=20
33 
38 TYPE vol7d_network
39  character(len=network_name_len) :: name
40 END TYPE vol7d_network
41 
43 TYPE(vol7d_network),PARAMETER :: vol7d_network_miss=vol7d_network(cmiss)
44 
48 INTERFACE init
49  MODULE PROCEDURE vol7d_network_init
50 END INTERFACE
51 
54 INTERFACE delete
55  MODULE PROCEDURE vol7d_network_delete
56 END INTERFACE
57 
61 INTERFACE OPERATOR (==)
62  MODULE PROCEDURE vol7d_network_eq
63 END INTERFACE
64 
68 INTERFACE OPERATOR (/=)
69  MODULE PROCEDURE vol7d_network_ne
70 END INTERFACE
71 
75 INTERFACE OPERATOR (>)
76  MODULE PROCEDURE vol7d_network_gt
77 END INTERFACE
78 
82 INTERFACE OPERATOR (<)
83  MODULE PROCEDURE vol7d_network_lt
84 END INTERFACE
85 
89 INTERFACE OPERATOR (>=)
90  MODULE PROCEDURE vol7d_network_ge
91 END INTERFACE
92 
96 INTERFACE OPERATOR (<=)
97  MODULE PROCEDURE vol7d_network_le
98 END INTERFACE
99 
100 #define VOL7D_POLY_TYPE TYPE(vol7d_network)
101 #define VOL7D_POLY_TYPES _network
102 #define ENABLE_SORT
103 #include "array_utilities_pre.F90"
104 
106 INTERFACE display
107  MODULE PROCEDURE display_network
108 END INTERFACE
109 
111 INTERFACE c_e
112  MODULE PROCEDURE c_e_network
113 END INTERFACE
114 
116 INTERFACE to_char
117  MODULE PROCEDURE to_char_network
118 END INTERFACE
119 
120 CONTAINS
121 
127 FUNCTION vol7d_network_new(name) RESULT(this)
128 CHARACTER(len=*),INTENT(in),OPTIONAL :: name
129 
130 TYPE(vol7d_network) :: this
131 
132 CALL init(this, name)
133 
134 END FUNCTION vol7d_network_new
135 
136 
140 SUBROUTINE vol7d_network_init(this, name)
141 TYPE(vol7d_network),INTENT(INOUT) :: this
142 CHARACTER(len=*),INTENT(in),OPTIONAL :: name
143 
144 IF (PRESENT(name)) THEN
145  this%name = lowercase(name)
146 ELSE
147  this%name = cmiss
148 END IF
149 
150 END SUBROUTINE vol7d_network_init
151 
152 
154 SUBROUTINE vol7d_network_delete(this)
155 TYPE(vol7d_network),INTENT(INOUT) :: this
156 
157 this%name = cmiss
158 
159 END SUBROUTINE vol7d_network_delete
160 
161 
162 subroutine display_network(this)
163 
164 TYPE(vol7d_network),INTENT(in) :: this
165 
166 print*,to_char_network(this)
167 
168 end subroutine display_network
169 
170 
171 elemental function c_e_network(this) result(res)
172 
173 TYPE(vol7d_network),INTENT(in) :: this
174 logical :: res
175 
176 res = .not. this == vol7d_network_miss
177 
178 end function c_e_network
179 
180 
181 elemental character(len=20) function to_char_network(this)
182 
183 TYPE(vol7d_network),INTENT(in) :: this
184 
185 to_char_network="Network: "//trim(this%name)
186 
187 return
188 
189 end function to_char_network
190 
191 
192 ELEMENTAL FUNCTION vol7d_network_eq(this, that) RESULT(res)
193 TYPE(vol7d_network),INTENT(IN) :: this, that
194 LOGICAL :: res
195 
196 res = (this%name == that%name)
197 
198 END FUNCTION vol7d_network_eq
199 
200 
201 ELEMENTAL FUNCTION vol7d_network_ne(this, that) RESULT(res)
202 TYPE(vol7d_network),INTENT(IN) :: this, that
203 LOGICAL :: res
204 
205 res = .NOT.(this == that)
206 
207 END FUNCTION vol7d_network_ne
208 
209 
210 ELEMENTAL FUNCTION vol7d_network_gt(this, that) RESULT(res)
211 TYPE(vol7d_network),INTENT(IN) :: this, that
212 LOGICAL :: res
213 
214 res = this%name > that%name
215 
216 END FUNCTION vol7d_network_gt
217 
218 ELEMENTAL FUNCTION vol7d_network_lt(this, that) RESULT(res)
219 TYPE(vol7d_network),INTENT(IN) :: this, that
220 LOGICAL :: res
221 
222 res = this%name < that%name
223 
224 END FUNCTION vol7d_network_lt
225 
226 
227 ELEMENTAL FUNCTION vol7d_network_ge(this, that) RESULT(res)
228 TYPE(vol7d_network),INTENT(IN) :: this, that
229 LOGICAL :: res
230 
231 res = this%name >= that%name
232 
233 END FUNCTION vol7d_network_ge
234 
235 ELEMENTAL FUNCTION vol7d_network_le(this, that) RESULT(res)
236 TYPE(vol7d_network),INTENT(IN) :: this, that
237 LOGICAL :: res
238 
239 res = this%name <= that%name
240 
241 END FUNCTION vol7d_network_le
242 
243 
244 #include "array_utilities_inc.F90"
245 
247 END MODULE vol7d_network_class
Definisce la rete a cui appartiene una stazione.
Classe per la gestione delle reti di stazioni per osservazioni meteo e affini.
return network object in a pretty string
Definitions of constants and functions for working with missing values.
Distruttore per la classe vol7d_network.
Utilities for CHARACTER variables.
Check object presence.
Costruttore per la classe vol7d_network.
Definition of constants to be used for declaring variables of a desired type.
Definition: kinds.F90:255

Generated with Doxygen.