36
37
38
39
40
41
42
43
44
45
46
47
48
51
52
53
54#include "implicit_f.inc"
55#include "units_c.inc"
56#include "scr14_c.inc"
57
58
59
60 TYPE (H3D_DATABASE) :: H3D_DATA
61 INTEGER IKAD(0:*),IKEY,IREC
62 INTEGER NBC
63 CHARACTER KEY0(*)*5
64 CHARACTER(LEN=NCHARKEY) :: , KEY3, KEY4, KEY5,KEY6,KEY7,KEY8
65
66
67
68 INTEGER NVAR
69
70
71
72 CHARACTER(LEN=NCHARLINE100):: CARTE,CARTE1,KEY3_GLOB
73 INTEGER I,J,L,N_H3D_PART,CPT,
74 . IS_CHAR_KEY3,IS_CHAR_KEY4,IS_CHAR_KEY5,,IS_CHAR_KEY7,IS_CHAR_KEY8,
75 . IS_EMPTY_KEY3,IS_EMPTY_KEY4,IS_EMPTY_KEY5,IS_EMPTY_KEY6,IS_EMPTY_KEY7,IS_EMPTY_KEY8
76
77 h3d_data%N_INPUT_H3D = h3d_data%N_INPUT_H3D + 1
78 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%KEY2 = key2
79 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%KEY3 = key3
80 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%KEY4 = key4
81 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%KEY5 = key5
82 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%KEY6 = key6
83 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%KEY7 = key7
84 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%KEY8 = key8
85
86
87 n_h3d_part = 0
88 DO j=1,nbc
89 READ(iusc1,rec=irec+j-1,fmt='(A)',err=999)carte
90 n_h3d_part=n_h3d_part +
nvar(carte)
91 ENDDO
92
93 h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%NB_PART = n_h3d_part
94 IF (n_h3d_part /= 0 )
95 . ALLOCATE(h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%PART_LIST(n_h3d_part))
96
97 n_h3d_part = 0
98 DO j=1,nbc
99 READ(iusc1,rec=irec+j-1,fmt='(A)',err=999)carte
100 CALL wriusc2(irec+j-1,1,key0(ikey))
101 READ(iusc2,*,err=999,END=999)
102 . (h3d_data%INPUT_LIST(h3d_data%N_INPUT_H3D)%PART_LIST(n_h3d_part + l),l=1,
nvar(carte))
103 n_h3d_part=n_h3d_part +
nvar(carte)
104 ENDDO
105
106
107
108
109
110
111
112 is_char_key3 = 1
113 is_empty_key3 = 1
114 is_char_key4 = 1
115 is_empty_key4 = 1
116 is_char_key5 = 1
117 is_empty_key5 = 1
118 is_char_key6 = 1
119 is_empty_key6 = 1
120 is_char_key7 = 1
121 is_empty_key7 = 1
122 is_char_key8 = 1
123 is_empty_key8 = 1
124 key3_glob = ''
126 IF ( key3(i:i) == '=' ) is_char_key3 = 0
127 IF ( key3(i:i) /= ' ' ) is_empty_key3 = 0
128 IF ( key4(i:i) == '=' ) is_char_key4 = 0
129 IF ( key4(i:i) /= ' ' ) is_empty_key4 = 0
130 IF ( key5(i:i) == '=' ) is_char_key5 = 0
131 IF ( key5(i:i) /= ' ' ) is_empty_key5 = 0
132 IF ( key6(i:i) == '=' ) is_char_key6 = 0
133 IF ( key6(i:i) /= ' ' ) is_empty_key6
134 IF ( key7(i:i) == '=' ) is_char_key7 = 0
135 IF ( key7(i:i) /= ' ' ) is_empty_key7 = 0
136 IF ( key8(i:i) == '=' ) is_char_key8 = 0
137 IF ( key8(i:i) /= ' ' ) is_empty_key8 = 0
138 ENDDO
139
140 cpt = 0
141 IF ( is_char_key3 == 1 .AND. is_empty_key3 == 0) THEN
143 IF ( key3(i:i) /= ' ' ) THEN
144 cpt = cpt + 1
145 key3_glob(cpt:cpt) = key3(i:i)
146 ENDIF
147 ENDDO
148 ENDIF
149 IF ( is_char_key4 == 1 .AND. is_empty_key4 == 0 ) THEN
150 cpt = cpt + 1
151 key3_glob(cpt:cpt) = '/'
153 IF ( key4(i:i) /= ' ' ) THEN
154 cpt = cpt + 1
155 key3_glob(cpt:cpt) = key4(i:i)
156 ENDIF
157 ENDDO
158 ENDIF
159 IF ( is_char_key5 == 1 .AND. is_empty_key5 == 0 ) THEN
160 cpt = cpt + 1
161 key3_glob(cpt:cpt) = '/'
163 IF ( key5(i:i) /= ' ' ) THEN
164 cpt = cpt + 1
165 key3_glob(cpt:cpt) = key5(i:i)
166 ENDIF
167 ENDDO
168 ENDIF
169 IF ( is_char_key6 == 1 .AND. is_empty_key6 == 0 ) THEN
170 cpt = cpt + 1
171 key3_glob(cpt:cpt) = '/'
173 IF ( key6(i:i) /= ' ' ) THEN
174 cpt = cpt + 1
175 key3_glob(cpt:cpt) = key6(i:i)
176 ENDIF
177 ENDDO
178 ENDIF
179 IF ( is_char_key7 == 1 .AND. is_empty_key7 == 0 ) THEN
180 cpt = cpt + 1
181 key3_glob(cpt:cpt) = '/'
183 IF ( key7(i:i) /= ' ' ) THEN
184 cpt = cpt + 1
185 key3_glob(cpt:cpt) = key7(i:i)
186 ENDIF
187 ENDDO
188 ENDIF
189 IF ( is_char_key8 == 1 .AND. is_empty_key8 == 0 ) THEN
190 cpt = cpt + 1
191 key3_glob(cpt:cpt) = '/'
193 IF ( key8(i:i) /= ' ' ) THEN
194 cpt = cpt + 1
195 key3_glob(cpt:cpt) = key8(i:i)
196 ENDIF
197 ENDDO
198 ENDIF
199
200 IF(key2 == 'NODA') THEN
201
202 IF (key3_glob == 'DT') h3d_data%N_SCAL_DT = 1
203 IF (key3_glob == 'DMASS') h3d_data%N_SCAL_DMAS = 1
204 IF (key3_glob == 'DINER') h3d_data%N_SCAL_DINER = 1
205 IF (key3_glob == 'DAMA2') h3d_data%N_SCAL_DAMA2 = 1
206 IF (key3_glob == 'SKID_LINE') h3d_data%N_SCAL_SKID = 1
207 IF (key3_glob == 'STIFR') h3d_data%N_SCAL_STIFR = 1
208 IF (key3_glob == 'STIF') h3d_data%N_SCAL_STIFN = 1
209 IF (key3_glob == 'CSE_FRICG') h3d_data%N_SCAL_CSE_FRIC = 1
210 IF (key3_glob == 'CSE_FRIC') h3d_data%N_SCAL_CSE_FRICINT = 1
211
212 IF (key3_glob == 'CONT'.OR.key3_glob == 'CONT/TMAX') h3d_data%N_VECT_CONT = 1
213 IF (key3_glob == 'CONT/TMAX') h3d_data%N_VECT_CONT_MAX = 1
214 IF (key3_glob == 'FINT') h3d_data%N_VECT_FINT = 1
215 IF (key3_glob == 'FEXT') h3d_data%N_VECT_FEXT = 1
216 IF (key3_glob == 'PCONT'.OR.key3_glob == 'PCONT/TMAX') h3d_data%N_VECT_PCONT = 1
217 IF (key3_glob == 'PCONT/TMAX') h3d_data%N_VECT_PCONT_MAX = 1
218 IF (key3_glob == 'CONT2'.OR.key3_glob == 'CONT2/TMAX'.OR.
219 . key3_glob == 'CONT2/TMIN') h3d_data%N_VECT_CONT2 = 1
220 IF (key3_glob == 'PCONT2'.OR.key3_glob == 'PCONT2/TMAX'.OR.
221 . key3_glob == 'PCONT2/TMIN' .OR.key3_glob == 'MAXPCONT2/NORMAL')
222 . h3d_data%N_VECT_PCONT2 = 1
223 IF (key3_glob == 'CONT2/TMAX') h3d_data%N_VECT_CONT2_MAX = 1
224 IF (key3_glob == 'CONT2/TMIN') h3d_data%N_VECT_CONT2_MIN = 1
225 IF (key3_glob == 'PCONT2/TMAX'.OR.key3_glob == 'MAXPCONT2/NORMAL')
226 . h3d_data%N_VECT_PCONT2_MAX = 1
227 IF (key3_glob == 'PCONT2/TMIN'.OR.key3_glob == 'MINPCONT2/NORMAL')
228 . h3d_data%N_VECT_PCONT2_MIN = 1
229 IF (key3_glob == 'CONT2/MOMENT') h3d_data%N_VECT_CONT2M = 1
230 IF (key3_glob == 'DROT') h3d_data%N_VECT_DROT = 1
231 IF (key3_glob == 'DXANC') h3d_data%N_VECT_DXANC = 1
232 IF (key3_glob == 'FREAC') h3d_data%N_VECT_FREAC = 1
233 IF (key3_glob == 'MREAC') h3d_data%N_VECT_MREAC = 1
234 IF (key3_glob == 'CLUST/FORCE') h3d_data%N_VECT_CLUST_FORCE = 1
235 IF (key3_glob == 'CLUST/MOM') h3d_data%N_VECT_CLUST_MOM = 1
236 ENDIF
237
238 IF(key2 == "ELEM" .OR. key2 == 'SOLID' .OR. key2 == 'QUAD')THEN
239 IF (key3_glob == 'VECT/CONT') h3d_data%N_VECT_CONT = 1
240 IF (key3_glob == 'VECT/ACC') h3d_data%N_VECT_ACC = 1
241 IF (key3_glob == 'TENS/EPSDOT') iepsdot = 1
242 IF (key3_glob == 'VORTX') h3d_data%SOL_SCAL_VORTX = 1
243 IF (key3_glob == 'VORTY') h3d_data%SOL_SCAL_VORTY = 1
244 IF (key3_glob == 'VORTZ') h3d_data%SOL_SCAL_VORTZ = 1
245 IF (key3_glob == 'VORT') THEN
246 h3d_data%SOL_SCAL_VORTX = 1
247 h3d_data%SOL_SCAL_VORTY = 1
248 h3d_data%SOL_SCAL_VORTZ = 1
249 ENDIF
250 ENDIF
251
252 IF(key2 == 'SHELL') THEN
253
254 IF (key3_glob == 'ERROR/THICK') h3d_data%SH_SCAL_ERR_THK = 1
255
256 IF (key3_glob == 'TENS/EPSDOT') iepsdot = 1
257 ENDIF
258
259 IF(key2 == 'SPRING' .OR. key2 == 'BEAM' .OR. key2 == 'TRUSS' ) THEN
260 IF (key3_glob == 'FORC') h3d_data%UND_FORC = 1
261 ENDIF
262
263
264 IF (key2 == 'QUAD') THEN
265
266 IF (key3_glob == 'TENS/STRAIN') h3d_data%STRAIN = 1
267 ENDIF
268
269
270
271 RETURN
272 999 print *,'error lecture'
integer, parameter ncharline100
integer, parameter ncharkey
integer function nvar(text)
subroutine wriusc2(irec, nbc, key0)