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#include "implicit_f.inc"
69
70
71
72#include "analyse_name.inc"
73
74
75
76#include "scr17_c.inc"
77#include "com04_c.inc"
78#include "param_c.inc"
79#include "units_c.inc"
80
81
82
83
84 INTEGER,INTENT(IN)::ITAB(*)
85 INTEGER,INTENT(IN)::ITABM1(*)
86 INTEGER,INTENT(IN)::IPART(LIPART1,*)
87 INTEGER,INTENT(IN)::(NPROPGI,*)
88 INTEGER,INTENT(IN)::IPM(NPROPMI,*)
89 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL()
90
91 INTEGER,INTENT(OUT)::IXT(NIXT,*)
92 INTEGER,INTENT(OUT)::IPARTT(*)
93
94
95
96 INTEGER I, I1, I2, MID, PID,MT,IPID,ID,IDS,J,N,JC,STAT
97 INTEGER FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,CPT,
98 . INDEX_PART
99 CHARACTER MESS*40, MESS2*40
101 . bid
102 INTEGER, DIMENSION(:), ALLOCATABLE :: SUB_TRUSS
103
104
105
106 INTEGER NINTRN
107 INTEGER USR2SYS
108
109 DATA mess/'3D TRUSS ELEMENTS DEFINITION '/
110 DATA mess2/'3D TRUSS ELEMENTS SELECTION FOR TH PLOT '/
111
112
113
114
115 ALLOCATE (sub_truss(numelt),stat=stat)
116 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
117 . msgtype=msgerror,
118 . c1='SUB_TRUSS')
119 sub_truss(1:numelt) = 0
120 index_part = 1
121
122
123
124 CALL cpp_truss_read(ixt,nixt,ipartt,sub_truss)
125
126
127
128 i=0
129 DO n=1,numelt
130 i = i + 1
131
132
133
134 IF( ipart(4,index_part) /= ipartt(i) )THEN
135 DO j=1,npart
136 IF(ipart(4,j)== ipartt(i) ) index_part = j
137 ENDDO
138 ENDIF
139 IF( ipart(4,index_part) /= ipartt(i) ) THEN
141 . msgtype=msgerror,
142 . anmode=aninfo_blind_1,
143 . c1="TRUSS",
144 . i1=ipartt(i),
145 . i2=ipartt(i),
146 . prmod=msg_cumu)
147 ENDIF
148 ipartt(i) = index_part
149
150 mt=ipart(1,index_part)
151 ipid=ipart(2,index_part)
152 ixt(1,i)=mt
153 ixt(4,i)=ipid
154
155 IF (ixt(5,i)>id_limit%GLOBAL) THEN
156 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,
157 . i1=ixt(5,i),c1=line,c2='/TRUSS')
158 ENDIF
159
160 DO j=2,3
161 ixt(j,i)=
usr2sys(ixt(j,i),itabm1,mess,ixt(5,i))
162 CALL anodset(ixt(j,i), check_truss)
163 ENDDO
164 ENDDO
165 IF(ALLOCATED(sub_truss)) DEALLOCATE(sub_truss)
166
168 . msgtype=msgerror,
169 . anmode=aninfo_blind_1,
170 . prmod=msg_print)
171
172 i1=1
173 i2=min0(50,numelt)
174
175
176
177 ids = 79
178 i = 0
179 j = 0
180
181 CALL vdouble(ixt(nixt,1),nixt,numelt,mess,0,bid)
182
183 ids = 21
184
185
186 90 WRITE (iout,300)
187 DO i=i1,i2
188 mid=ipm(1,ixt(1,i))
189 pid=igeo(1,ixt(4,i))
190 WRITE (iout,'(6(I10,1X))') i,ixt(5,i),mid,pid,
191 . itab(ixt(2,i)),itab(ixt(3,i))
192 ENDDO
193 IF(i2==numelt)GOTO 200
194 i1=i1+50
195 i2=min0(i2+50,numelt)
196 GOTO 90
197
198 200 CONTINUE
199 RETURN
200
201 300 FORMAT(/' TRUSS ELEMENTS' /
202 + ' --------------' /
203 + ' LOC-EL GLO-EL MATER GEOM NODE1 NODE2')
204 310 FORMAT(' TRUSS ELEMENT TH SELECTION'/
205 + ' --------------------------'/)
206 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)