Civil Engineering Reference
In-Depth Information
! -> not singular -> normal gauss quadrature
!-------------------------------------------------
Element_nodes:DO
n=1,Nodel
i=Inci(n) ! Collocation node
Shape_function: DO
ns=1, Nodel
! Node at element -> shape function in integral term
IF(n /= ns) CYCLE
Region_Loop: DO
nreg=1, 2
Mi= 8
Call
Gauss_coor(Glcor,Wi,Mi)
Gauss_points: DO
m=1,Mi
SELECT CASE
(n)
CASE
(1) ! Node1
IF
(nreg==1)
THEN
! right
xsi= (1.-d2)/2. + Glcor(m) * (1.+d2)/2.
dxdxb= (1.+d2)/2.
ELSE IF
(nreg==2)
THEN
! left
xsi= (-1.-d2)/2. + Glcor(m) * (1.-d2)/2
dxdxb= (1.-d2)/2
END IF
CASE
(2) ! Node2
IF
(nreg==1)
THEN
! right
xsi= (1.+d1)/2. + Glcor(m)*(1.-d1)/2
dxdxb= (1.-d1)/2
ELSE IF
(nreg==2)
THEN
! left
xsi= (-1.+d1)/2. + Glcor(m)*(1.+d1)/2
dxdxb= (1.+d1)/2
END IF
CASE
(3) ! Node3
IF
(nreg==1)
THEN
! right
xsi= 0.5 + Glcor(m) * 0.5
dxdxb= 0.5
ELSE IF
(nreg==2)
THEN
! left
xsi= -0.5 + Glcor(m) * 0.5
dxdxb= 0.5
END IF
CASE DEFAULT
END SELECT
CALL
Normal_Jac(Vnorm,Jac,xsi,eta,ldim,nodel,Inci,elcor)
CALL
Serendip_func(Ni,xsi,eta,ldim,nodel,Inci)
CALL
Cartesian(GCcor,Ni,ldim,elcor)
r= Dist(GCcor,xP(:,i),cdim) ! Dist. P,Q
dxr= (GCcor-xP(:,i))/r ! rx/r , ry/r
CALL
ShapefunctionDisc(Ni,xsi,eta,ldim,nodel,Inci)
Direction1:DO
j=1,2
IF
(Isym == 0)
THEN
iD= 2*(i-1) + j
ELSE
iD= Ndest(i,j)
END IF
IF
(id == 0)
CYCLE
Search WWH ::
Custom Search