CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Edit linear solver (https://www.cfd-online.com/Forums/openfoam-programming-development/117601-edit-linear-solver.html)

luckycfd May 11, 2013 15:57

Edit linear solver
 
Hi all,
How can i edit linear solvers (PCG,PBICG,...) of openfoam, then compile them?
Regards.

kmooney May 14, 2013 16:34

Its open source so you can really do whatever you please with the linear solvers.

You might be better of starting with simpler OpenFOAM programming before diving into the linear solvers, it sounds like you are really just getting started...

luckycfd June 6, 2013 05:19

ok tanx for your attention, but please help me how can i do it?
i copy the linear solver, for example PBC directory, in my home then compile this by wmake, but there is not exist Make directory in the PCG directory for compiling!

luckycfd June 10, 2013 13:53

compile openfoam linear solver
 
hi all,
how an i compile linear solver of openfoam?
for example, i copy PCG directory in my home then compile this by wmake, but there is not exist Make directory in the PCG directory for compiling! please help me. (i want edit this linear solver.)

wyldckat June 10, 2013 14:30

Greetings Hassan,

Please study the following pages, before continuing to try and modify a linear solver:
The last one is the one that gives the closest instructions to the changes you want to make, but these intermediate steps are very important, so that you can understand better how to build and change OpenFOAM source code!

Good luck! Best regards,
Bruno

luckycfd July 18, 2013 19:16

openfoam linear solver
 
Hi,

In order to create and use the new linear solver myPBiCG:
  1. cp –r $FOAM_SRC/OpenFOAM/matrices/lduMatrix/solvers/PBiCG $FOAM_RUN/myPBiCG
  2. Replace all occurences of PBiCG inside PBiCG.H/.C with myPBiCG and rename these files to myPBiCG.H/.C.
  3. create the directory structure : myPBiCG/Make, and create files and options in it.
files:
myPBiCG.C
LIB = $(FOAM_USER_LIBBIN)/libmyPBiCG


options:
EXE_INC = -I$(OBJECTS_DIR)
LIB_LIBS = \
$(FOAM_LIBBIN)/libOSspecific.o \
-L$(FOAM_LIBBIN)/dummy -lPstream \
-lz
  1. wmake libso
  2. then switched into cavity test case, added libs(“libmyPBiCG.so”); to controlDict in the cavity/system directory and edited system/fvSolution to use myPBiCG instead of PBiCG.


But when I run the cavity by icoFoan, I recevie this error at the end of running the case:
Segmentation fault”
Why? what is this error? how can i solve this error?

luckycfd July 19, 2013 17:10

Hi all
 
any body? please help me?

luckycfd July 20, 2013 19:49

friends? please

wyldckat July 21, 2013 06:07

1 Attachment(s)
Greetings Hassan,

People that usually can help here in the forum, only do it when they have some spare time. So, please be patient ;)

I followed your steps and as far as I can figure out, the only problem could be that you added too many things to the file "Make/options".

Since I had the trouble to follow your steps and to create both the library and the test case, attached are both ready for testing. I used OpenFOAM 2.2.x, but should work fine on any 2.2.

edit: next time you post code, please use the "[CODE]" marker, as exemplified in the second link on my signature.

Best regards,
Bruno

luckycfd July 21, 2013 08:48

Greetings Bruno,
thank you very much:)
Best regards,
Hassan.

luckycfd August 18, 2013 15:00

edit precontitioner
 
Hi,

After compile the new preconditioner(myDILUPreconditioner) Successfully in the same way for adding the new linear solver library(myPBiCG).
I add to controlDict in the cavity/system directory:
libs("libmyDILUPreconditioner.so");
and edite system/fvSolution to use myDILU instead of DILU.
But I recevie this error:
Code:

--> FOAM FATAL IO ERROR: 
 Unknown asymmetric matrix preconditioner myDILUPreconditioner
 

 Valid asymmetric matrix preconditioners :
 

 4
 (
 DILU
 GAMG
 diagonal
 none
 )
 

  file: 
 

     From function lduMatrix::preconditioner::New(const solver&, const dictionary&)
     in file matrices/lduMatrix/lduMatrix/lduMatrixPreconditioner.C at line 123.
 

 FOAM exiting

please guide me how can I use my preconditioner?


Best regards,
Hassan.

wyldckat August 18, 2013 15:04

Hi Hassan,

Go into the folder where you have the "myDILUPreconditioner" source code and run:
Code:

wclean all
Then compress the folder of the source code "myDILUPreconditioner" and attach the compressed file on your next post.

This way I'm able to tell you what you forgot to do.

Best regards,
Bruno

luckycfd August 18, 2013 15:11

1 Attachment(s)
thank you,
source file is attached.

wyldckat August 18, 2013 15:35

Hi Hassan,

It's simple. Notice these two lines in the header file "*.H"?
Code:

    //- Runtime type information
    TypeName("DILU");

You should change it to:
Code:

    //- Runtime type information
    TypeName("myDILU");

Best regards,
Bruno

luckycfd August 18, 2013 15:43

Mr. Bruno
It,s OK!
Thank You very very much:)

best regards,
Hassan

luckycfd August 22, 2013 04:10

