next up previous contents
Next: Preliminary Additive Schwarz Results Up: Telluride Solver Options Previous: CG ``Guts''

Telluride Matrix-Vector Multiplication Routine for Nonorthogonal Operator

SUBROUTINE Y_EQ_AX_PROJECTION (nunk, X, Y, status)

[snip] type(JT_vector_type), intent(in) :: X [snip]

! Compute a vertex-averaged solution and gather it. call VERTEX_AVG (X%Values, Solution_Vtx, BOUNDARY=X%Aux2) call EN_GATHER (Solution_Vertex, Solution_Vtx, BOUNDARY=X%Aux3)

! Gather the solution from element neighbors. call EE_GATHER (Solution_Ngbr, X%Values, BOUNDARY=X%Aux1)

! Loop over faces, accumulating the product ! (Face_Area/Rho_Face)*(Grad_X*Face_Normal). Y = zero do f = 1,nfc

! Get the face solution gradient. call FACE_GRADIENT (..., X%Values, ...)

! Dot the solution gradient with the face unit normal. N_Dot_Grad_X = zero do n = 1,ndim N_Dot_Grad_X = N_Dot_Grad_X + Grad_X(n,:)*Cell%Face_Normal(n,f) end do

[snip]

! Accumulate the contribution for this face. Y = Y + Coeff(f,:)*N_Dot_Grad_X end do

return END SUBROUTINE Y_EQ_AX_PROJECTION


next up previous contents
Next: Preliminary Additive Schwarz Results Up: Telluride Solver Options Previous: CG ``Guts''

John A. Turner