Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "fvcReconstruct.H"
00027 #include <finiteVolume/fvMesh.H>
00028 #include <finiteVolume/zeroGradientFvPatchFields.H>
00029
00030
00031
00032 namespace Foam
00033 {
00034
00035
00036
00037 namespace fvc
00038 {
00039
00040
00041
00042 template<class Type>
00043 tmp
00044 <
00045 GeometricField
00046 <
00047 typename outerProduct<vector,Type>::type, fvPatchField, volMesh
00048 >
00049 >
00050 reconstruct
00051 (
00052 const GeometricField<Type, fvsPatchField, surfaceMesh>& ssf
00053 )
00054 {
00055 typedef typename outerProduct<vector, Type>::type GradType;
00056
00057 const fvMesh& mesh = ssf.mesh();
00058
00059 tmp<GeometricField<GradType, fvPatchField, volMesh> > treconField
00060 (
00061 new GeometricField<GradType, fvPatchField, volMesh>
00062 (
00063 IOobject
00064 (
00065 "volIntegrate("+ssf.name()+')',
00066 ssf.instance(),
00067 mesh,
00068 IOobject::NO_READ,
00069 IOobject::NO_WRITE
00070 ),
00071 inv(surfaceSum(sqr(mesh.Sf())/mesh.magSf()))
00072 & surfaceSum((mesh.Sf()/mesh.magSf())*ssf),
00073 zeroGradientFvPatchField<GradType>::typeName
00074 )
00075 );
00076
00077 treconField().correctBoundaryConditions();
00078
00079 return treconField;
00080 }
00081
00082
00083 template<class Type>
00084 tmp
00085 <
00086 GeometricField
00087 <
00088 typename outerProduct<vector, Type>::type, fvPatchField, volMesh
00089 >
00090 >
00091 reconstruct
00092 (
00093 const tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >& tssf
00094 )
00095 {
00096 typedef typename outerProduct<vector, Type>::type GradType;
00097 tmp<GeometricField<GradType, fvPatchField, volMesh> > tvf
00098 (
00099 fvc::reconstruct(tssf())
00100 );
00101 tssf.clear();
00102 return tvf;
00103 }
00104
00105
00106
00107
00108 }
00109
00110
00111
00112 }
00113
00114