CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

Domain decomposition and Ax=b??

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 29, 2011, 18:17
Default Domain decomposition and Ax=b??
  #1
pkr
Member
 
Join Date: Nov 2010
Posts: 33
Rep Power: 15
pkr is an unknown quantity at this point
I am trying to understand the way Ax=b is solved in parallel across the processors.

The original mesh is comprised of 5 cells. The original matrix A without any decomposition is:
-4 0 4 0 0
0 -3 0 0 3
4 0 -8 9 0
0 0 9 -6 5
0 3 0 5 -7

After using decomposePar utility the matrix A is decomposed in two smaller matrices as follows:
First matrix
========
-3 0 3
0 -6 5
3 5 -7

Second Matrix
==========
-4 4
4 8


When PCG solver is invoked, each process solves Ax=b independently and exchanges some information with other process to ensure correctness.

My queries are as follows:

1. What is being exchanged? I see that in every iteration during Amul, some parts of vector pA is being sent to neighboring process. The neighboring process receives pA and performs additional computation to rectify wA.

wA[] -= coeffs[] * pA_received[];

2. Where do the coefficients come from? What's the significance of coeffs?

3. How does subtracting "coeffs[] * pA_received[]" from wA[] leads to the correct solution mathematically?


Thanks in Advance.
pkr is offline   Reply With Quote

Old   March 30, 2011, 09:31
Default
  #2
New Member
 
Alton Luder III
Join Date: Oct 2009
Location: Michigan
Posts: 22
Rep Power: 17
sleepdeprivation is on a distinguished road
I'm not totally sure how OF does it, but from what you've posted, it looks like its doing a Jacobi iteration, but changing the order of the matrix in the decompose step. (or a red/black Gauss-Seidel, which is similar)

Matrix 1 is the rows of 2,4,&5 while matrix 2 is the 1 & 3 rows.

So it updates with the local matrix, then takes the values of the cells outside the domain to finish the update. Thus coeffs[] would be the coefficients of the original matrix that relate the pole to neighbors in another domain.
sleepdeprivation is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Parallel version of Ax=b ??? pkr OpenFOAM Programming & Development 0 March 29, 2011 18:13


All times are GMT -4. The time now is 15:44.