32
33
34
35 USE elbufdef_mod
36 use element_mod , only : nixt,nixp,nixr
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "com01_c.inc"
45#include "com04_c.inc"
46#include "param_c.inc"
47
48
49
50
52 . mas(*) ,pm(npropm,*),geo(npropg,*),x(3,*),
53 . d(3,*)
54 INTEGER (NPARG,*),
55 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),EL2FA(*),
56
57 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
58
59
60
61
63 . off, p, vonm2, vonm, s1, s2, s12, s3, VALUE,a0,al0,
64 . rho0,xx1,xx2,xx3,yy1,yy2,yy3,zz1,zz2,zz3
65 INTEGER I, NG, NEL, NFT, ITY, LFT, NPT, ISS, ISC,
66 . IADD, N, J, LLT, MLW,
67 . ISTRAIN,NN, K1, K2,JTURB,MT,
68 . N1,N2,N3,N4,NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,
69 . OFFSET,NEL_OLD,ITY_OLD,NFT_FA,N_FA,NUVAR
70 REAL R4
71
72 TYPE(G_BUFEL_) ,POINTER :: GBUF
73
74 nn1 = 1
75 nn2 = 1
76 nn3 = 1
77 nn4 = nn3
78 nn5 = nn4
79 nn6 = nn5
80 nn7 = nn6 + numelt
81 nn8 = nn7 + numelp
82
83
84 nel_old = 0
85 ity_old = 0
86 DO 490 ng=1,ngroup
87 mlw =iparg(1,ng)
88 nel =iparg(2,ng)
89 ity =iparg(5,ng)
90 nft =iparg(3,ng)
91 lft=1
92 llt=nel
93 nft_fa = nft
94
95 gbuf => elbuf_tab(ng)%GBUF
96
97
98
99 IF(ity==4)THEN
100 DO i=lft,llt
101 n = i + nft
102 n_fa = i + nft_fa
103 rho0 = pm(1,ixt(1,n))
104 a0 = geo(1,ixt(4,n))
105 n1 = ixt(2,n)
106 n2 = ixt(3,n)
107 xx1 = x(1,n2)-d(1,n2)-x(1,n1)+d(1,n1)
108 yy1 = x(2,n2)-d(2,n2)-x(2,n1)+d(2,n1)
109 zz1 = x(3,n2)-d(3,n2)-x(3,n1)+d(3,n1)
110 al0 = half*sqrt(xx1*xx1 + yy1*yy1 + zz1*zz1)
111 mas(el2fa(nn6+n_fa)) = rho0*al0*a0
112 ENDDO
113
114
115
116 ELSEIF(ity==5)THEN
117 DO i=lft,llt
118 n = i + nft
119 n_fa = i + nft_fa
120 rho0 = pm(1,ixp(1,n))
121 a0 = geo(1,ixp(5,n))
122 n1 = ixp(2,n)
123 n2 = ixp(3,n)
124 xx1 = x(1,n2)-d(1,n2)-x(1,n1)+d(1,n1)
125 yy1 = x(2,n2)-d(2,n2)-x(2,n1)+d(2,n1)
126 zz1 = x(3,n2)-d(3,n2)-x(3,n1)+d(3,n1)
127 al0 = half*sqrt(xx1*xx1 + yy1*yy1 + zz1*zz1)
128 mas(el2fa(nn7+n_fa)) = rho0*al0*a0
129 ENDDO
130
131
132
133 ELSEIF(ity==6)THEN
134 IF(mlw==3)THEN
135 DO i=lft,llt
136 n = i + nft
137 n_fa = i + nft_fa
138 mas(el2fa(nn8+n_fa)) = half*geo(1,ixr(1,n))
139 mas(el2fa(nn8+n_fa)+1) = half*geo(1,ixr(1,n))
140 ENDDO
141 ELSEIF(mlw==5) THEN
142
143
144 nuvar = nint(geo(25,ixr(1,1+nft)))
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159 DO i=lft,llt
160 n = i + nft
161 n_fa = i + nft_fa
162 mas(el2fa(nn8+n_fa)) = gbuf%MASS(i)
163
164 ENDDO
165 ELSE
166 DO i=lft,llt
167 n = i + nft
168 n_fa = i + nft_fa
169 mas(el2fa(nn8+n_fa)) = geo(1,ixr(1,n))
170 ENDDO
171 ENDIF
172 ELSE
173 ENDIF
174
175
176
177 490 CONTINUE
178
179
180 RETURN