53 SUBROUTINE shcalc(shfn, shdx, dv, dvsum, shdx_av, meshpos, &
54 ndim,nnode,nintk,xi,eta,zeta,shdxi,wsp2)
68 INTEGER ndim, nnode, nintk
70 DOUBLE PRECISION shfn(nnode,nintk), shdx(ndim,nnode,nintk), &
71 dv(nintk), dvsum, shdx_av(ndim,nnode), &
72 meshpos(ndim,nnode),xi(nintk),eta(nintk), &
73 zeta(nintk),shdxi(ndim,nnode,nintk)
75 DOUBLE PRECISION wsp1(3,3),wsp2(3,3),eighth,one,
zero
77 INTEGER igauss, knode,
i,
j
88 shfn(1,igauss) = zeta(igauss)
89 shfn(2,igauss) = xi(igauss)
90 shfn(3,igauss) = one-xi(igauss)-eta(igauss)-zeta(igauss)
91 shfn(4,igauss) = eta(igauss)
93 shdxi(1,1,igauss) =
zero
94 shdxi(2,1,igauss) =
zero
95 shdxi(3,1,igauss) = one
97 shdxi(1,2,igauss) = one
98 shdxi(2,2,igauss) =
zero
99 shdxi(3,2,igauss) =
zero
101 shdxi(1,3,igauss) =-one
102 shdxi(2,3,igauss) =-one
103 shdxi(3,3,igauss) =-one
105 shdxi(1,4,igauss) =
zero
106 shdxi(2,4,igauss) = one
107 shdxi(3,4,igauss) =
zero
117 wsp1(
i,
j) = wsp1(
i,
j) + meshpos(
i,knode)* &
118 shdxi(
j,knode,igauss)
123 CALL
ainv(wsp1,wsp2,dv(igauss),ndim)
129 shdx(
i,knode,igauss) =
zero
131 shdx(
i,knode,igauss) = shdx(
i,knode,igauss) + &
132 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(shfn, shdx, dv, dvsum, shdx_av, meshpos, ndim, nnode, nintk, xi, eta, zeta, shdxi, wsp2)