CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (http://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Convection Term (http://www.cfd-online.com/Forums/openfoam-programming-development/118792-convection-term.html)

 anton_lias June 4, 2013 10:25

Convection Term

1 Attachment(s)
Hello Foamers,
I have modified the solver MRFInterFoam to solve the population balance equation via the Quadratic method of Moments.
Now I would like to add the convection term (see attached file)
m is a scalarField
c1 and c2 are constants (scalars)

First I tried this Equation, but I understand, that I can't calculate "scalar - tensor".
Code:

```fvScalarMatrix mEqn (     U & fvc::grad(m)     - fvc::grad(c1 * fvc::grad(m1)     +c2 );```
So I tried this Equation (found in a paper) and add c2 later on.
Code:

```fvScalarMatrix mEqn (         fvm::div(phi, m)         - fvm::laplacian(c1, m) );```
Does this Equation computes the Equation given in the attachment?

 thomasArk47 June 5, 2013 18:49

Hi,

yes it is better. Don't forget to add the temporal derivative and the source term. Look at applications/solvers/basic/scalarTransportFoam.

 anton_lias June 6, 2013 10:05

Thank you Thomas.

Do you mean something like that?
Code:

```solve     (         fvm::ddt(m)         + fvm::div(phi, m)         - fvm::laplacian(c1, m)         +c2     );```

 thomasArk47 June 6, 2013 16:52

Ok for the time derivative.

For the source term, it is not good. Ok, I assume your "c2" is a fixed variable. This way, you have 2 possibility:

1- use
solve
(
fvm::ddt(m)
+ fvm::div(phi, m)
- fvm::laplacian(c1, m)
==
fvm::Su(c2f,m)
);
...where c2f can be declared after the m variable as follows:
DimensionedField<scalar,volMesh> c2f
(
IOobject
(
"c2f",
m.time().timeName(),
m.mesh(),
IOobject::NO_WRITE
),
m.mesh(),
dimensionedScalar("c2f",m.dimensions()/dimTime,c2)
);

2- cleaner approach by using the fvOptions framework. Needs to write:
solve
(
fvm::ddt(m)
+ fvm::div(phi, m)
- fvm::laplacian(c1, m)
==
fvOptions(m)
);
In this approach, you need to define in the right way the fvOptions file located in the system file. Look at the tutorials to find the syntax you need.

N.B : if c2 is not a fixed variable, the first approach is probably the simpler for first try (you could use the second one in combinaison of the codedFunctionObject)

 anton_lias June 18, 2013 08:02

Thank you thomas its working

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