Civil Engineering Reference
In-Depth Information
!----------------------- time stepping loop ------------------------------
real_time = .0_iwp
IF(numpe==it) THEN
WRITE(11,'(A)') "
Time t cos(omega*t) Displacement Iterations"
END IF
timesteps: DOj=1,nstep
real_time = real_time + dtim
; loads_pp = .0_iwp
u_pp = .0_iwp ; vu_pp = .0_iwp
elements_3: DO iel = 1 , nels_pp ! gather for rhs multiply
temp_pp(:,:,iel)=store_km_pp(:,:,iel)*c2+ store_mm_pp(:,:,iel)*c3
END DO elements_3
CALL gather(x0_pp,pmul_pp)
DO iel=1,nels_pp
utemp_pp(:,iel) = MATMUL(temp_pp(:,:,iel),pmul_pp(:,iel))
END DO ; CALL scatter(u_pp,utemp_pp)
!-------------------- Velocity Bit ---------------------------------------
temp_pp = store_mm_pp/theta; CALL gather(d1x0_pp,pmul_pp)
DO iel = 1,nels_pp
utemp_pp(:,iel)=MATMUL(temp_pp(:,:,iel),pmul_pp(:,iel))
END DO ; CALL scatter(vu_pp,utemp_pp) ! doesn't add to last u_pp
IF(numpe==it) THEN
loads_pp(is)=theta*dtim*cos(omega*real_time)+
&
c1*cos(omega*(real_time-dtim)) !
END IF
loads_pp = u_pp + vu_pp + loads_pp
!------------------ solve simultaneous equations by pcg ------------------
d_pp = diag_precon_pp*loads_pp; p_pp = d_pp; x_pp = .0_iwp
iters = 0
iterations : DO
iters = iters + 1 ; u_pp = 0._iwp ; vu_pp = .0_iwp
temp_pp=store_mm_pp*c3+store_km_pp*c4;CALL gather(p_pp,pmul_pp)
elements_4 : DO iel = 1, nels_pp
utemp_pp(:,iel) = MATMUL(temp_pp(:,:,iel),pmul_pp(:,iel))
END DO elements_4 ; CALL scatter(u_pp,utemp_pp)
!---------------------------pcg equation solution-------------------------
up=DOT_PRODUCT_P(loads_pp,d_pp);alpha=up/DOT_PRODUCT_P(p_pp,u_pp)
xnew_pp = x_pp + p_pp* alpha ; loads_pp=loads_pp - u_pp*alpha
d_pp = diag_precon_pp*loads_pp !
beta=DOT_PRODUCT_P(loads_pp,d_pp)/up; p_pp=d_pp+p_pp*beta
u_pp = xnew_pp
CALL checon_par(xnew_pp,x_pp,tol,converged,neq_pp)
IF(converged .OR. iters==limit) EXIT
END DO iterations
x1_pp=xnew_pp
d1x1_pp=(x1_pp-x0_pp)/(theta*dtim)-d1x0_pp*(1._iwp-theta)/theta
d2x1_pp=(d1x1_pp-d1x0_pp)/(theta*dtim)-d2x0_pp*(1._iwp-theta)/theta
IF(j/npri*npri==j .AND. numpe==it)
WRITE(11,'(3E12.4,I10)')
&
real_time,cos(omega*real_time),x1_pp(is),iters
x0_pp = x1_pp; d1x0_pp = d1x1_pp; d2x0_pp = d2x1_pp
END DO timesteps
IF(numpe==it) WRITE(11,*)"This analysis took
:", elap_time()-timest(1)
CALL shutdown( )
END PROGRAM p129
New scalar reals:
alpha1 Rayleigh damping parameter
beta1
Rayleigh damping parameter
Search WWH ::




Custom Search