CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Does anyone work with curl in OpenFoam (

evgenii December 15, 2005 06:07

Hi, all. Does anyone work wit
Hi, all.
Does anyone work with curl in OpenFoam?
I have some problems with it.
Hope to get some help or advice.

I wrote:

+ fvc::curl(H)

+ fvc::curl(E)

E,H - volVectorField, mu0, epsilon0 - dimensionedScalar

When I try to compile following error appears:
no matching function to call for solve(...)

Where am I mistaken?
Thank you.

galaad December 15, 2005 06:17

Hello Eugene, Did you try f
Hello Eugene,

Did you try fvm instead of fvc:

+ fvm::curl(H)

I think it's not a problem with curl but a syntax problem. Had you also define the equation to solve... for example:

tmp<fvvectormatrix> EEqn
+ fvm::curl(H)

Try this and tell me :-).


galaad December 15, 2005 06:22

Or this... tmp
Or this...

tmp<fvvectormatrix> EEqn
- fvc::curl(H)

The variable to solve in the left part of the equation and the source term on the right one.


evgenii December 15, 2005 06:31

Thank you so much! It's now co
Thank you so much! It's now compiling succesfully (How it works I'll know later )
There is only fvc::curl, there's no fvm::curl.
But you are right, I needed to define an equation in manner you gave.

hjasak December 15, 2005 06:54

Curl only comes in the explici
Curl only comes in the explicit version (fvc) because the implicit one couples the components of the vector. The current matrix support cannot handle that but the new version (block matrix) will come in due course). So, there's no fvm::curl at the moment.

As for the calculation of the curl, have a look at fvcCurl.C. There are two implementations

- the one based on the Gauss Theorem is commented out.

- the one with the Hodge dual is active and allows you to use your favourite gradient calculation algorithm



galaad December 15, 2005 07:06

Thanks Hrv for your comment an
Thanks Hrv for your comment and your advices

evgenii December 15, 2005 07:44

Thank for comments Hrv, it is
Thank for comments Hrv, it is very useful as usual

gort February 14, 2007 12:31

Hi all, i am trying to implem
Hi all,
i am trying to implement the following equation in the solver
B and j are volVectorField and mu0 is dimensionedScalar
mu0 and j are known.
Corresponding entry in the solver is
solve (fvc::curl(B)==mu0*j)
The "response" of compiler is
error: no match for 'operator==' in 'Foam::fvc::curl(const Foam::GeometricField<type,>&) [with Type = Foam::Vector<double>]() == 0'
/shared/home/gort//OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/cellModelI.H:124 : note: candidates are: bool Foam::operator==(const Foam::cellModel&, const Foam::cellModel&)
/shared/home/gort//OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/edgeI.H:147: note: bool Foam::operator==(const Foam::edge&, const Foam::edge&)

What is the right FOAM syntax for this equation? Will be happy for any advises.

Best regards,

mvoss October 15, 2010 11:30


since this is looong time ago... did you managed to solve your curl(B)=mu0*j with OF ??


All times are GMT -4. The time now is 01:16.