Civil Engineering Reference
In-Depth Information
Colloc_points: DO i=1,Ncol
Rmin= Min_dist1 (Elcor,xP(:,i),Nodel,inci,ELeng,Eleng,ldim)
RonL= Rmin/Eleng ! R/L
!-----------------------------------------------------
! Integration off-diagonal coeff. -> normal Gauss Quadrature
!---------------------------------------------------------
Mi= Ngaus (RonL,1,Rlim) ! Number of Gauss points for o(1/r)
NDIVS= 1
RJacB=1.0
IF (Mi == 5) THEN ! Determine number of subdiv. In [
IF (RonL > 0.0) NDIVS= INT(RLim(2)/RonL) + 1
IF (NDIVS > MAXDIVS) MAXDIVS= NDIVS
RJacB= 1.0/NDIVS
Mi=4
END IF
Call Gauss_coor(Glcor,Wi,Mi) ! Assign coords/Weights
Xsi1=-1
Subdivisions: DO NDIV=1,NDIVS
Xsi2= Xsi1 + 2.0/NDIVS
Gauss_points: DO m=1,Mi
xsi= Glcor(m)
IF (NDIVS > 1) xsi= 0.5*(Xsi1+Xsi2)+xsi/NDIVS
CALL Serendip_func(Ni,xsi,eta,ldim,nodel,Inci)
Call Normal_Jac(Vnorm,Jac,xsi,eta,ldim,nodel,Inci,elcor)
CALL Cartesian(GCcor,Ni,ldim,elcor) ! coords of Gauss pt
r= Dist(GCcor,xP(:,i),cdim) ! Dist. P,Q
dxr= (GCcor-xP(:,i))/r ! rx/r , ry/r
UP= UK(dxr,r,E,ny,Cdim) ; TP= TK(dxr,r,Vnorm,ny,Cdim)
Node_points: DO n=1,Nodel
Direction_P: DO j=1,2
IF (Isym == 0)THEN
iD= 2*(i-1) + j
ELSE
iD= Ndest(i,j) ! line number in array
END IF
IF (id == 0) CYCLE
Direction_Q: DO k= 1,2
nD= 2*(n-1) + k ! column number in array
IF (Dist(Elcor(:,n),xP(:,i),cdim) > epsi) THEN
dUe(iD,nD)= dUe(iD,nD) + Ni(n)*UP(j,k)*Jac*Wi(m)*RJacB
dTe(iD,nD)= dTe(iD,nD) + Ni(n)*TP(j,k)*Jac*Wi(m)*RJacB
ELSE
dUe(iD,nD)= dUe(iD,nD) + &
Ni(n)*C*dxr(j)*dxr(k)*Jac*Wi(m)*RJacB
END IF
END DO Direction_Q
END DO Direction_P
END DO Node_points
END DO Gauss_points
Xsi1= Xsi2
END DO Subdivisions
 
Search WWH ::




Custom Search