60 numnp,numlstet,lmlstet,meshcoor,nstart,nend)
69 REAL*8 meshcoor(3,numnp)
71 INTEGER lmlstet(10,numlstet)
72 INTEGER ielem , nx, ny, nz
75 INTEGER ndof, nnode, ndim, nmat, nsurf, nload
78 REAL*8 meshpos(3,10), meshvel(3,10), meshacc(3,10), &
79 sload(4,1,3), bforce(3), elmass(30,30), elstiff(30,30), &
80 eldamp(30,30), elload(30), elstiff2(30,30)
83 INTEGER ndim_v, ndim_s, nintk_v, nintk_s,knode, &
84 knodr, knodc,
i,
j,rindx,cindx,
k,mm,ll, &
85 fp(2,6),iface,igauss, grindx,grindy,grindz
88 parameter(ndim_v = 3, ndim_s = 2, nintk_v = 4,nintk_s = 3)
93 DOUBLE PRECISION shfn(10,10), shdx(3,10,10), dv(10), dvsum, &
94 delta(3,3), mvgss(3), magss(3), mcgss(3,3), two, &
95 wsp1,wsparr(3),trmcgss,wsp2,wsp3,wsp4,one,lambda, &
96 mu,third,wsp5,vxi(10),veta(10),vzeta(10),wt_lstet, &
97 sxi(4,6),seta(4,6),szeta(4,6),shdxi(3,10,10), &
98 wsparr1(3),shdx_av(3,10),
zero, half
100 DOUBLE PRECISION disp(30), velo(30), rimsi(30), dimsi(30)
101 DOUBLE PRECISION multiplier , ajacin(3,3), surfnormal(3,4)
102 DOUBLE PRECISION factor
104 INTEGER :: nstart, nend
106 parameter(
zero = 0.d0, one = 1.d0, two = 2.d0)
107 DATA delta/1.d0,0.d0,0.d0,0.d0,1.d0,0.d0,0.d0,0.d0,1.d0/
120 multiplier = 1.d0/6.d0
136 vxi( 1) = 0.13819660d0
137 veta( 1) = 0.13819660d0
138 vzeta(1) = 0.13819660d0
141 vxi( 2) = 0.58541020d0
142 veta( 2) = 0.13819660d0
143 vzeta(2) = 0.13819660d0
146 vxi( 3) = 0.13819660d0
147 veta( 3) = 0.58541020d0
148 vzeta(3) = 0.13819660d0
151 vxi( 4) = 0.13819660d0
152 veta( 4) = 0.13819660d0
153 vzeta(4) = 0.58541020d0
157 DO ielem = nstart, nend
166 nx = lmlstet(
i,ielem)*3-2
167 ny = lmlstet(
i,ielem)*3-1
168 nz = lmlstet(
i,ielem)*3
169 meshpos(1,
i)=meshcoor(1,lmlstet(
i,ielem))
170 meshpos(2,
i)=meshcoor(2,lmlstet(
i,ielem))
171 meshpos(3,
i)=meshcoor(3,lmlstet(
i,ielem))
172 disp(
i*3-2) =d_bar(nx)
173 disp(
i*3-1) =d_bar(ny)
174 disp(
i*3 ) =d_bar(nz)
178 CALL
shcalc_3d10(shfn, shdx, dv, dvsum, shdx_av, meshpos, &
179 ndim,nnode,nintk_v,vxi,veta,vzeta,shdxi,ajacin)
184 factor=multiplier*wt_lstet
185 DO igauss = 1, nintk_v
188 elstiff(knodr,knodc) = elstiff(knodr,knodc) + &
189 ( shdx(1,knodr,igauss)*shdx(1,knodc,igauss)+ &
190 shdx(2,knodr,igauss)*shdx(2,knodc,igauss)+ &
191 shdx(3,knodr,igauss)*shdx(3,knodc,igauss) &
198 nx = lmlstet(
i,ielem)*3-2
199 ny = lmlstet(
i,ielem)*3-1
200 nz = lmlstet(
i,ielem)*3
202 r_bar(nx)=r_bar(nx)+ elstiff(
i,
j)*disp(
j*3-2)
203 r_bar(ny)=r_bar(ny)+ elstiff(
i,
j)*disp(
j*3-1)
204 r_bar(nz)=r_bar(nz)+ elstiff(
i,
j)*disp(
j*3-0)
void zero()
Sets all entries to zero (more efficient than assignement).
subroutine shcalc_3d10(shfn, shdx, dv, dvsum, shdx_av, meshpos, ndim, nnode, nintk, xi, eta, zeta, shdxi, wsp2)
subroutine v3d10_r_bar(d_bar, R_bar, numnp, numlstet, lmlstet, meshcoor, nstart, nend)