39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
62 USE reader_old_mod , ONLY : line
63 USE user_id_mod , ONLY : id_limit
64 use element_mod , only : nixr
65
66
67
68
69
70
71
72#include "implicit_f.inc"
73
74
75
76#include "analyse_name.inc"
77
78
79
80#include "scr17_c.inc"
81#include "com04_c.inc"
82#include "units_c.inc"
83#include "param_c.inc"
84#include "sphcom.inc"
85
86
87
88
89 INTEGER,INTENT(IN)::ITAB(*)
90 INTEGER,INTENT(IN)::ITABM1(*)
91 INTEGER,INTENT(IN)::IPART(LIPART1,*)
92 INTEGER,INTENT(IN)::IGEO(NPROPGI,*)
93 INTEGER,INTENT(IN)::ISKN(LISKN,*)
94 INTEGER,INTENT(IN)::IPM(NPROPMI,*)
95 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(NSUBMOD)
96
97 INTEGER,INTENT(OUT)::IXR(NIXR,*)
98 INTEGER,INTENT(OUT)::IXR_KJ(5,*)
99 INTEGER,INTENT(OUT)::IPARTR(*)
100 INTEGER,INTENT(OUT)::R_SKEW(*)
101
102
103
104 INTEGER I, I1, I2,PID,N,IDS,J,IPID,STAT,IMID,IGTYP,MID
105 INTEGER FLAG_KJ(NUMELR),IKJ_TMP(3,NUMELR),NUMEL_KJ,CPT,
106 . INDEX_PART
107 CHARACTER MESS*40, MESS2*40, CHAR_MAT*11, CHAR_SKEW*11
109 . bid
110 INTEGER, DIMENSION(:), ALLOCATABLE :: SUB_SPRING,SKEWID
111
112
113
114 INTEGER USR2SYS
115 DATA mess /'3D SPRING ELEMENTS DEFINITION '/
116 DATA mess2/'3D SPRING ELEMENTS SELECTION FOR TH PLOT'/
117
118
119
120
121 ALLOCATE (sub_spring(numelr),stat=stat)
122 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
123 . msgtype=msgerror,
124 . c1='SUB_SPRING')
125 sub_spring(1:numelr) = 0
126 ALLOCATE (skewid(numelr),stat=stat)
127 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
128 . msgtype=msgerror,
129 . c1='SKEWID')
130 skewid(1:numelr) = 0
131 index_part = 1
132
133
134
135 CALL cpp_spring_read(ixr,nixr,ixr_kj,5,ipartr,sub_spring,skewid)
136
137
138
139 i=0
140 numel_kj = 0
141
142 DO n=1,numelr
143 i = i + 1
144
145
146
147 IF( ipart(4,index_part) /= ipartr(i) )THEN
148 DO j=1,npart
149 IF(ipart(4,j)== ipartr(i) ) index_part = j
150 ENDDO
151 ENDIF
152 IF( ipart(4,index_part) /= ipartr(i) ) THEN
154 . msgtype=msgerror,
155 . anmode=aninfo_blind_1,
156 . c1="SPRING",
157 . i1=ipartr(i),
158 . i2=ipartr(i),
159 . prmod=msg_cumu)
160 ENDIF
161 ipid=ipart(2,index_part)
162 imid=ipart(1,index_part)
163 igtyp=igeo(11,ipid)
164 ixr(5,i)=0
165
166 IF(igtyp == 23) ixr(5,i)=imid
167 ipartr(i) = index_part
168
169
170 flag_kj(i) = 0
171 DO j=1,3
172 IF (ixr_kj(j,i)/=0) flag_kj(i) = flag_kj(i) + 1
173 END DO
174
175 IF (ixr(nixr,i)>id_limit%GLOBAL) THEN
176 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,
177 . i1=ixr(nixr,i),c1=line,c2='/SPRING')
178 ENDIF
179 ixr(1,i)=ipid
180 ixr(2,i)=
usr2sys(ixr(2,i),itabm1,mess,ixr(nixr,i))
181 ixr(3,i)=
usr2sys(ixr(3,i),itabm1,mess,ixr(nixr,i))
182 CALL anodset(ixr(2,i), check_spring)
183 CALL anodset(ixr(3,i), check_spring)
184 IF(ixr(4,i)/=0) THEN
185 ixr(4,i)=
usr2sys(ixr(4,i),itabm1,mess,ixr(nixr,i))
186 CALL anodset(ixr(4,i), check_used)
187 ENDIF
188
189 IF (flag_kj(i)>0) THEN
190 DO j=1,3
191 IF(ixr_kj(j,i)/=0) THEN
192 ixr_kj(j,i)=
usr2sys(ixr_kj(j,i),itabm1,mess,ixr(nixr,i))
193 CALL anodset(ixr_kj(j,i), check_used)
194 ENDIF
195 END DO
196 ENDIF
197
198 IF (skewid(i) > 0) THEN
200 IF (skewid(i) == iskn(4,j+1)) THEN
201 r_skew(i) = j+1
202 GO TO 500
203 ENDIF
204 ENDDO
205 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
206 . c1='SPRING',
207 . c2='SPRING',
208 . i1=ixr(nixr,i),i2=skewid(i))
209500 CONTINUE
210 ENDIF
211 ENDDO
212
213 IF(ALLOCATED(sub_spring)) DEALLOCATE(sub_spring)
214
216 . msgtype=msgerror,
217 . anmode=aninfo_blind_1,
218 . prmod=msg_print)
219
220
221
222 ids = 79
223 i = 0
224 j = 0
225 CALL vdouble(ixr(nixr,1),nixr,numelr,mess,0,bid)
226 ids = 35
227
228 i1=1
229 i2=min0(50,numelr)
230
231 90 WRITE (iout,300)
232 DO 100 i=i1,i2
233 pid = igeo(1,ixr(1,i))
234
235 IF (ixr(5,i) > 0) THEN
236 mid = ipm(1,ixr(5,i))
237 WRITE (char_mat,'(I10,1X)') mid
238 ELSE
239 char_mat=''
240 ENDIF
241
242 IF (skewid(i) > 0) THEN
243 WRITE (char_skew,'(I10)') skewid(i)
244 ELSE
245 char_skew=''
246 ENDIF
247
248 IF (igeo(11,ixr(1,i))==45) numel_kj = numel_kj + 1
249 IF(ixr(4,i)==0) THEN
250 WRITE (iout,'(5(I10,1X),44X,A,A)') i,ixr(nixr,i),pid,
251 . itab(ixr(2,i)),itab(ixr(3,i)),char_mat,char_skew
252 ELSEIF (flag_kj(i)>0) THEN
253 IF (flag_kj(i) == 1) THEN
254 WRITE (iout,'(7(I10,1X),A,A)') i,ixr(nixr,i),pid,
255 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),
256 . (itab(ixr_kj(j,i)),j=1,flag_kj(i)),char_mat,char_skew
257 ELSEIF (flag_kj(i) == 2) THEN
258 WRITE (iout,'(8(I10,1X),A,A)') i,ixr(nixr,i),pid,
259 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),
260 . (itab(ixr_kj(j,i)),j=1,flag_kj(i)),char_mat,char_skew
261 ELSEIF (flag_kj(i) == 3) THEN
262 WRITE (iout,'(9(I10,1X),A,A)') i,ixr(nixr,i),pid,
263 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),
264 . (itab(ixr_kj(j,i)),j=1,flag_kj(i)),char_mat,char_skew
265 ENDIF
266 ELSE
267 WRITE (iout,'(6(I10,1X),33X,A,A)') i,ixr(nixr,i),pid,
268 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),char_mat,char_skew
269 ENDIF
270
271 100 CONTINUE
272 IF(i2==numelr)GOTO 200
273 i1=i1+50
274 i2=min0(i2+50,numelr)
275 GOTO 90
276
277
278 200 CONTINUE
279
280
281
282
283 IF (numel_kj>0) THEN
284 DO i=1,numelr
285 DO j=1,3
286 ikj_tmp(j,i)=ixr_kj(j,i)
287 END DO
288 END DO
289 cpt = 0
290 ixr_kj(1,numelr+1)=numel_kj
291 DO i=1,numelr
292 IF (igeo(11,ixr(1,i))==45) THEN
293 cpt = cpt+1
294 DO j=1,3
295 ixr_kj(j,cpt)=ikj_tmp(j,i)
296 END DO
297 ixr_kj(4,cpt)=ixr(nixr,i)
298 ixr_kj(5,cpt)=i
299 ENDIF
300 END DO
301 ENDIF
302
303
304 RETURN
305 300 FORMAT(/' SPRING ELEMENTS'/
306 + ' ---------------'/
307 + ' LOC-EL GLO-EL GEOM NODE1 NODE2'
308 + ' (NODE3) (MAT_ID) (SKEW)')
309 RETURN
void anodset(int *id, int *type)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
integer function usr2sys(iu, itabm1, mess, id)
subroutine vdouble(list, ilist, nlist, mess, ir, rlist)