40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
63 USE reader_old_mod , ONLY : line
64 USE user_id_mod , ONLY : id_limit
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)::(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,ID,IDS,J,IPID,JC,STAT,IMID,IGTYP,MID
105 INTEGER FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP
106 INTEGER FLAG_KJ(NUMELR),IKJ_TMP(3,NUMELR),NUMEL_KJ,CPT,
107 . INDEX_PART
108 CHARACTER *40, MESS2*40, CHAR_MAT*11, CHAR_SKEW*11
110 . bid
111 INTEGER, DIMENSION(:), ALLOCATABLE :: SUB_SPRING,SKEWID
112
113
114
115 INTEGER NINTRN
116 INTEGER USR2SYS
117 DATA mess /'3D SPRING ELEMENTS DEFINITION '/
118 DATA mess2/'3D SPRING ELEMENTS SELECTION FOR TH PLOT'/
119
120
121
122
123 ALLOCATE (sub_spring(numelr),stat=stat)
124 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
125 . msgtype=msgerror,
126 . c1='SUB_SPRING')
127 sub_spring(1:numelr) = 0
128 ALLOCATE (skewid(numelr),stat=stat)
129 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
130 . msgtype=msgerror,
131 . c1='SKEWID')
132 skewid(1:numelr) = 0
133 index_part = 1
134
135
136
137 CALL cpp_spring_read(ixr,nixr,ixr_kj,5,ipartr,sub_spring,skewid)
138
139
140
141 i=0
142 numel_kj = 0
143
144 DO n=1,numelr
145 i = i + 1
146
147
148
149 IF( ipart(4,index_part) /= ipartr(i) )THEN
150 DO j=1,npart
151 IF(ipart(4,j)== ipartr(i) ) index_part = j
152 ENDDO
153 ENDIF
154 IF( ipart(4,index_part) /= ipartr(i) ) THEN
156 . msgtype=msgerror,
157 . anmode=aninfo_blind_1,
158 . c1="SPRING",
159 . i1=ipartr(i),
160 . i2=ipartr(i),
161 . prmod=msg_cumu)
162 ENDIF
163 ipid=ipart(2,index_part)
164 imid=ipart(1,index_part)
165 igtyp=igeo(11,ipid)
166 ixr(5,i)=0
167
168 IF(igtyp == 23) ixr(5,i)=imid
169 ipartr(i) = index_part
170
171
172 flag_kj(i) = 0
173 DO j=1,3
174 IF (ixr_kj(j,i)/=0) flag_kj(i) = flag_kj(i) + 1
175 END DO
176
177 IF (ixr(nixr,i)>id_limit%GLOBAL) THEN
178 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,
179 . i1=ixr(nixr,i),c1=line,c2='/SPRING')
180 ENDIF
181 ixr(1,i)=ipid
182 ixr(2,i)=
usr2sys(ixr(2,i),itabm1,mess,ixr(nixr,i))
183 ixr(3,i)=
usr2sys(ixr(3,i),itabm1,mess,ixr(nixr,i))
184 CALL anodset(ixr(2,i), check_spring)
185 CALL anodset(ixr(3,i), check_spring)
186 IF(ixr(4,i)/=0) THEN
187 ixr(4,i)=
usr2sys(ixr(4,i),itabm1,mess,ixr(nixr,i))
188 CALL anodset(ixr(4,i), check_used)
189 ENDIF
190
191 IF (flag_kj(i)>0) THEN
192 DO j=1,3
193 IF(ixr_kj(j,i)/=0) THEN
194 ixr_kj(j,i)=
usr2sys(ixr_kj(j,i),itabm1,mess,ixr(nixr,i))
195 CALL anodset(ixr_kj(j,i), check_used)
196 ENDIF
197 END DO
198 ENDIF
199
200 IF (skewid(i) > 0) THEN
202 IF (skewid(i) == iskn(4,j+1)) THEN
203 r_skew(i) = j+1
204 GO TO 500
205 ENDIF
206 ENDDO
207 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
208 . c1='SPRING',
209 . c2='SPRING',
210 . i1=ixr(nixr,i),i2=skewid(i))
211500 CONTINUE
212 ENDIF
213 ENDDO
214
215 IF(ALLOCATED(sub_spring)) DEALLOCATE(sub_spring)
216
218 . msgtype=msgerror,
219 . anmode=aninfo_blind_1,
220 . prmod=msg_print)
221
222
223
224 ids = 79
225 i = 0
226 j = 0
227 CALL vdouble(ixr(nixr,1),nixr,numelr,mess,0,bid)
228 ids = 35
229
230 i1=1
231 i2=min0(50,numelr)
232
233 90 WRITE (iout,300)
234 DO 100 i=i1,i2
235 pid = igeo(1,ixr(1,i))
236
237 IF (ixr(5,i) > 0) THEN
238 mid = ipm(1,ixr(5,i))
239 WRITE (char_mat,'(I10,1X)') mid
240 ELSE
241 char_mat=''
242 ENDIF
243
244 IF (skewid(i) > 0) THEN
245 WRITE (char_skew,'(I10)') skewid(i)
246 ELSE
247 char_skew=''
248 ENDIF
249
250 IF (igeo(11,ixr(1,i))==45) numel_kj = numel_kj + 1
251 IF(ixr(4,i)==0) THEN
252 WRITE (iout,'(5(I10,1X),44X,A,A)') i,ixr(nixr,i),pid,
253 . itab(ixr(2,i)),itab(ixr(3,i)),char_mat,char_skew
254 ELSEIF (flag_kj(i)>0) THEN
255 IF (flag_kj(i) == 1) THEN
256 WRITE (iout,'(7(I10,1X),A,A)') i,ixr(nixr,i),pid,
257 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),
258 . (itab(ixr_kj(j,i)),j=1,flag_kj(i)),char_mat,char_skew
259 ELSEIF (flag_kj(i) == 2) THEN
260 WRITE (iout,'(8(I10,1X),A,A)') i,ixr(nixr,i),pid,
261 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),
262 . (itab(ixr_kj(j,i)),j=1,flag_kj(i)),char_mat,char_skew
263 ELSEIF (flag_kj(i) == 3) THEN
264 WRITE (iout,'(9(I10,1X),A,A)') i,ixr(nixr,i),pid,
265 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),
266 . (itab(ixr_kj(j,i)),j=1,flag_kj(i)),char_mat,char_skew
267 ENDIF
268 ELSE
269 WRITE (iout,'(6(I10,1X),33X,A,A)') i,ixr(nixr,i),pid,
270 . itab(ixr(2,i)),itab(ixr(3,i)),itab(ixr(4,i)),char_mat,char_skew
271 ENDIF
272
273 100 CONTINUE
274 IF(i2==numelr)GOTO 200
275 i1=i1+50
276 i2=min0(i2+50,numelr)
277 GOTO 90
278
279
280 200 CONTINUE
281
282
283
284
285 IF (numel_kj>0) THEN
286 DO i=1,numelr
287 DO j=1,3
288 ikj_tmp(j,i)=ixr_kj(j,i)
289 END DO
290 END DO
291 cpt = 0
292 ixr_kj(1,numelr+1)=numel_kj
293 DO i=1,numelr
294 IF (igeo(11,ixr(1,i))==45) THEN
295 cpt = cpt+1
296 DO j=1,3
297 ixr_kj(j,cpt)=ikj_tmp(j,i)
298 END DO
299 ixr_kj(4,cpt)=ixr(nixr,i)
300 ixr_kj(5,cpt)=i
301 ENDIF
302 END DO
303 ENDIF
304
305
306 RETURN
307 300 FORMAT(/' SPRING ELEMENTS'/
308 + ' ---------------'/
309 + ' LOC-EL GLO-EL GEOM NODE1 NODE2'
310 + ' (NODE3) (MAT_ID) (SKEW)')
311 310 FORMAT(' SPRING ELEMENT TH SELECTION'/
312 + ' ---------------------------'/)
313 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)