SPEED
READ_DIME_FILEMATE.f90
Go to the documentation of this file.
1! Copyright (C) 2012 The SPEED FOUNDATION
2! Author: Ilario Mazzieri
3!
4! This file is part of SPEED.
5!
6! SPEED is free software; you can redistribute it and/or modify it
7! under the terms of the GNU Affero General Public License as
8! published by the Free Software Foundation, either version 3 of the
9! License, or (at your option) any later version.
10!
11! SPEED is distributed in the hope that it will be useful, but
12! WITHOUT ANY WARRANTY; without even the implied warranty of
13! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14! Affero General Public License for more details.
15!
16! You should have received a copy of the GNU Affero General Public License
17! along with SPEED. If not, see <http://www.gnu.org/licenses/>.
18
56
57 subroutine read_dime_filemate(filemate,nb_mat,&
58 nb_mat_nle, nb_mat_rnd, &
59 nb_load_dirX,nb_load_dirY,nb_load_dirZ, &
60 nb_load_neuX,nb_load_neuY,nb_load_neuZ, &
61 nb_load_neuN, &
62 nb_load_poiX,nb_load_poiY,nb_load_poiZ, &
63 nb_load_traX,nb_load_traY,nb_load_traZ, &
64 nb_load_plaX,nb_load_plaY,nb_load_plaZ, &
65 nb_load_forX,nb_load_forY,nb_load_forZ, &
66 nb_load_forc,nb_load_pres,nb_load_shea, &
67 nb_load_abc,nb_load_dg,nb_func,nb_func_data,&
68 nb_load_sism,nb_load_expl,nb_case,nb_nhee,&
69 n_test,nb_frac,srcmodflag) ! SDOFflag)
70
71
72
73
74 implicit none
75
76 character*70 :: filemate,srcname
77 character*100000 :: inline
78 character*4 :: keyword
79
80 integer*4 :: nb_mat
81 integer*4 :: nb_mat_nle, nb_mat_rnd
82 integer*4 :: nb_load_dirX,nb_load_dirY,nb_load_dirZ
83 integer*4 :: nb_load_neuX,nb_load_neuY,nb_load_neuZ
84 integer*4 :: nb_load_neuN
85 integer*4 :: nb_load_traX,nb_load_traY,nb_load_traZ
86 integer*4 :: nb_load_poiX,nb_load_poiY,nb_load_poiZ
87 integer*4 :: nb_load_plaX,nb_load_plaY,nb_load_plaZ
88 integer*4 :: nb_load_forX,nb_load_forY,nb_load_forZ
89 integer*4 :: nb_load_forc,nb_load_pres,nb_load_shea
90 integer*4 :: nb_load_abc, nb_load_dg
91 integer*4 :: nb_load_sism
92 integer*4 :: nb_load_expl
93 integer*4 :: nb_case, n_test, nb_frac,nb_nhee,srcmodflag !,SDOFflag
94 integer*4 :: nb_func,nb_func_data
95 integer*4 :: status
96 integer*4 :: lab_fnc, type_fnc, ndat_fnc
97
98 nb_mat = 0; nb_mat_nle = 0; nb_case = 0; nb_mat_rnd = 0;
99 nb_load_dirx = 0; nb_load_diry = 0; nb_load_dirz = 0
100 nb_load_neux = 0; nb_load_neuy = 0; nb_load_neuz = 0
101 nb_load_neun = 0; nb_load_poix = 0; nb_load_poiy = 0
102 nb_load_poiz = 0; nb_load_plax = 0; nb_load_play = 0
103 nb_load_plaz = 0; nb_load_forx = 0; nb_load_fory = 0
104 nb_load_forz = 0; nb_load_forc = 0; nb_load_pres = 0
105 nb_load_shea = 0; nb_load_abc = 0; nb_load_dg = 0
106 nb_load_sism = 0; nb_load_expl = 0; nb_frac = 0;
107 nb_load_trax = 0; nb_load_tray = 0; nb_load_traz = 0
108
109 nb_func = 0; nb_func_data = 0
110 n_test = 0;
111
112 !SDOFflag = 0;
113
114 open(40,file=filemate)
115
116 do
117 read(40,'(A)',iostat = status) inline
118
119 if (status.ne.0) exit
120
121 keyword = inline(1:4)
122
123 select case (keyword)
124
125 case('MATE')
126 nb_mat = nb_mat + 1
127 case('MATN')
128 nb_mat_nle = nb_mat_nle + 1
129 case('MATR')
130 nb_mat_rnd = nb_mat_rnd + 1
131 case('DIRX')
132 nb_load_dirx = nb_load_dirx + 1
133 case('DIRY')
134 nb_load_diry = nb_load_diry + 1
135 case('DIRZ')
136 nb_load_dirz = nb_load_dirz + 1
137 case('NEUX')
138 nb_load_neux = nb_load_neux + 1
139 case('NEUY')
140 nb_load_neuy = nb_load_neuy + 1
141 case('NEUZ')
142 nb_load_neuz = nb_load_neuz + 1
143 case('NEUN')
144 nb_load_neun = nb_load_neun + 1
145 case('PLOX')
146 nb_load_poix = nb_load_poix + 1
147 case('PLOY')
148 nb_load_poiy = nb_load_poiy + 1
149 case('PLOZ')
150 nb_load_poiz = nb_load_poiz + 1
151 !case('PLOD') ! SSI - AH, SS
152 !SDOFflag=1
153 !nb_load_poiX = nb_load_poiX + 1
154 !nb_load_poiY = nb_load_poiY + 1
155 !nb_load_poiZ = nb_load_poiZ + 1
156
157! case('TLOX')
158! nb_load_traX = nb_load_traX + 1
159! case('TLOY')
160! nb_load_traY = nb_load_traY + 1
161
162 case('TLOZ')
163 nb_load_traz = nb_load_traz + 1
164 case('PLAX')
165 nb_load_plax = nb_load_plax + 1
166 case('PLAY')
167 nb_load_play = nb_load_play + 1
168 case('PLAZ')
169 nb_load_plaz = nb_load_plaz + 1
170 case('FORX')
171 nb_load_forx = nb_load_forx + 1
172 case('FORY')
173 nb_load_fory = nb_load_fory + 1
174 case('FORZ')
175 nb_load_forz = nb_load_forz + 1
176 case('FORC')
177 nb_load_forc = nb_load_forc + 1
178 case('PRES')
179 nb_load_pres = nb_load_pres + 1
180 case('SHEA')
181 nb_load_shea = nb_load_shea + 1
182 case('ABSO')
183 nb_load_abc = nb_load_abc + 1
184 case('DGIC')
185 nb_load_dg = nb_load_dg + 1
186 case('DGIX')
187 nb_load_dg = nb_load_dg + 1
188 case('SISM')
189 nb_load_sism = nb_load_sism + 1
190 case('EXPL')
191 nb_load_expl = nb_load_expl + 1
192 case('CASE')
193 nb_case = nb_case + 1
194 case('NHEE')
195 ! Not-honoring Enhanced - Elastic- damping type 2
196 nb_nhee = nb_nhee + 1
197 case('SLIP')
198 ! Not-honoring Fault Plane
199 read(inline(5:),*) srcname
200 if (srcname.eq.'LOAD-SRCMOD2') then
201 srcmodflag = 1;
202 endif
203 case('TEST')
204 n_test = n_test + 1
205 case('FRAC')
206 nb_frac = 1
207 case('FUNC')
208 nb_func = nb_func + 1
209 read(inline(5:),*) lab_fnc, type_fnc
210
211 select case (type_fnc)
212 case(0,32)
213 ! Case 32 - Ramp Source Time Function
214 nb_func_data = nb_func_data + 0
215 case(1)
216 ! RICKER WAVELET
217 nb_func_data = nb_func_data + 2
218 case(2)
219 nb_func_data = nb_func_data + 2
220 case(3,30,31,33)
221 ! TIME SERIES
222 ! Case 31 - Text File with Source Time Function
223 read(inline(5:),*) lab_fnc, type_fnc, ndat_fnc
224 nb_func_data = nb_func_data + 2*ndat_fnc
225
226 case(4)
227 ! DERIVATIVE OF THE RICKER WAVELET
228 nb_func_data = nb_func_data + 2
229 case(5)
230 ! DERIVATIVE OF THE GAUSSIAN WAVELET
231 nb_func_data = nb_func_data + 2
232
233 case(6)
234 nb_func_data = nb_func_data + 2
235 case(7)
236 nb_func_data = nb_func_data + 2
237 case(8,9)
238 nb_func_data = nb_func_data + 1
239
240 case(12)
241 ! SIGMOIDAL FUNC
242 nb_func_data = nb_func_data + 3
243 case(13)
244 ! GRENOBLE BENCHMARK
245 nb_func_data = nb_func_data + 2
246 case(14)
247 ! SCEC BENCHMARK
248 nb_func_data = nb_func_data + 2
249 case(15)
250 ! EXPLOSION
251 nb_func_data = nb_func_data + 4
252 case(50,55)
253 ! VARIABLE TAU
254 nb_func_data = nb_func_data + 2
255 case(60,62)
256 ! LINEAR EQUIVALENT
257 read(inline(5:),*) lab_fnc, type_fnc, ndat_fnc
258 nb_func_data = nb_func_data + 2*ndat_fnc
259 case(61,63)
260 read(inline(5:),*) lab_fnc, type_fnc, ndat_fnc
261 nb_func_data = nb_func_data + 2*ndat_fnc
262 case(99)
263 ! CASHIMA
264 nb_func_data = nb_func_data + 2
265 case(100)
266 nb_func_data = nb_func_data + 1
267 case(773)
268 ! TIME SERIES
269 read(inline(5:),*) lab_fnc, type_fnc, ndat_fnc
270 nb_func_data = nb_func_data + ndat_fnc
271 case(777) !!! reaction force from structure used as input SSI-AH
272 read(inline(5:),*) lab_fnc, type_fnc, ndat_fnc
273 nb_func_data = nb_func_data + 1 !mod-SS
274
275 end select
276
277 end select
278
279 enddo
280
281 close(40)
282
283 return
284 end subroutine read_dime_filemate
285
286
287
subroutine read_dime_filemate(filemate, nb_mat, nb_mat_nle, nb_mat_rnd, nb_load_dirx, nb_load_diry, nb_load_di
Reads dimensions in filemate (*.mate)