65 SUBROUTINE shcalc_3d10(shfn, shdx, dv, dvsum, shdx_av, meshpos, &
66 ndim,nnode,nintk,xi,eta,zeta,shdxi,wsp2)
70 INTEGER ndim, nnode, nintk
72 REAL*8 :: shfn(nnode,nintk), shdx(ndim,nnode,nintk), &
73 dv(nintk), dvsum, shdx_av(ndim,nnode), &
74 meshpos(ndim,nnode),xi(nintk),eta(nintk), &
75 zeta(nintk),shdxi(ndim,nnode,nintk)
77 REAL*8 :: wsp1(3,3),wsp2(3,3),eighth,one,
zero,four, two
79 REAL*8 :: sh(10), d_sh(3,10) ,
r,
s, t, u, wi
80 INTEGER igauss, knode,
i,
j
100 sh(1) = u * ( two * u - one )
101 sh(2) =
r * ( two *
r - one )
102 sh(3) =
s * ( two *
s - one )
103 sh(4) = t * ( two * t - one )
112 d_sh(1,1) = -four * u + one
113 d_sh(2,1) = -four * u + one
114 d_sh(3,1) = -four * u + one
116 d_sh(1,2) = four *
r - one
121 d_sh(2,3) = four *
s - one
126 d_sh(3,4) = four * t - one
128 d_sh(1,5) = - four *
r + four * (one-
r-
s-t)
129 d_sh(2,5) = - four *
r
130 d_sh(3,5) = - four *
r
136 d_sh(1,7) = - four *
s
137 d_sh(2,7) = - four *
s + four * (one-
r-
s-t)
138 d_sh(3,7) = - four *
s
140 d_sh(1,8)= - four * t
141 d_sh(2,8)= - four * t
142 d_sh(3,8)= - four * t + four * (one-
r-
s-t)
149 d_sh(2,10) = four * t
150 d_sh(3,10) = four *
s
153 shfn(
j,igauss) = sh(
j)
158 shdxi(
i,
j,igauss) = d_sh(
i,
j)
169 wsp1(
i,
j) = wsp1(
i,
j) + meshpos(
i,knode)* &
170 shdxi(
j,knode,igauss)
175 CALL
ainv(wsp1,wsp2,dv(igauss),ndim)
177 dvsum = dvsum + dv(igauss) * wi
183 shdx(
i,knode,igauss) =
zero
185 shdx(
i,knode,igauss) = shdx(
i,knode,igauss) + &
186 shdxi(
j,knode,igauss)*wsp2(
j,
i)
void zero()
Sets all entries to zero (more efficient than assignement).
subroutine ainv(ajac, ajacin, det, ndim)
subroutine shcalc_3d10(shfn, shdx, dv, dvsum, shdx_av, meshpos, ndim, nnode, nintk, xi, eta, zeta, shdxi, wsp2)