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