Civil Engineering Reference
In-Depth Information
8.2 Mesh-free Strategies in Transient Analysis
The first two programs in this Chapter have used implicit integration in time and assembly
strategies for mesh conductivity and “mass” matrices. For very large problems, the demands
on computer storage become significant and, as was the case in Chapters 5 to 7, it is natural
to seek “mesh-free” strategies which avoid the need to store system matrices at all.
Possibly the simplest (and oldest) mesh-free strategy is based on equation (3.98) which
shows that for lumped “mass” matrix [ M m ], the solution at a new time can be found
from the solution at the previous time by a simple matrix-vector multiplication, which can
be done element-by-element. Such “explicit” techniques suffer from numerical stability
difficulties and are described later. First we consider the natural extension to Programs 8.1
and 8.2, which were seen to consist of a linear equation solution on every time step. Clearly
this solution can be accomplished iteratively using pcg or some similar technique, and this
is done in Program 8.3.
Program 8.3 Plane or axisymmetric consolidation analysis using 4-node rectangular
quadrilaterals. Mesh numbered in x ( r )- or y ( z )-direction. Implicit time integration
using the “theta” method. No global stiffness matrix assembly. Diagonal precondi-
tioner conjugate gradient solver.
PROGRAM p83
!-------------------------------------------------------------------------
! Program 8.3 Plane or axisymmetric consolidation analysis using 4-node
! rectangular quadrilaterals. Mesh numbered in x(r)- or y(z)-
! direction. Implicit time integration using the "theta"
! method. No global matrix assembly. Diagonal
! preconditioner conjugate gradient solver
!-------------------------------------------------------------------------
USE main; USE geom; IMPLICIT NONE
INTEGER,PARAMETER::iwp=SELECTED_REAL_KIND(15)
INTEGER::cg_iters,cg_limit,fixed_freedoms,i,iel,j,k,nci,ndim=2,nels,neq, &
nip=4,nn,nod=4,npri,np_types,nres,nstep,ntime,nxe,nye
REAL(iwp)::alpha,beta,cg_tol,det,dtim,one=1.0_iwp,penalty=1.0e20_iwp,
&
theta,time,up,zero=0.0_iwp; LOGICAL::cg_converged
CHARACTER(LEN=15)::dir,element='quadrilateral',type_2d
!-----------------------dynamic arrays------------------------------------
INTEGER,ALLOCATABLE::etype(:),g_num(:,:),node(:),num(:)
REAL(iwp),ALLOCATABLE::coord(:,:),d(:),der(:,:),deriv(:,:),
&
diag_precon(:),fun(:),gc(:),g_coord(:,:),jac(:,:),kay(:,:),kc(:,:),
&
loads(:),ntn(:,:),p(:),mm(:,:),points(:,:),prop(:,:),r(:),store(:),
&
storka(:,:,:),storkb(:,:,:),u(:),value(:),weights(:),x(:),xnew(:),
&
x_coords(:),y_coords(:)
!-----------------------input and initialisation--------------------------
OPEN(10,FILE='fe95.dat'); OPEN(11,FILE='fe95.res')
READ(10,*)type_2d,dir,nxe,nye,cg_tol,cg_limit,np_types
CALL mesh_size(element,nod,nels,nn,nxe,nye); neq=nn
WRITE(11,'(a,i5,a)')" There are",neq," equations"
ALLOCATE(points(nip,ndim),weights(nip),kay(ndim,ndim),coord(nod,ndim), &
fun(nod),jac(ndim,ndim),g_coord(ndim,nn),der(ndim,nod),deriv(ndim,nod),&
mm(nod,nod),g_num(nod,nels),kc(nod,nod),ntn(nod,nod),num(nod), &
storka(nod,nod,nels),storkb(nod,nod,nels),etype(nels),x_coords(nxe+1), &
Search WWH ::




Custom Search