CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (http://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Solving simultaneous algebraic equations for complex coefficients (http://www.cfd-online.com/Forums/openfoam-programming-development/101624-solving-simultaneous-algebraic-equations-complex-coefficients.html)

 Hisham May 9, 2012 08:02

Solving simultaneous algebraic equations for complex coefficients

Dear Foamers,

I need to solve a system of linear equations using OpenFOAM (needed at each time step). The system has complex coefficients. I think the simpleMatrix is used for the solution of simultaneous linear algebraic equations.

Although the simpleMatrix::solve() returns a Field<type>
http://foam.sourceforge.net/docs/cpp...ce.html#l00074
Code:

```00073 template<class Type> 00074 Foam::Field<Type> Foam::simpleMatrix<Type>::solve() const 00075 { 00076    scalarSquareMatrix tmpMatrix = *this; 00077    Field<Type> sourceSol = source_; 00078 00079    Foam::solve(tmpMatrix, sourceSol); 00080 00081    return sourceSol; 00082 }```
It seems that it can solve only for real scalars. I need to solve for a complexField. Is it possible from within OF?

It would be nice if someone points me to an example of the simpleMatrix use?

Edit: As expected simpleMatrix works only for real scalars!

Best regards,
Hisham

 mechy January 19, 2014 03:57

Dear Hisham

Dear Hisham
I have the same problem
and I want to solve a system of linear equation with complex coefficients
do you find how can it be solved ?

Best Regards

 Hisham January 19, 2014 06:01

Hi mechy,

The Armadillo project was my solution:

http://arma.sourceforge.net/

Hope it helps you too!

Best regards,
Hisham

 mechy January 19, 2014 10:09

Dear Hisham
you have used it separately or used it in openfoam ?
is it possible to use it in openfoam codes ?

Best Regards

 Hisham January 19, 2014 10:18

In an OpenFOAM application, you just make sure that armadillo is installed on your system using Synaptic (or so). The lib names are: libarmadillo2 and libarmadillo-dev. You can try to compile it if you are more adventurous :-)

In the Make/options of your application add -larmadillo to EXE_LIBS:
Code:

```EXE_LIBS = -lfiniteVolume \                                                                                                                                -larmadillo```
Then follow the examples provided by the armadillo website. You would need to (of course) include proper armadillo headers to your app.

Best regards,
Hisham

 mechy January 19, 2014 11:40

thanks for useful comments
Best Regards

 mechy January 19, 2014 13:42

Dear Hisham
is it possible to couple OpenFoam and Aarmadillo
in other word, is it possible to transfer data between openfoam objects and Aarmadillo objects ?
Best Regards

 j-avdeev March 1, 2014 11:09

Probably will useful.

http://openfoamwiki.net/index.php/Ho...lo_in_OpenFOAM

 All times are GMT -4. The time now is 10:59.