CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (http://www.cfd-online.com/Forums/openfoam-solving/)
-   -   A stupid question (http://www.cfd-online.com/Forums/openfoam-solving/59509-stupid-question.html)

 luckyluke April 5, 2005 23:38

I read the solver in: (appli

(applications\solvers\multiphase\interFoam\).

But I can find the solve function for 'UEqn' matrix, which is defined as:
fvVectorMatrix UEqn
(
fvm::ddt(rho, U)
+ fvm::div(rhoPhi, U)
- fvm::laplacian(muf, U)
);

What is the matter?

 henry April 6, 2005 03:37

In the interface capturing cod

In the interface capturing codes the momentum equation is not solved using an implicit solver in a predictor step as in other codes, it is solved as part of the PISO corrector sequence only:

U = UEqn.H()/A;

and

U += fvc::reconstruct(phi - phiU);
U.correctBoundaryConditions();

It would be possible to include a prector step as well but experience has shown that it does not improve convergence.

 rutland August 4, 2005 14:32

Sorry for my ignorance, but in

Sorry for my ignorance, but in icoFoam how is the 'solve' below a predictor if it's solution, U, is immediately overwritten by the U = UEqn.H()/A; statement?
...
fvVectorMatrix UEqn
(
fvm::ddt(U)
+ fvm::div(phi, U)
- fvm::laplacian(nu, U)
);

// --- PISO loop

for (int corr=0; corr<nCorr; corr++)
{
volScalarField A = UEqn.A();

U = UEqn.H()/A;
...

 hjasak August 4, 2005 14:40

Not so stupid: UEqn.H() uses t

Not so stupid: UEqn.H() uses the current value of U to evaluate itself and that's where the predicted value gets into the game.

Enjyoy,

Hrv

 pilot August 4, 2005 15:25

Hey I have always had a curios

Hey I have always had a curiosity what is the the A and H quantities?

A seems to be a per second quantity, then H is a m/s quantity that takes the velocity feild.

There is a lot of H/A wich would be acceleration. Is this used in extrapolating n+1 values or something? Just curious.

Thanks Mike

 henry August 4, 2005 15:31

Basically A is the diagonal of

Basically A is the diagonal of thge matrix and H is the rest of the matrix multiplied by the field. Thus H/A is a simple point-Jacobi solution for the field.

 rutland August 4, 2005 15:32

Thanks Hrv. Michael, an exc

Thanks Hrv.

Michael, an excellent reference for your question and a lot of Foam related topics is Hrv's thesis at http://www.h.jasak.dial.pipex.com/

 pilot August 4, 2005 15:40

Thanks guys I have re

Thanks guys

I have really been enjoying this code. I am trying to understand it to the fine details. It is quite facinating. I appreciate all your patience. Hopefully eventually I can get to an understanding where I can contribute. In the mean time I am still learning.

Take Care
Mike McW

 billy August 4, 2005 17:05

Hi, I also have a question.

Hi,

I also have a question. In icoFoam what is this line for?

fvScalarMatrix::reference pRef = pEqn.setReference(pRefCell, RefValue);

 billy August 4, 2005 17:11

Never mind. I already found it

Never mind. I already found it in a previous discussion.
I believe it resets the pressure at the outlet to zero or to another predefined value, right?

 henry August 4, 2005 17:22

No, it sets the value in the c

No, it sets the value in the cell pRefCell to be pRefValue for cases that do not have a fixedValue pressure boundary condition.

 newbee May 26, 2006 09:20

Hello, Im looking throu the hr

Hello, Im looking throu the hrv thesis for more information concerning the jacobi method on A and H matrixes. Its seems as A has both diagonal and off diagonal elements but I thought that A needed to be purely diagonal for the jacobi method.

question:
Is A diagonal or doesn't it need to be diagonal for jacobi method to work?
/Erik

 marhamat August 12, 2007 05:43

Hi everybody I defined variab

Hi everybody
I defined variable BB(scalarField BB ;)in new.H that included in icoFoam.c.
But when i change it to(volScalarField BB ;) i get some errors.
What is the problem and How i can solve it?

Sorry for disturbing you.
Have a nice weekend
Marhamat

 marhamat August 13, 2007 03:30

Hi , What happens when i chan

Hi ,
What happens when i change ScalarField to volScalarField ?

I recieve this error:
make: Nothing to be done for `allFiles'.
make: `Make/linuxGcc4DPOpt/dependencies' is up to date.

Making dependency list for source file icoFoam.C
SOURCE_DIR=.
SOURCE=icoFoam.C ; g++ -m32 -Dlinux -DDP -Wall -W -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-30 -I/marhamat/OpenFOAM/OpenFOAM-1.3/src/finiteVolume/lnInclude -I/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude -IlnInclude -I. -fPIC -pthread -c \$SOURCE -o Make/linuxGcc4DPOpt/icoFoam.o
new.H: In function 'int main(int, char**)':
new.H:38: error: no matching function for call to 'Foam::GeometricField<double,>::GeometricField()'
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:627: note: candidates are: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const Foam::GeometricField<type,>&, const Foam::wordList&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:589: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const Foam::GeometricField<type,>&, const Foam::word&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:556: note: Foam::GeometricField<type,>::GeometricField(const Foam::word&, const Foam::tmp<foam::geometricfield<type,> >&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:520: note: Foam::GeometricField<type,>::GeometricField(const Foam::word&, const Foam::GeometricField<type,>&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:485: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const Foam::GeometricField<type,>&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:450: note: Foam::GeometricField<type,>::GeometricField(const Foam::tmp<foam::geometricfield<type,> >&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:411: note: Foam::GeometricField<type,>::GeometricField(const Foam::GeometricField<type,>&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:368: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:279: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensionSet&, const Foam::Field<type>&, const Foam::PtrList<patchfield<type> >&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:246: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensioned<type>&, const Foam::wordList&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:214: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensioned<type>&, const Foam::word&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:184: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensionSet&, const Foam::wordList&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:151: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensionSet&, const Foam::word&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
new.H:39: error: no matching function for call to 'Foam::GeometricField<double,>::GeometricField()'
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:627: note: candidates are: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const Foam::GeometricField<type,>&, const Foam::wordList&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:589: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const Foam::GeometricField<type,>&, const Foam::word&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:556: note: Foam::GeometricField<type,>::GeometricField(const Foam::word&, const Foam::tmp<foam::geometricfield<type,> >&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:520: note: Foam::GeometricField<type,>::GeometricField(const Foam::word&, const Foam::GeometricField<type,>&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:485: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const Foam::GeometricField<type,>&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:450: note: Foam::GeometricField<type,>::GeometricField(const Foam::tmp<foam::geometricfield<type,> >&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:411: note: Foam::GeometricField<type,>::GeometricField(const Foam::GeometricField<type,>&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:368: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:279: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensionSet&, const Foam::Field<type>&, const Foam::PtrList<patchfield<type> >&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:246: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensioned<type>&, const Foam::wordList&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:214: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensioned<type>&, const Foam::word&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:184: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensionSet&, const Foam::wordList&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
/marhamat/OpenFOAM/OpenFOAM-1.3/src/OpenFOAM/lnInclude/GeometricField.C:151: note: Foam::GeometricField<type,>::GeometricField(const Foam::IOobject&, const typename GeoMesh::Mesh&, const Foam::dimensionSet&, const Foam::word&) [with Type = double, PatchField = Foam::fvPatchField, GeoMesh = Foam::volMesh]
make: *** [Make/linuxGcc4DPOpt/icoFoam.o] Error 1

Regards
Marhamat

 marhamat August 13, 2007 04:25

Sorry guys i had one fatal mi

Sorry guys
i had one fatal mistake.so it was an real stupid problem.:-)
Regards
Marhamat

 All times are GMT -4. The time now is 05:51.