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