Civil Engineering Reference
In-Depth Information
!----------------------------pcg process ---------------------------------
up =DOT_PRODUCT_P(ans_pp,d_pp); alpha=up/DOT_PRODUCT_P(p_pp,u_pp)
xnew_pp = x_pp + p_pp* alpha; ans_pp = ans_pp - u_pp*alpha
d_pp = diag_precon_pp*ans_pp
beta = DOT_PRODUCT_P(ans_pp,d_pp)/up; p_pp = d_pp + p_pp * beta
CALL checon_par(xnew_pp,x_pp,cjtol,cj_converged,neq_pp)
IF(cj_converged.OR.cjiters==cjits) EXIT
END DO conjugate_gradients
!----------- end of pcg process-------------------------------------------
ans_pp = xnew_pp; loads_pp = ans_pp
IF(numpe==1) THEN
WRITE(11,'(A,I5,A)')
&
"Conjugate gradients took ",cjiters, " iterations to converge"
WRITE(11,'(A)') " The nodal displacements and porepressures are
:"
WRITE(11,'(4E12.4)') ans_pp(1:4)
END IF
!-------------------recover stresses at gauss-points --------------------
eld_pp = .0_iwp; CALL gather(ans_pp,eld_pp) ; iel = 1
coord=p_g_co_pp(:,:,iel) ; eld = eld_pp(:,iel)
IF(numpe==1) WRITE(11,'(A,I5,A)') &
"The Gauss Point effective stresses for element",iel," are"
gauss_pts_2: DO i = 1,nip
CALL shape_der (der,points,i); jac= MATMUL(der,coord)
CALL invert ( jac ); deriv= MATMUL(jac,der)
CALL beemat(bee,deriv);sigma= MATMUL(dee,MATMUL(bee,eld))
IF(numpe==1.AND.i==1) THEN
WRITE(11,'(A,I5)') "Point ",i;WRITE(11,'(6E12.4)') sigma
END IF
END DO gauss_pts_2
END DO time_steps
IF(numpe==1) WRITE(11,*) "This analysis took :", elap_time( )-timest(1)
CALL shutdown( )
END PROGRAM p127
New scalar integer:
ns
timestep counter
New dynamic real arrays:
ans_pp
distributed answer vector
c
coupling matrix
kd
total element matrix
storkd_pp
distributed
kd
matrices
vol
array for volumetric strain
array for fluid volumetric strain
volf
Again the main differences between serial and parallel programs relate to the change
in geometry from 2D to 3D. Loop
elements_1
uses
geometry_20bxz
in place of
geom_rect
in serial and loop
elements_2
with embedded
gauss_pts_1
is almost
identical although the parallel version assumes constant element properties. Ramp loading
is also assumed rather than the general pattern allowed in serial (2D). Loop
elements_4
carries over from serial to parallel but in the latter case only a few surface displacements
are printed and only the stresses in the “first” (central surface) element are computed
and printed. Data are listed as Figure 12.32 with results as Figure 12.33 and performance
statistics as Figure 12.34.