47
48
49
51 USE elbufdef_mod
52
53
54
55#include "implicit_f.inc"
56
57
58
59#include "com01_c.inc"
60#include "com04_c.inc"
61#include "scr23_c.inc"
62#include "param_c.inc"
63#include "units_c.inc"
64
65
66
67 INTEGER KXX(NIXX,*),IXX(*),
68 . IPARTX(*), UIX(*), NFACPTX(3,*),
69 . IPARG(NPARG,*), ITAB(*),
70 . INUMX1(*), INUMX2(*), INUMX3(*),
71 . IOFFX1(*), IOFFX2(*), IOFFX3(*),
72 . IXEDGE(2,*), IXFACET(4,*), IXSOLID(8,*),
73 . NANIM1D_L
75 . x(3,*), pm(npropm,*), geo(npropg,*),
76 . bufmat(*) ,bufgeo(*) ,
77 . xusr(3,*) ,
78 . xmass1(*), xmass2(*), xmass3(*),
79 . xfunc1(10,*), xfunc2(10,*), xfunc3(10,*)
80
81 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
82
83
84
85
87 . off, massele, eintele
88 INTEGER IPRT, NG, MYNEL, MYNFT, MYIAD, MYITY,
89 . I, J, K, IPROP, IMAT, NX,
90 . UID,
91 . IGTYP,NUVAR,NUVARN,
92 . L, NAX1D, NAX2D, NAX3D, NEDGE, NFACET, NSOLID,
93 . IADNOD, KVAR,KVARN
94 CHARACTER*40 MESS
95
96 TYPE(G_BUFEL_) ,POINTER :: GBUF
97
98
99
100
101
102 DATA mess/'MULTI-PURPOSE ELEMENT DISCRETIZATION '/
103
104 nax1d=0
105 nax2d=0
106 nax3d=0
107
108 DO iprt=1,npart
109 DO ng=1,ngroup
110 mynel =iparg(2,ng)
111 mynft =iparg(3,ng)
112 myiad =iparg(4,ng)
113 myity =iparg(5,ng)
114
115 gbuf => elbuf_tab(ng)%GBUF
116
117 IF (myity == 100) THEN
118 DO 150 i=1,mynel
119 j=i+mynft
120 IF (ipartx(j) /= iprt) GOTO 150
121
122 imat =kxx(1,j)
123 iprop=kxx(2,j)
124 nx =kxx(3,j)
125
126 igtyp = nint(geo(12,iprop))
127 nuvar = nint(geo(25,iprop))
128 nuvarn= nint(geo(35,iprop))
129 kvar = nuvar*(i-1)+1
130 kvarn = nuvarn*nx*(i-1)+1
131
132
133 CALL xcoor3(x ,kxx(1,j) ,ixx ,itab ,nx ,
134 2 uid ,uix ,xusr )
135 iadnod=kxx(4,j)
136 DO k=1,nx
137 uix(nx+k)=ixx(iadnod+k-1)
138 ENDDO
139
144
145
146
147 nedge =0
148 nfacet =0
149 nsolid =0
150 off = gbuf%OFF(i)
151 eintele= gbuf%EINT(i)
152 massele= gbuf%MASS(i)
153
154
155
156 IF (igtyp == 28) THEN
157 CALL xanim28(nx ,uix ,uid ,xusr ,
158 2 iout ,iprop ,imat ,
159 3 off ,massele ,eintele ,
160 4 nedge , nfacet , nsolid ,
161 5 ixedge(1,nax1d+1), ixfacet(1,nax2d
162 6 xmass1(nax1d+1) , xmass2(nax2d+1) , xmass3(nax3d+1),
163 7 xfunc1(1,nax1d+1) ,xfunc2(1,nax2d+1) ,xfunc3(1,nax3d+1) ,
164 8 nuvar ,gbuf%VAR(kvar) ,nuvarn ,gbuf%VARN(kvarn))
165
166 ELSEIF (igtyp == 29) THEN
167 CALL xanim29(nx ,uix ,uid ,xusr ,
168 2 iout ,iprop ,imat ,
169 3 off ,massele ,eintele ,
170 4 nedge , nfacet , nsolid ,
171 5 ixedge(1,nax1d+1), ixfacet(1,nax2d+1),ixsolid(1,nax3d+1),
172 6 xmass1(nax1d+1) , xmass2(nax2d+1) , xmass3(nax3d+1),
173 7 xfunc1(1,nax1d+1) ,xfunc2(1,nax2d+1) ,xfunc3(1,nax3d+1) ,
174 8 nuvar ,gbuf%VAR(kvar) ,nuvarn ,gbuf%VARN(kvarn))
175
176 ELSEIF (igtyp == 30) THEN
177 CALL xanim30(nx ,uix ,uid ,xusr ,
178 2 iout ,iprop ,imat ,
179 3 off ,massele ,eintele ,
180 4 nedge , nfacet , nsolid ,
181 5 ixedge(1,nax1d+1), ixfacet(1,nax2d+1),ixsolid(1,nax3d+1),
182 6 xmass1(nax1d+1) , xmass2(nax2d+1) , xmass3(nax3d+1),
183 7 xfunc1(1,nax1d+1) ,xfunc2(1,nax2d+1) ,xfunc3(1,nax3d+1) ,
184 8 nuvar ,gbuf%VAR(kvar),nuvarn ,gbuf%VARN
185
186 ELSEIF (igtyp == 31) THEN
187 CALL xanim31(nx ,uix ,uid ,xusr ,
188 2 iout ,iprop ,imat ,
189 3 off ,massele ,eintele ,
190 4 nedge , nfacet , nsolid ,
191 5 ixedge(1,nax1d+1), ixfacet(1,nax2d+1),ixsolid(1,nax3d+1),
192 6 xmass1(nax1d+1) , xmass2(nax2d+1) , xmass3(nax3d+1),
193 7 xfunc1(1,nax1d+1) ,xfunc2(1,nax2d+1) ,xfunc3(1,nax3d+1) ,
194 8 nuvar ,gbuf%VAR(kvar),nuvarn ,gbuf%VARN(kvarn))
195
196 ENDIF
197
198 nfacptx(1,iprt)=nfacptx(1,iprt)+nedge
199 nfacptx(2,iprt)=nfacptx(2,iprt)+nfacet
200 nfacptx(3,iprt)=nfacptx(3,iprt)+nsolid
201
202 DO l=1,nedge
203 ioffx1(nax1d+l)=nint(
min(gbuf%OFF(i),one))
204
205 inumx1(nax1d+l)=kxx(nixx,j)
206 ixedge(1,nax1d+l)=ixx(iadnod+ixedge(1,nax1d+l)-1)
207 ixedge(2,nax1d+l)=ixx(iadnod+ixedge(2,nax1d+l)-1)
208 ENDDO
209 DO l=1,nfacet
210 ioffx2(nax2d+l)=nint(
min(gbuf%OFF(i),one))
211
212 inumx2(nax2d+l)=kxx(nixx,j)
213 ixfacet(1,nax2d+l)=ixx(iadnod+ixfacet(1,nax2d+l)-1)
214 ixfacet(2,nax2d+l)=ixx(iadnod+ixfacet(2,nax2d+l)-1)
215 ixfacet(3,nax2d+l)=ixx(iadnod+ixfacet(3,nax2d+l)-1)
216
217 ixfacet(4,nax2d+l)=ixx(iadnod+ixfacet(4,nax2d+l)-1)
218 ENDDO
219 DO l=1,nsolid
220 ioffx3(nax3d+l)=nint(
min(gbuf%OFF(i),one))
221
222 inumx3(nax3d+l)=kxx(nixx,j)
223 ixsolid(1,nax3d+l)=ixx(iadnod+ixsolid(1,nax3d+l)-1)
224 ixsolid(2,nax3d+l)=ixx(iadnod+ixsolid(2,nax3d+l)-1)
225 ixsolid(3,nax3d+l)=ixx(iadnod+ixsolid(3,nax3d+l)-1)
226 ixsolid(4,nax3d+l)=ixx(iadnod+ixsolid(4,nax3d+l)-1)
227 ixsolid(5,nax3d
228 ixsolid(6,nax3d+l)=ixx(iadnod+ixsolid(6,nax3d+l)-1)
229 ixsolid(7,nax3d+l)=ixx(iadnod+ixsolid(7,nax3d+l)-1)
230 ixsolid(8,nax3d+l)=ixx(iadnod+ixsolid(8,nax3d+l)-1)
231 ENDDO
232
233 nax1d=nax1d+nedge
234 nax2d=nax2d+nfacet
235 nax3d=nax3d+nsolid
236 nanim1d_l = nax1d
237
238 IF (nax1d > nanim1d .OR. nax2d > nanim2d .OR.
239 . nax3d > nanim3d) THEN
240 CALL ancmsg(msgid=28,anmode=aninfo)
242 ENDIF
243 150 CONTINUE
244 ENDIF
245 ENDDO
246 ENDDO
247
248
249
250
251
252
253
254
255
256 RETURN
void sav_buf_point(int *buf, int *i)
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)
subroutine xanim28(nx, uix, uid, xel, iout, iprop, imat, off, massele, eintele, nedge, nfacet, nsolid, ixedge, ixfacet, ixsolid, xmassed, xmassfa, xmassso, xfunced, xfuncfa, xfuncso, nuvar, uvar, nuvarn, uvarn)
subroutine xanim29(nx, uix, uid, xel, iout, iprop, imat, off, massele, eintele, nedge, nfacet, nsolid, ixedge, ixfacet, ixsolid, xmassed, xmassfa, xmassso, xfunced, xfuncfa, xfuncso, nuvar, uvar, nuvarn, uvarn)
subroutine xanim30(nx, uix, uid, xel, iout, iprop, imat, off, massele, eintele, nedge, nfacet, nsolid, ixedge, ixfacet, ixsolid, xmassed, xmassfa, xmassso, xfunced, xfuncfa, xfuncso, nuvar, uvar, nuvarn, uvarn)
subroutine xanim31(nx, uix, uid, xel, iout, iprop, imat, off, massele, eintele, nedge, nfacet, nsolid, ixedge, ixfacet, ixsolid, xmassed, xmassfa, xmassso, xfunced, xfuncfa, xfuncso, nuvar, uvar, nuvarn, uvarn)
subroutine xcoor3(x, kxx, ixx, itab, nx, uid, uix, xusr)