myPBiCG/Make/options
 
1 Attachment(s)
Greetings Bruno,

Why the options file of myPBiCG can be empty? I use two diffrence form of options file, but both of them seems true! What is the difference between options_1 and options_2 files that is attached?

Best regards,
Hassan.

wyldckat August 22, 2013 06:47

Hi Hassan,

There are two details you need to check:
  1. After changing the "options" file, did you run the following command?
    Code:

    wclean libso
  2. When you run:
    Code:

    wmake libso
    you have to look at the output and look for the lines that start with "SOURCE", then see what occurrences there are of "-I", which indicate which folders have headers files that should be added to the search list for the file being currently compiled.
    • The default option usually is to always include the "$(FOAM_SRC)/OpenFOAM/lnInclude" folder.
    • In this case, it's possible that myPBiCG doesn't need anything from the "finiteVolume" header files.
Best regards,
Bruno

luckycfd August 22, 2013 09:38

Thank you Mr. Bruno,


Yes, I run
Code:

wmake libso
then
Code:

wmake libso
.
In the output, lines that start with "SOURCE", show occurrences that I added in the options file, but how can I find out which folders have headers files that should be added to the search list for the file being currently compiled?


Best regards,
Hassan

wyldckat August 22, 2013 09:55

Well, whenever the compiler complains about not finding a header file, you can use the find command like this:
Code:

find $FOAM_SRC -name the_name_of_the_header_file.H
Usually you should include the entries for the "lnInclude" folders.

luckycfd August 22, 2013 11:16

Thank you Mr. Bruno:):):)

luckycfd August 23, 2013 12:38

Matrix in OpenFoam
 
Hello Mr. Bruno

According to the reference that it's address link is below, in page 53;
http://www.diva-portal.org/smash/get...T01.pdf‎
I can,t undrestand that what is the placeholder matrix in openFoam? and how get this equations:

u(0)=[2,0] u(1)=[3,1] l(0)=[0,2] l(1)=[1,3]

UpperAddr=(2,3) LowerAddr=(0,1)

If it is possible for you, please explain a little about this concept.
Best regards,
Hassan

wyldckat August 24, 2013 20:14

Hi Hassan,

Sorry, but this is beyond my experience level.
My suggestion is that you'll have to search for more information on this topic, possibly among the reference thesis made around OpenFOAM and the OpenFOAM Programmers Guide: http://foam.sourceforge.net/docs/Gui...mmersGuide.pdf

Good luck! Best regards,
Bruno

luckycfd August 25, 2013 02:13

thank you Mr. Bruno:)

luckycfd August 26, 2013 04:12

Ueqn
 
Hi,
In the icoFoam solver, where is the top level of Ueqn where Navier-stoke equation carries out?

best regards,
Hassan

wyldckat August 26, 2013 18:12

Hi Hassan,

The best I can do on this question is to point you to this wiki page: http://openfoamwiki.net/index.php/IcoFoam - it basically explains how the icoFoam solver works.

Best regards,
Bruno

luckycfd September 9, 2013 15:25

Hi friends,
I can't understand the PCG linear solver how work in the icoFoam solver? In other words, which part of the icoFoam.C related to the PCG linear solver and use it? please show me.

Regards,
Hassan

wyldckat September 9, 2013 15:38

Hi Hassan,

The PCG solver is not available directly to icoFoam. It's used very deep into the solve() methods and equation solving algorithms.

Some more reading material:
Best regards,
Bruno

luckycfd September 9, 2013 16:06

Thanks.
Regards,
Hassan.

luckycfd October 10, 2013 14:34

Dear Foamers,
How can I extract the linear system (AX=B) from the cavity case in tutorials using OpenFOAM?


Regards,
Hassan

luckycfd December 9, 2013 02:29

extract the linear system
 
Hi dear Bruno,
Could I use the PCG linear solver for my linear system (Ax=b) separately? In the other words, I want to send two input files A and b, then get the x from this solver? yes or no please?

regards,
Hassan

wyldckat December 28, 2013 15:22

Hi Hassan,

I'm sorry to say that I don't know the answer. In theory, it should be possible.
AFAIK, do keep in mind that PCG will not be able to give you an exact solution. At most, it's able to give you a partial/possible near solution, but not an exact one: http://www.cfd-online.com/Wiki/Conju...adient_methods

If I had to start investigating into this, I would have a look into the source code experiments that try to use one or more GPUs to help solve simulations faster, such as:
I say this because these libraries will sort-of hack directly into the LDU matrix management/solving system.


Best regards,
Bruno

ssmeherk January 15, 2014 08:42

Quote:

Originally Posted by luckycfd (Post 465397)
Hi dear Bruno,
Could I use the PCG linear solver for my linear system (Ax=b) separately? In the other words, I want to send two input files A and b, then get the x from this solver? yes or no please?

regards,
Hassan

Hi Hassan,

I am also working on the same problem of solving sparse linear matrix (AX=B) using PCG solver.
Did you find any solution ? Any useful inputs from your side apart from what is available here?

Thanks,
Meher.

luckycfd January 24, 2014 14:28

Hi Meher,
thanks for your attention, but no.


All times are GMT -4. The time now is 13:12.