![]() |
I read the solver in:
(appli
I read the solver in:
(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) - (fvc::grad(U) & fvc::grad(muf)) ); What is the matter? |
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. |
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) ); solve(UEqn == -fvc::grad(p)); // --- PISO loop for (int corr=0; corr<nCorr; corr++) { volScalarField A = UEqn.A(); U = UEqn.H()/A; ... |
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 |
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 |
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.
|
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/ |
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 |
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); |
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? |
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.
|
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 |
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 |
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 |
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 02:58. |