37 use element_mod , only : nixp
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "mvsiz_p.inc"
46
47
48
49#include "param_c.inc"
50
51
52
53 INTEGER FXBELM(*), IPARG(NPARG,*), IXP(NIXP,*), NELP
54 INTEGER, INTENT (IN ) :: IBEAM_VECTOR(NELP)
56 . x(3,*), pm(npropm,*), geo(npropg,*), fxbmod(*),
57 . fxbsig(*), r(3,*)
58 my_real ,
INTENT (IN ) :: rbeam_vector(3,nelp)
59
60
61
62 INTEGER IG, OFFSET, LAST, NFT, NFS, I, NG, IEL,
63 . N1, N2
64 INTEGER MAT(MVSIZ), PROP(MVSIZ)
66 . ee1x(mvsiz), ee1y(mvsiz), ee1z(mvsiz),
67 . ee2x(mvsiz), ee2y(mvsiz), ee2z(mvsiz),
68 . ee3x(mvsiz), ee3y(mvsiz), ee3z(mvsiz)
70 . vl(3,2,mvsiz), vrl(3,2,mvsiz)
72 . x1(mvsiz), y1(mvsiz), z1(mvsiz),
73 . x2(mvsiz), y2(mvsiz), z2(mvsiz),
74 . x3(mvsiz), y3(mvsiz), z3(mvsiz)
76 . e2x, e2y, e2z, ee2, rloc(3,mvsiz),
77 . d11, d12, d13, d21, d22, d23,
78 . dr11, dr12, dr13, dr21, dr22, dr23,
79 . al(mvsiz)
81 .
for(3,mvsiz), mom(3,mvsiz), eint(2,mvsiz),
82 . exx(mvsiz), exy(mvsiz), exz(mvsiz),
83 . kxx(mvsiz), kyy(mvsiz), kzz(mvsiz)
84
85
86 DO ig=1,nelp,mvsiz
87 offset=ig-1
88 last=
min(mvsiz,nelp-offset)
89 nft=offset*9
90 nfs=offset*8
91 DO i=1,last
92 ng=fxbelm(nft+9*(i-1)+1)
93 iel=iparg(3,ng)+fxbelm(nft+9*(i-1)+2)
94 mat(i)=ixp(1,iel)
95 prop(i)=ixp(5,iel)
96 x1(i)=x(1,ixp(2,iel))
97 y1(i)=x(2,ixp(2,iel))
98 z1(i)=x(3,ixp(2,iel))
99 x2(i)=x(1,ixp(3,iel))
100 y2(i)=x(2,ixp(3,iel))
101 z2(i)=x(3,ixp(3,iel))
102 x3(i)=x(1,ixp(4,iel))
103 y3(i)=x(2,ixp(4,iel))
104 z3(i)=x(3,ixp(4,iel))
105 IF (ibeam_vector(iel) > 1) THEN
106 e2x=rbeam_vector(1,iel)
107 e2y=rbeam_vector(2,iel)
108 e2z=rbeam_vector(3,iel)
109 ELSE
110 e2x=x3(i)-x1(i)
111 e2y=y3(i)-y1(i)
112 e2z=z3(i)-z1(i)
113 ENDIF
114 ee2=sqrt(e2x**2+e2y**2+e2z**2)
115 rloc(1,i)=e2x/ee2
116 rloc(2,i)=e2y/ee2
117 rloc(3,i)=e2z/ee2
118 n1=fxbelm(nft+9*(i-1)+3)
119 n2=fxbelm(nft+9*(i-1)+4)
120 d11=fxbmod(6*(n1-1)+1)
121 d12=fxbmod(6*(n1-1)+2)
122 d13=fxbmod(6*(n1-1)+3)
123 d21=fxbmod(6*(n2-1)+1)
124 d22=fxbmod(6*(n2-1)+2)
125 d23=fxbmod(6*(n2-1)+3)
126 vl(1,1,i)=r(1,1)*d11+r(1,2)*d12+r(1,3)*d13
127 vl(2,1,i)=r(2,1)*d11+r(2,2)*d12+r(2,3)*d13
128 vl(3,1,i)=r(3,1)*d11+r(3,2)*d12+r(3,3)*d13
129 vl(1,2,i)=r(1,1)*d21+r(1,2)*d22+r(1,3)*d23
130 vl(2,2,i)=r(2,1)*d21+r(2,2)*d22+r(2,3)*d23
131 vl(3,2,i)=r(3,1)*d21+r(3,2)*d22+r(3,3)*d23
132 dr11=fxbmod(6*(n1-1)+4)
133 dr12=fxbmod(6*(n1-1)+5)
134 dr13=fxbmod(6*(n1-1)+6)
135 dr21=fxbmod(6*(n2-1)+4)
136 dr22=fxbmod(6*(n2-1)+5)
137 dr23=fxbmod(6*(n2-1)+6)
138 vrl(1,1,i)=r(1,1)*dr11+r(1,2)*dr12+r(1,3)*dr13
139 vrl(2,1,i)=r(2,1)*dr11+r(2,2)*dr12+r(2,3)*dr13
140 vrl(3,1,i)=r(3,1)*dr11+r(3,2)*dr12+r(3,3)*dr13
141 vrl(1,2,i)=r(1,1)*dr21+r(1,2)*dr22+r(1,3)*dr23
142 vrl(2,2,i)=r(2,1)*dr21+r(2,2)*dr22+r(2,3)*dr23
143 vrl(3,2,i)=r(3,1)*dr21+r(3,2)*dr22+r(3,3)*dr23
147 mom(1,i)=zero
148 mom(2,i)=zero
149 mom(3,i)=zero
150 ENDDO
151
152 CALL pevecii(x1, y1, z1, x2, y2,
153 . z2, vrl, rloc, al, last,
154 . ee1x, ee1y, ee1z,
155 . ee2x, ee2y, ee2z,
156 . ee3x, ee3y, ee3z)
157
158 CALL pdefoi(vl , exx , exy, exz, al, last,
159 . ee1x, ee1y, ee1z,
160 . ee2x, ee2y, ee2z,
161 . ee3x, ee3y, ee3z)
162 CALL pcurvi(vrl, geo , kxx , kyy , kzz ,
163 . exy , exz , al , last, prop,
164 . ee1x, ee1y, ee1z,
165 . ee2x, ee2y, ee2z,
166 . ee3x, ee3y, ee3z)
167
169 . exx, exy, exz , kxx , kyy,
170 . kzz, al , last, mat , prop)
171
172 DO i=1,last
173 fxbsig(nfs+8*(i-1)+1)=
for(1,i)
174 fxbsig(nfs+8*(i-1)+2)=
for(2,i)
175 fxbsig(nfs+8*(i-1)+3)=
for(3,i)
176 fxbsig(nfs+8*(i-1)+4)=mom(1,i)
177 fxbsig(nfs+8*(i-1)+5)=mom(2,i)
178 fxbsig(nfs+8*(i-1)+6)=mom(3,i)
179 fxbsig(nfs+8*(i-1)+7)=eint(1,i)
180 fxbsig(nfs+8*(i-1)+8)=eint(2,i)
181 ENDDO
182 ENDDO
183
184 RETURN
subroutine pevecii(x1, y1, z1, x2, y2, z2, r, rloc, al, nel, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine pm1inif(pm, for, mom, eint, geo, exx, exy, exz, kxx, kyy, kzz, al, nel, mat, mgm)
subroutine pdefoi(v, exx, exy, exz, al, nel, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine pcurvi(v, geo, kxx, kyy, kzz, exy, exz, al, nel, mgm, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
for(i8=*sizetab-1;i8 >=0;i8--)