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