CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   fvc::reconstruct !!!! (https://www.cfd-online.com/Forums/openfoam-programming-development/131457-fvc-reconstruct.html)

adambarfi March 15, 2014 04:45

error from fvc::reconstruct !!!!
 
Hi everybody,

I'm trying to add energy equation to porousSimpleFoam and I faced this error when I wanted to wmake my solver:
(this is part of the error appeared in my terminal)
Code:

/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude/fvMatrix.C:2140:34: note: template<class Type> Foam::tmp<Foam::fvMatrix<Type> > Foam::operator+(const Foam::dimensioned<Type>&, const Foam::tmp<Foam::fvMatrix<Type> >&)
In file included from doubleDiffPorousSimpleFoam.C:83:0:
pEqn.H:55:41: error: ‘faceInterpolate’ is not a member of ‘Foam::fvc’
In file included from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/doubleFloat.H:30:0,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/floatScalar.H:38,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/scalar.H:39,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/IOstream.H:49,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/Ostream.H:39,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/OSstream.H:40,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/messageStream.H:211,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/error.H:51,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/UListI.H:26,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/UList.H:365,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/List.H:43,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/labelList.H:48,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/UPstream.H:43,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/Pstream.H:42,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/parRun.H:35,
                from /home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude/fvCFD.H:4,
                from doubleDiffPorousSimpleFoam.C:48:
/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/products.H: At global scope:
/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/products.H: In instantiation of ‘Foam::outerProduct<Foam::Vector<double>, Foam::Tensor<double> >’:
pEqn.H:56:68:  instantiated from here
/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude/products.H:72:13: error: no type named ‘type’ in ‘class Foam::typeOfRank<double, 3>’
In file included from doubleDiffPorousSimpleFoam.C:83:0:
pEqn.H: In function ‘int main(int, char**)’:
pEqn.H:56:68: error: no matching function for call to ‘reconstruct(Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> >)’
pEqn.H:56:68: note: candidates are:
/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude/fvcReconstruct.C:50:1: note: template<class Type> Foam::tmp<Foam::GeometricField<typename Foam::outerProduct<Foam::Vector<double>, Type>::type, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::reconstruct(const Foam::GeometricField<Type, Foam::fvsPatchField, Foam::surfaceMesh>&)
/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude/fvcReconstruct.C:91:1: note: template<class Type> Foam::tmp<Foam::GeometricField<typename Foam::outerProduct<Foam::Vector<double>, Type>::type, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::reconstruct(const Foam::tmp<Foam::GeometricField<Type, Foam::fvsPatchField, Foam::surfaceMesh> >&)

make: *** [Make/linux64GccDPOpt/doubleDiffPorousSimpleFoam.o] Error 1

and I used the reconstruct as follow:

Code:

    tmp<volTensorField> tTU = tensor(I)*UEqn().A();
    surfaceTensorField tUf("(1|TA(U))", fvc::faceInterpolate(tTU()));
    U -= trTU()&fvc::reconstruct((buoyancyPhi + tpEqn().flux())*tUf);

where trTU is a volTensorField.

I guess that reconstruct cannot handle tonsorial input!!! If yes, what should I use instead of reconstruct?

any tips appreciated

Regards,
Mostafa

ngj March 16, 2014 05:24

Hi Mostafa,

The issue is (at least) the fact that you are parsing a tmp<> object to reconstruct. The following line would strip away the tmp-type:

Code:

U -= trTU&fvc::reconstruct((buoyancyPhi + tpEqn().flux()())*tUf);
Note the additional set of parentheses after the call the "flux()".

Good luck,

Niels

adambarfi March 17, 2014 09:01

thank you Niels,

I surfed the internet and found that I had a wrong definition of fvc::reconstract in my mind.

Best,
Mostafa


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