Civil Engineering Reference
In-Depth Information
INTEGER :: Nreg,Ltyp,Nodes,Maxe,Ndofe,Ndofs,ndg,NE_u,NE_t
INTEGER:: nod,nd,i,j,k,l,DoF,Pos,Isym,nsym,nsy,its,iters,ell
REAL(iwp),ALLOCATABLE :: Fac(:) ! Factors for symmetry
REAL(iwp),ALLOCATABLE :: Elres_te(:),Elres_ue(:)
INTEGER,ALLOCATABLE :: Incie(:) ! Incidences for one element
INTEGER,ALLOCATABLE :: Ldeste(:),g(:)
REAL(iwp) :: Con,E,ny,Scat,Scad,tol,kappa,alpha,beta,rho,gama,
&omega,norm_r,r0_norm,error,one=1._iwp,zero=.0_iwp
LOGICAL:: converged
REAL(iwp),ALLOCATABLE::s(:),GG(:,:),Gamma(:),rt(:),y(:),y1(:),r(:
,:),uu(:,:)
timest(1) = elap_time(); CALL find_pe_procs(numpe,npes)
!-----------------------------------------------------
! Read job information
!-----------------------------------------------------
OPEN (UNIT=11,FILE='prog83.dat',FORM='FORMATTED',ACTION='READ') !
Input
IF(numpe==1)OPEN(UNIT=12,FILE='prog83.res',FORM='FORMATTED',ACTIO
N='WRITE')!O/P
IF(numpe==1) WRITE(12,*) "This job ran on ",npes," processors"
Call Jobin(Title,Cdim,N_dof,Toa,Nreg,Ltyp,Con,E,ny,&
Isym,nodel,nodes,nels)
Nsym= 2**Isym ! number of symmetry loops
ALLOCATE(xP(Cdim,Nodes)) ! Array for node coordinates
ALLOCATE(Inci(nels,Nodel)) ! Array for incidences
CALL Geomin(Nodes,nels,xp,Inci,Nodel,Cdim)
Ndofe= Nodel*N_dof ! Total degrees of freedom of element
ALLOCATE(BCode(nels,Ndofe)) ! Element Boundary codes
ALLOCATE(Elres_u(nels,Ndofe),Elres_t(nels,Ndofe))
CALL BCinput(Elres_u,Elres_t,Bcode,nodel,ndofe,n_dof)
READ(11,*) tol,its,ell,kappa ! BiCGStab data
ALLOCATE(Ldest(nels,Ndofe)) ! Elem. destination vector
ALLOCATE(Ndest(Nodes,N_dof))
!----------------------------------------------------------------
! Determine Node destination vector and Element dest vector
!----------------------------------------------------------------
CALL Destination(Isym,Ndest,Ldest,xP,Inci,Ndofs,&
nodes,N_dof,Nodel,nels)
!----------------------------------------------------------------
! Determine global Boundary code vector
!----------------------------------------------------------------
ALLOCATE(NCode(Ndofs)); CALL calc_nels_pp ! elements per
processor
IF(numpe==1) WRITE(12,*) "Elements on first processor ",nels_pp
NCode=0
DoF_o_System: &
DO nd=1,Ndofs
DO Nel=1,nels
DO m=1,Ndofe
IF (nd == Ldest(Nel,m) .and. NCode(nd) == 0) THEN
NCode(nd)= NCode(nd)+BCode(Nel,m)
 
Search WWH ::




Custom Search