Added library VectorN, containing specializations for Lists, fields, CoeffFields, blockLduMatrices, etc. for arbitrary length vectors (VectorN) and tensors (TensorN).
This commit is contained in:
parent
719616503d
commit
8ed0a59a10
133 changed files with 11866 additions and 0 deletions
39
src/VectorN/Make/files
Normal file
39
src/VectorN/Make/files
Normal file
|
@ -0,0 +1,39 @@
|
|||
OpenFOAM/Lists/VectorNLists.C
|
||||
|
||||
OpenFOAM/DimensionedTypes/dimensionedVectorTensorN.C
|
||||
|
||||
OpenFOAM/Fields/VectorNFields.C
|
||||
OpenFOAM/Fields/TensorNFields.C
|
||||
OpenFOAM/Fields/DiagTensorNFields.C
|
||||
OpenFOAM/Fields/SphericalTensorNFields.C
|
||||
|
||||
OpenFOAM/expandContract/ExpandTensorNField.C
|
||||
|
||||
OpenFOAM/BlockLduMatrices/blockVectorNSolvers.C
|
||||
OpenFOAM/BlockLduMatrices/blockVectorNMatrices.C
|
||||
OpenFOAM/BlockLduMatrices/blockVectorNLduInterfaceFields.C
|
||||
|
||||
finiteVolume/fields/fvPatchFields/fvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/genericFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/calculatedFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/emptyFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/transformFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/wedgeFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/coupledFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/processorFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/fixedValueFvPatchVectorNFields.C
|
||||
finiteVolume/fields/fvPatchFields/zeroGradientFvPatchVectorNFields.C
|
||||
|
||||
finiteVolume/fields/fvsPatchFields/fvsPatchVectorNFields.C
|
||||
finiteVolume/fields/fvsPatchFields/calculatedFvsPatchVectorNFields.C
|
||||
finiteVolume/fields/fvsPatchFields/emptyFvsPatchVectorNFields.C
|
||||
finiteVolume/fields/fvsPatchFields/wedgeFvsPatchVectorNFields.C
|
||||
finiteVolume/fields/fvsPatchFields/coupledFvsPatchVectorNFields.C
|
||||
finiteVolume/fields/fvsPatchFields/processorFvsPatchVectorNFields.C
|
||||
|
||||
finiteVolume/fields/volFields/volVectorNFields.C
|
||||
finiteVolume/fields/surfaceFields/surfaceVectorNFields.C
|
||||
|
||||
finiteVolume/interpolation/VectorNSurfaceInterpolationSchemes.C
|
||||
|
||||
LIB = $(FOAM_LIBBIN)/libVectorN
|
6
src/VectorN/Make/options
Normal file
6
src/VectorN/Make/options
Normal file
|
@ -0,0 +1,6 @@
|
|||
EXE_INC = \
|
||||
-I$(FOAM_SRC)/OpenFOAM/lnInclude \
|
||||
-I$(FOAM_SRC)/finiteVolume/lnInclude \
|
||||
-ftemplate-depth-200
|
||||
|
||||
LIB_LIBS =
|
|
@ -0,0 +1,55 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
blockVectorNLduInterfaceFields
|
||||
|
||||
Description
|
||||
|
||||
Author
|
||||
|
||||
\*----------------------------------------------------------------------------*/
|
||||
|
||||
#include "BlockLduInterfaceField.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define makeTemplateTypeNameAndDebug(type, Type, args...) \
|
||||
defineTemplateTypeNameAndDebug(BlockLduInterfaceField<type>, 0);
|
||||
|
||||
forAllVectorNTypes(makeTemplateTypeNameAndDebug);
|
||||
|
||||
#undef makeTemplateTypeNameAndDebug
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
53
src/VectorN/OpenFOAM/BlockLduMatrices/blockVectorNMatrices.C
Normal file
53
src/VectorN/OpenFOAM/BlockLduMatrices/blockVectorNMatrices.C
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-6 H. Jasak All rights reserved
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Description
|
||||
Block matrix member static data members
|
||||
|
||||
Author
|
||||
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "blockVectorNMatrices.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define makeNamedTemplateTypeNameAndDebug(type, Type, args...) \
|
||||
defineNamedTemplateTypeNameAndDebug(block##Type##Matrix, 0);
|
||||
|
||||
forAllVectorNTypes(makeNamedTemplateTypeNameAndDebug);
|
||||
|
||||
#undef makeNamedTemplateTypeNameAndDebug
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
62
src/VectorN/OpenFOAM/BlockLduMatrices/blockVectorNMatrices.H
Normal file
62
src/VectorN/OpenFOAM/BlockLduMatrices/blockVectorNMatrices.H
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-6 H. Jasak All rights reserved
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Class
|
||||
BlockLduMatrix
|
||||
|
||||
Description
|
||||
Typedefs for block matrices
|
||||
|
||||
Author
|
||||
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef blockVectorNMatrices_H
|
||||
#define blockVectorNMatrices_H
|
||||
|
||||
#include "blockLduMatrices.H"
|
||||
#include "VectorTensorNFieldsFwd.H"
|
||||
#include "ExpandTensorNField.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
#define makeTypedef(type, Type, args...) \
|
||||
typedef BlockLduMatrix<type > block##Type##Matrix;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
135
src/VectorN/OpenFOAM/BlockLduMatrices/blockVectorNSolvers.C
Normal file
135
src/VectorN/OpenFOAM/BlockLduMatrices/blockVectorNSolvers.C
Normal file
|
@ -0,0 +1,135 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-6 H. Jasak All rights reserved
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "blockLduMatrices.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
#include "blockLduPrecons.H"
|
||||
#include "BlockNoPrecon.H"
|
||||
#include "blockDiagonalPrecons.H"
|
||||
#include "blockGaussSeidelPrecons.H"
|
||||
#include "BlockCholeskyPrecon.H"
|
||||
|
||||
#include "blockLduSmoothers.H"
|
||||
#include "blockGaussSeidelSmoothers.H"
|
||||
#include "BlockILUSmoother.H"
|
||||
|
||||
#include "blockLduSolvers.H"
|
||||
#include "BlockDiagonalSolver.H"
|
||||
#include "BlockBiCGStabSolver.H"
|
||||
#include "BlockCGSolver.H"
|
||||
#include "BlockGaussSeidelSolver.H"
|
||||
#include "BlockGMRESSolver.H"
|
||||
|
||||
#include "VectorTensorNFields.H"
|
||||
#include "ExpandTensorN.H"
|
||||
#include "ExpandTensorNField.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define makeSolver(type, Type, args...) \
|
||||
/* Preconditioners */ \
|
||||
typedef BlockLduPrecon<type > block##Type##Precon; \
|
||||
defineNamedTemplateTypeNameAndDebug(block##Type##Precon, 0); \
|
||||
defineTemplateRunTimeSelectionTable(block##Type##Precon, dictionary); \
|
||||
\
|
||||
typedef BlockNoPrecon<type > block##Type##NoPrecon; \
|
||||
makeBlockPrecon(block##Type##Precon, block##Type##NoPrecon); \
|
||||
\
|
||||
typedef BlockDiagonalPrecon<type > block##Type##DiagonalPrecon; \
|
||||
makeBlockPrecon(block##Type##Precon, block##Type##DiagonalPrecon); \
|
||||
\
|
||||
typedef BlockGaussSeidelPrecon<type > block##Type##GaussSeidelPrecon; \
|
||||
makeBlockPrecon(block##Type##Precon, block##Type##GaussSeidelPrecon); \
|
||||
\
|
||||
typedef BlockCholeskyPrecon<type > block##Type##CholeskyPrecon; \
|
||||
makeBlockPrecon(block##Type##Precon, block##Type##CholeskyPrecon); \
|
||||
\
|
||||
\
|
||||
/* Smoothers */ \
|
||||
typedef BlockLduSmoother<type > block##Type##Smoother; \
|
||||
defineNamedTemplateTypeNameAndDebug(block##Type##Smoother, 0); \
|
||||
defineTemplateRunTimeSelectionTable(block##Type##Smoother, dictionary); \
|
||||
\
|
||||
typedef BlockGaussSeidelSmoother<type > block##Type##GaussSeidelSmoother; \
|
||||
makeBlockSmoother(block##Type##Smoother, block##Type##GaussSeidelSmoother); \
|
||||
\
|
||||
typedef BlockILUSmoother<type > block##Type##ILUSmoother; \
|
||||
makeBlockSmoother(block##Type##Smoother, block##Type##ILUSmoother); \
|
||||
\
|
||||
\
|
||||
/* Solvers */ \
|
||||
typedef BlockLduSolver<type > block##Type##Solver; \
|
||||
defineNamedTemplateTypeNameAndDebug(block##Type##Solver, 0); \
|
||||
defineTemplateRunTimeSelectionTable \
|
||||
( \
|
||||
block##Type##Solver, \
|
||||
symMatrix \
|
||||
); \
|
||||
\
|
||||
defineTemplateRunTimeSelectionTable \
|
||||
( \
|
||||
block##Type##Solver, \
|
||||
asymMatrix \
|
||||
); \
|
||||
\
|
||||
typedef BlockDiagonalSolver<type > block##Type##DiagonalSolver; \
|
||||
defineNamedTemplateTypeNameAndDebug(block##Type##DiagonalSolver, 0); \
|
||||
\
|
||||
typedef BlockBiCGStabSolver<type > block##Type##BiCGStabSolver; \
|
||||
makeBlockSolverTypeName(block##Type##BiCGStabSolver); \
|
||||
addSolverToBlockMatrix(Type, block##Type##BiCGStabSolver, symMatrix); \
|
||||
addSolverToBlockMatrix(Type, block##Type##BiCGStabSolver, asymMatrix); \
|
||||
\
|
||||
typedef BlockCGSolver<type > block##Type##CGSolver; \
|
||||
makeBlockSolverTypeName(block##Type##CGSolver); \
|
||||
addSolverToBlockMatrix(Type, block##Type##CGSolver, symMatrix); \
|
||||
\
|
||||
typedef BlockGaussSeidelSolver<type > block##Type##GaussSeidelSolver; \
|
||||
makeBlockSolverTypeName(block##Type##GaussSeidelSolver); \
|
||||
addSolverToBlockMatrix(Type, block##Type##GaussSeidelSolver, symMatrix); \
|
||||
\
|
||||
typedef BlockGMRESSolver<type > block##Type##GMRESSolver; \
|
||||
makeBlockSolverTypeName(block##Type##GMRESSolver); \
|
||||
addSolverToBlockMatrix(Type, block##Type##GMRESSolver, symMatrix); \
|
||||
addSolverToBlockMatrix(Type, block##Type##GMRESSolver, asymMatrix);
|
||||
|
||||
|
||||
forAllVectorNTypes(makeSolver)
|
||||
|
||||
#undef makeSolver
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,83 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 1991-2005 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
Dimensioned VectorN and TensorN obtained from generic dimensioned type.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "dimensionedVectorTensorN.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define UNARY_FUNCTION(returnType, type, fun, text) \
|
||||
inline returnType fun(const type& t) \
|
||||
{ \
|
||||
return returnType \
|
||||
( \
|
||||
#text "(" + t.name() + ')', \
|
||||
fun(t.dimensions()), \
|
||||
fun(t.value()) \
|
||||
); \
|
||||
}
|
||||
|
||||
#define dimensionedType_Funs(cmptType, vectorType, tensorType, \
|
||||
diagTensorType, sphericalTensorType) \
|
||||
UNARY_FUNCTION(tensorType, tensorType, inv, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, inv, inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, inv, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType, diag, diag) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, diag, diag) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, diag, diag)\
|
||||
UNARY_FUNCTION(cmptType, vectorType, cmptSum, cmptSum)
|
||||
|
||||
#define dimensionedVectorN_Funs(length) \
|
||||
dimensionedType_Funs \
|
||||
( \
|
||||
dimensionedScalar, \
|
||||
dimensionedVector##length, \
|
||||
dimensionedTensor##length, \
|
||||
dimensionedDiagTensor##length, \
|
||||
dimensionedSphericalTensor##length \
|
||||
)
|
||||
|
||||
dimensionedVectorN_Funs(2)
|
||||
dimensionedVectorN_Funs(4)
|
||||
dimensionedVectorN_Funs(6)
|
||||
dimensionedVectorN_Funs(8)
|
||||
|
||||
#undef dimensionedVectorN_Funs
|
||||
#undef dimensionedType_Funs
|
||||
#undef UNARY_FUNCTION
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
114
src/VectorN/OpenFOAM/DimensionedTypes/dimensionedVectorTensorN.H
Normal file
114
src/VectorN/OpenFOAM/DimensionedTypes/dimensionedVectorTensorN.H
Normal file
|
@ -0,0 +1,114 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
dimensionedVectorTensorN
|
||||
|
||||
Description
|
||||
Dimensioned VectorN and TensorN obtained from generic dimensioned type.
|
||||
|
||||
Author
|
||||
Ivor Clifford
|
||||
|
||||
SourceFiles
|
||||
dimensionedVectorTensorN.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef dimensionedVectorTensorN_H
|
||||
#define dimensionedVectorTensorN_H
|
||||
|
||||
#include "dimensionedType.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
#define doMakeTypedef(type, Type, args...) \
|
||||
typedef dimensioned<type> dimensioned##Type;
|
||||
|
||||
forAllVectorNTypes(doMakeTypedef)
|
||||
|
||||
forAllTensorNTypes(doMakeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(doMakeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakeTypedef)
|
||||
|
||||
#undef doMakeTypedef
|
||||
|
||||
|
||||
// friend functions
|
||||
|
||||
dimensionSet diag(const dimensionSet& ds);
|
||||
dimensionSet cmptSum(const dimensionSet& ds);
|
||||
dimensionSet contractLinear(const dimensionSet& ds);
|
||||
dimensionSet contractScalar(const dimensionSet& ds);
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define dimensionedType_Funs(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, cmptType, args...) \
|
||||
\
|
||||
tensorType inv(const tensorType&); \
|
||||
diagTensorType inv(const diagTensorType&); \
|
||||
sphericalTensorType inv(const sphericalTensorType&); \
|
||||
\
|
||||
tensorType inv(const tensorType&); \
|
||||
diagTensorType inv(const diagTensorType&); \
|
||||
sphericalTensorType inv(const sphericalTensorType&); \
|
||||
\
|
||||
cmptType cmptSum(const vectorType&);
|
||||
|
||||
#define dimensionedVectorN_Funs(length) \
|
||||
dimensionedType_Funs \
|
||||
( \
|
||||
dimensionedScalar, \
|
||||
dimensionedVector##length, \
|
||||
dimensionedTensor##length, \
|
||||
dimensionedDiagTensor##length, \
|
||||
dimensionedSphericalTensor##length \
|
||||
)
|
||||
|
||||
forAllVectorTensorNTypes(dimensionedType_Funs)
|
||||
|
||||
#undef dimensionedVectorN_Funs
|
||||
#undef dimensionedType_Funs
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "dimensionedVectorTensorNI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
dimensionedVectorTensorN
|
||||
|
||||
Description
|
||||
|
||||
Author
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * //
|
||||
|
||||
inline dimensionSet diag(const dimensionSet& ds)
|
||||
{
|
||||
return ds;
|
||||
}
|
||||
|
||||
inline dimensionSet cmptSum(const dimensionSet& ds)
|
||||
{
|
||||
return ds;
|
||||
}
|
||||
|
||||
inline dimensionSet contractLinear(const dimensionSet& ds)
|
||||
{
|
||||
return ds;
|
||||
}
|
||||
|
||||
inline dimensionSet contractScalar(const dimensionSet& ds)
|
||||
{
|
||||
return ds;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,93 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "DimensionedDiagTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,diag,diag) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType, contractLinear,contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, diagTensorType, contractScalar,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'+', subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,115 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
DimensionedDiagTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of DimensionedField<T> for DiagTensorN
|
||||
|
||||
SourceFiles
|
||||
DimensionedDiagTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DimensionedDiagTensorNFields_H
|
||||
#define DimensionedDiagTensorNFields_H
|
||||
|
||||
#include "DimensionedField.H"
|
||||
#include "dimensionedVectorTensorN.H"
|
||||
#include "VectorTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,diag,diag) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType, contractLinear,contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, diagTensorType, contractScalar,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'+', subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "DimensionedDiagTensorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,75 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "DimensionedSphericalTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,diag,diag) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractLinear,contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractScalar,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,97 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
DimensionedSphericalTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of DimensionedField<T> for SphericalTensorN.
|
||||
|
||||
SourceFiles
|
||||
DimensionedSphericalTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DimensionedSphericalTensorNFields_H
|
||||
#define DimensionedSphericalTensorNFields_H
|
||||
|
||||
#include "DimensionedField.H"
|
||||
#include "dimensionedVectorTensorN.H"
|
||||
#include "VectorTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,diag,diag) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractLinear,contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractScalar,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "DimensionedSphericalTensorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
100
src/VectorN/OpenFOAM/DimensonedFields/DimensionedTensorNFields.C
Normal file
100
src/VectorN/OpenFOAM/DimensonedFields/DimensionedTensorNFields.C
Normal file
|
@ -0,0 +1,100 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "DimensionedTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType,diag,diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType, negSumDiag, negSumDiag) \
|
||||
UNARY_FUNCTION(vectorType, tensorType, contractLinear,contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, tensorType, contractScalar,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
122
src/VectorN/OpenFOAM/DimensonedFields/DimensionedTensorNFields.H
Normal file
122
src/VectorN/OpenFOAM/DimensonedFields/DimensionedTensorNFields.H
Normal file
|
@ -0,0 +1,122 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
DimensionedTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of DimensionedField<T> for TensorN.
|
||||
|
||||
SourceFiles
|
||||
DimensionedTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DimensionedTensorNFields_H
|
||||
#define DimensionedTensorNFields_H
|
||||
|
||||
#include "DimensionedField.H"
|
||||
#include "dimensionedVectorTensorN.H"
|
||||
#include "VectorTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType,diag,diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType, negSumDiag, negSumDiag) \
|
||||
UNARY_FUNCTION(vectorType, tensorType, contractLinear,contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, tensorType, contractScalar,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "DimensionedTensorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,69 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "DimensionedVectorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,91 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
DimensionedVectorNFields
|
||||
|
||||
Description
|
||||
Specialisations of DimensionedField<T> for VectorN types.
|
||||
|
||||
SourceFiles
|
||||
DimensionedVectorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DimensionedVectorNFields_H
|
||||
#define DimensionedVectorNFields_H
|
||||
|
||||
#include "DimensionedField.H"
|
||||
#include "dimensionedVectorTensorN.H"
|
||||
#include "VectorTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<class GeoMesh>
|
||||
#include "DimensionedFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "DimensionedVectorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
93
src/VectorN/OpenFOAM/FieldFields/DiagTensorNFieldFields.C
Normal file
93
src/VectorN/OpenFOAM/FieldFields/DiagTensorNFieldFields.C
Normal file
|
@ -0,0 +1,93 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "DiagTensorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, diag) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType, contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, diagTensorType, contractScalar) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
114
src/VectorN/OpenFOAM/FieldFields/DiagTensorNFieldFields.H
Normal file
114
src/VectorN/OpenFOAM/FieldFields/DiagTensorNFieldFields.H
Normal file
|
@ -0,0 +1,114 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
DiagTensorNFieldFields
|
||||
|
||||
Description
|
||||
Specialisation of FieldField<Field,T> for DiagTensorN
|
||||
|
||||
SourceFiles
|
||||
DiagTensorNFieldFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DiagTensorNFieldFields_H
|
||||
#define DiagTensorNFieldFields_H
|
||||
|
||||
#include "VectorTensorNFieldFieldsFwd.H"
|
||||
#include "FieldField.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, diag) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType, contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, diagTensorType, contractScalar) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract) \
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "DiagTensorNFieldFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,75 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "SphericalTensorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, diag) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractScalar) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,95 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
SphericalTensorNFieldFields
|
||||
|
||||
Description
|
||||
Specialisation of FieldField<Field,T> for SphericalTensorN.
|
||||
|
||||
SourceFiles
|
||||
SphericalTensorNFieldFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef SphericalTensorNFieldFields_H
|
||||
#define SphericalTensorNFieldFields_H
|
||||
|
||||
#include "VectorTensorNFieldFieldsFwd.H"
|
||||
#include "FieldField.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, diag) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, sphericalTensorType, contractScalar) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "SphericalTensorNFieldFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
100
src/VectorN/OpenFOAM/FieldFields/TensorNFieldFields.C
Normal file
100
src/VectorN/OpenFOAM/FieldFields/TensorNFieldFields.C
Normal file
|
@ -0,0 +1,100 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "TensorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType, diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType, negSumDiag) \
|
||||
UNARY_FUNCTION(vectorType, tensorType, contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, tensorType, contractScalar) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
121
src/VectorN/OpenFOAM/FieldFields/TensorNFieldFields.H
Normal file
121
src/VectorN/OpenFOAM/FieldFields/TensorNFieldFields.H
Normal file
|
@ -0,0 +1,121 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
tensorNFieldFields
|
||||
|
||||
Description
|
||||
Specialisation of FieldField<Field,T> for TensorN.
|
||||
|
||||
SourceFiles
|
||||
TensorNFieldFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef TensorNFieldFields_H
|
||||
#define TensorNFieldFields_H
|
||||
|
||||
#include "VectorTensorNFieldFieldsFwd.H"
|
||||
#include "FieldField.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType, diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType, negSumDiag) \
|
||||
UNARY_FUNCTION(vectorType, tensorType, contractLinear) \
|
||||
UNARY_FUNCTION(CmptType, tensorType, contractScalar) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "TensorNFieldFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
69
src/VectorN/OpenFOAM/FieldFields/VectorNFieldFields.C
Normal file
69
src/VectorN/OpenFOAM/FieldFields/VectorNFieldFields.C
Normal file
|
@ -0,0 +1,69 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "VectorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, CmptType, /,divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, CmptType, /,divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -, subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
90
src/VectorN/OpenFOAM/FieldFields/VectorNFieldFields.H
Normal file
90
src/VectorN/OpenFOAM/FieldFields/VectorNFieldFields.H
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
VectorNFieldFields
|
||||
|
||||
Description
|
||||
Specialisations of FieldField<Field,T> for VectorN types.
|
||||
|
||||
SourceFiles
|
||||
VectorNFieldFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorNFieldFields_H
|
||||
#define VectorNFieldFields_H
|
||||
|
||||
#include "VectorTensorNFieldFieldsFwd.H"
|
||||
#include "FieldField.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class Field>
|
||||
#include "FieldFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, CmptType, /,divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, CmptType, /,divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -, subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "VectorNFieldFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,68 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
VectorTensorNFieldFieldsFwd
|
||||
|
||||
Description
|
||||
|
||||
Author
|
||||
|
||||
SourceFiles
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorTensorNFieldFieldsFwd_H
|
||||
#define VectorTensorNFieldFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
template<template<class> class Field, class Type>
|
||||
class FieldField;
|
||||
|
||||
#define makeTypedef(Type, args...) \
|
||||
typedef FieldField<Field, Type > Type##FieldField;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
forAllTensorNTypes(makeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(makeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
104
src/VectorN/OpenFOAM/Fields/DiagTensorNFields.C
Normal file
104
src/VectorN/OpenFOAM/Fields/DiagTensorNFields.C
Normal file
|
@ -0,0 +1,104 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "DiagTensorNFields.H"
|
||||
#include "transformField.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, diag) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
template<> \
|
||||
tmp<Field<diagTensorType> > transformFieldMask<diagTensorType> \
|
||||
( \
|
||||
const Field<sphericalTensorType>& stf \
|
||||
) \
|
||||
{ \
|
||||
tmp<Field<diagTensorType> > tRes( new Field<diagTensorType>(stf.size()) ); \
|
||||
Field<diagTensorType>& res = tRes(); \
|
||||
TFOR_ALL_F_OP_F(diagTensorType, res, =, sphericalTensorType, stf) \
|
||||
return tRes; \
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
105
src/VectorN/OpenFOAM/Fields/DiagTensorNFields.H
Normal file
105
src/VectorN/OpenFOAM/Fields/DiagTensorNFields.H
Normal file
|
@ -0,0 +1,105 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
DiagTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of Field<T> for DiagTensorN
|
||||
|
||||
SourceFiles
|
||||
DiagTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DiagTensorNFields_H
|
||||
#define DiagTensorNFields_H
|
||||
|
||||
#include "VectorTensorNFieldsFwd.H"
|
||||
#include "Field.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType, diag) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /, divide)\
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -, subtract)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
71
src/VectorN/OpenFOAM/Fields/SphericalTensorNFields.C
Normal file
71
src/VectorN/OpenFOAM/Fields/SphericalTensorNFields.C
Normal file
|
@ -0,0 +1,71 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "SphericalTensorNFields.H"
|
||||
#include "transformField.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, diag) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// ************************************************************************* //
|
87
src/VectorN/OpenFOAM/Fields/SphericalTensorNFields.H
Normal file
87
src/VectorN/OpenFOAM/Fields/SphericalTensorNFields.H
Normal file
|
@ -0,0 +1,87 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
SphericalTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of Field<T> for SphericalTensorN.
|
||||
|
||||
SourceFiles
|
||||
SphericalTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef SphericalTensorNFields_H
|
||||
#define SphericalTensorNFields_H
|
||||
|
||||
#include "VectorTensorNFieldsFwd.H"
|
||||
#include "Field.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType, diag) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -, subtract)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
137
src/VectorN/OpenFOAM/Fields/TensorNFields.C
Normal file
137
src/VectorN/OpenFOAM/Fields/TensorNFields.C
Normal file
|
@ -0,0 +1,137 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "TensorNFields.H"
|
||||
#include "transformField.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.C"
|
||||
#include "ExpandTensorN.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType,diagTensorType, \
|
||||
sphericalTensorType,vectorType,CmptType, \
|
||||
args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType, diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType, negSumDiag) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
template<> \
|
||||
tmp<Field<tensorType> > transformFieldMask<tensorType> \
|
||||
( \
|
||||
const Field<diagTensorType>& dtf \
|
||||
) \
|
||||
{ \
|
||||
tmp<Field<tensorType> > tRes(new Field<tensorType>(dtf.size())); \
|
||||
Field<tensorType>& res = tRes(); \
|
||||
TFOR_ALL_F_OP_F(tensorType, res, =, diagTensorType, dtf) \
|
||||
return tRes; \
|
||||
} \
|
||||
\
|
||||
template<> \
|
||||
tmp<Field<tensorType> > transformFieldMask<tensorType> \
|
||||
( \
|
||||
const Field<sphericalTensorType>& stf \
|
||||
) \
|
||||
{ \
|
||||
tmp<Field<tensorType> > tRes(new Field<tensorType>(stf.size())); \
|
||||
Field<tensorType>& res = tRes(); \
|
||||
TFOR_ALL_F_OP_F(tensorType, res, =, sphericalTensorType, stf) \
|
||||
return tRes; \
|
||||
} \
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
125
src/VectorN/OpenFOAM/Fields/TensorNFields.H
Normal file
125
src/VectorN/OpenFOAM/Fields/TensorNFields.H
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
tensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of Field<T> for TensorN.
|
||||
|
||||
SourceFiles
|
||||
TensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef TensorNFields_H
|
||||
#define TensorNFields_H
|
||||
|
||||
#include "VectorTensorNFieldsFwd.H"
|
||||
#include "Field.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType,diagTensorType, \
|
||||
sphericalTensorType,vectorType,CmptType, \
|
||||
args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType, inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType, diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType, negSumDiag) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -, subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, +, add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, -, subtract)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
83
src/VectorN/OpenFOAM/Fields/VectorNFieldTypes.H
Normal file
83
src/VectorN/OpenFOAM/Fields/VectorNFieldTypes.H
Normal file
|
@ -0,0 +1,83 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
Include the header files for all the primitive types that Fields are
|
||||
instantiated for.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorNFieldTypes_H
|
||||
#define VectorNFieldTypes_H
|
||||
|
||||
#include "vector2.H"
|
||||
#include "vector4.H"
|
||||
#include "vector6.H"
|
||||
#include "vector8.H"
|
||||
|
||||
#include "tensor2.H"
|
||||
#include "tensor4.H"
|
||||
#include "tensor6.H"
|
||||
#include "tensor8.H"
|
||||
|
||||
#include "diagTensor2.H"
|
||||
#include "diagTensor4.H"
|
||||
#include "diagTensor6.H"
|
||||
#include "diagTensor8.H"
|
||||
|
||||
#define forAllVectorNTypes(m, args...) \
|
||||
m(vector2, Vector2, args) \
|
||||
m(vector4, Vector4, args) \
|
||||
m(vector6, Vector6, args) \
|
||||
m(vector8, Vector8, args)
|
||||
|
||||
#define forAllTensorNTypes(m, args...) \
|
||||
m(tensor2, Tensor2, args) \
|
||||
m(tensor4, Tensor4, args) \
|
||||
m(tensor6, Tensor6, args) \
|
||||
m(tensor8, Tensor8, args)
|
||||
|
||||
#define forAllDiagTensorNTypes(m, args...) \
|
||||
m(diagTensor2, DiagTensor2, args) \
|
||||
m(diagTensor4, DiagTensor4, args) \
|
||||
m(diagTensor6, DiagTensor6, args) \
|
||||
m(diagTensor8, DiagTensor8, args)
|
||||
|
||||
#define forAllSphericalTensorNTypes(m, args...) \
|
||||
m(sphericalTensor2, SphericalTensor2, args) \
|
||||
m(sphericalTensor4, SphericalTensor4, args) \
|
||||
m(sphericalTensor6, SphericalTensor6, args) \
|
||||
m(sphericalTensor8, SphericalTensor8, args)
|
||||
|
||||
#define forAllVectorTensorNTypes(m, args...) \
|
||||
m(tensor2, diagTensor2, sphericalTensor2, vector2, scalar, args) \
|
||||
m(tensor4, diagTensor4, sphericalTensor4, vector4, scalar, args) \
|
||||
m(tensor6, diagTensor6, sphericalTensor6, vector6, scalar, args) \
|
||||
m(tensor8, diagTensor8, sphericalTensor8, vector8, scalar, args)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
69
src/VectorN/OpenFOAM/Fields/VectorNFields.C
Normal file
69
src/VectorN/OpenFOAM/Fields/VectorNFields.C
Normal file
|
@ -0,0 +1,69 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "VectorNFields.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType,diagTensorType, \
|
||||
sphericalTensorType,vectorType,CmptType, \
|
||||
args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -, subtract) \
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
84
src/VectorN/OpenFOAM/Fields/VectorNFields.H
Normal file
84
src/VectorN/OpenFOAM/Fields/VectorNFields.H
Normal file
|
@ -0,0 +1,84 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
VectorNFields
|
||||
|
||||
Description
|
||||
Specialisations of Field<T> for VectorN types.
|
||||
|
||||
SourceFiles
|
||||
VectorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorNFields_H
|
||||
#define VectorNFields_H
|
||||
|
||||
#include "VectorTensorNFieldsFwd.H"
|
||||
#include "Field.H"
|
||||
|
||||
#define TEMPLATE
|
||||
#include "FieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType,diagTensorType, \
|
||||
sphericalTensorType,vectorType,CmptType, \
|
||||
args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, /, divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, /, divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -, subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +, add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -, subtract) \
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
47
src/VectorN/OpenFOAM/Fields/VectorTensorNFields.H
Normal file
47
src/VectorN/OpenFOAM/Fields/VectorTensorNFields.H
Normal file
|
@ -0,0 +1,47 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
VectorTensorNFields
|
||||
|
||||
Description
|
||||
Specialisations of Field<T> for VectorN and TensorN types.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorTensorNFields_H
|
||||
#define VectorTensorNFields_H
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "VectorNFields.H"
|
||||
#include "TensorNFields.H"
|
||||
#include "DiagTensorNFields.H"
|
||||
#include "SphericalTensorNFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
65
src/VectorN/OpenFOAM/Fields/VectorTensorNFieldsFwd.H
Normal file
65
src/VectorN/OpenFOAM/Fields/VectorTensorNFieldsFwd.H
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
VectorNFields
|
||||
|
||||
Description
|
||||
Forward declarations of the specialisations of Field<T> for
|
||||
TensorN types.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorNFieldsFwd_H
|
||||
#define VectorNFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
template<class Type> class Field;
|
||||
|
||||
#define makeTypedef(Type, args...) \
|
||||
typedef Field<Type > Type##Field;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
forAllTensorNTypes(makeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(makeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,97 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "GeometricDiagTensorNFields.H"
|
||||
#include "ExpandTensorNField.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,diag,diag) \
|
||||
UNARY_FUNCTION(CmptType, diagTensorType,contractScalar,contractScalar) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType,contractLinear,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'+', subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,118 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
GeometricDiagTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of GeometricField<T> for DiagTensorN
|
||||
|
||||
SourceFiles
|
||||
GeometricDiagTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef GeometricDiagTensorNFields_H
|
||||
#define GeometricDiagTensorNFields_H
|
||||
|
||||
#include "GeometricField.H"
|
||||
#include "DimensionedDiagTensorNFields.H"
|
||||
#include "DiagTensorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define DiagTensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, diagTensorType,diag,diag) \
|
||||
UNARY_FUNCTION(CmptType, diagTensorType,contractScalar,contractScalar) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType,contractLinear,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, CmptType, diagTensorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, CmptType, diagTensorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, sphericalTensorType, diagTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'-', subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, +,'+', add) \
|
||||
BINARY_TYPE_OPERATOR(diagTensorType, diagTensorType, sphericalTensorType, -,'+', subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(DiagTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef DiagTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "GeometricDiagTensorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,76 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "GeometricSphericalTensorNFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,diag,diag) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,98 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
GeometricSphericalTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of GeometricField<T> for SphericalTensorN.
|
||||
|
||||
SourceFiles
|
||||
GeometricSphericalTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef GeometricSphericalTensorNFields_H
|
||||
#define GeometricSphericalTensorNFields_H
|
||||
|
||||
#include "GeometricField.H"
|
||||
#include "DimensionedSphericalTensorNFields.H"
|
||||
#include "SphericalTensorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define SphericalTensorN_FieldFunctions(tensorType, diagTensorType, \
|
||||
sphericalTensorType, vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,inv,inv) \
|
||||
UNARY_FUNCTION(sphericalTensorType, sphericalTensorType,diag,diag) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, CmptType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(sphericalTensorType, sphericalTensorType, sphericalTensorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(SphericalTensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef SphericalTensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "GeometricSphericalTensorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
104
src/VectorN/OpenFOAM/GeometricFields/GeometricTensorNFields.C
Normal file
104
src/VectorN/OpenFOAM/GeometricFields/GeometricTensorNFields.C
Normal file
|
@ -0,0 +1,104 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "GeometricTensorNFields.H"
|
||||
#include "ExpandTensorNField.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType,diag,diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType,negSumDiag,negSumDiag) \
|
||||
UNARY_FUNCTION(CmptType, tensorType,contractScalar,contractScalar) \
|
||||
UNARY_FUNCTION(vectorType, tensorType,contractLinear,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
124
src/VectorN/OpenFOAM/GeometricFields/GeometricTensorNFields.H
Normal file
124
src/VectorN/OpenFOAM/GeometricFields/GeometricTensorNFields.H
Normal file
|
@ -0,0 +1,124 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
GeometricTensorNFields
|
||||
|
||||
Description
|
||||
Specialisation of GeometricField<T> for TensorN.
|
||||
|
||||
SourceFiles
|
||||
GeometricTensorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef GeometricTensorNFields_H
|
||||
#define GeometricTensorNFields_H
|
||||
|
||||
#include "GeometricField.H"
|
||||
#include "DimensionedTensorNFields.H"
|
||||
#include "TensorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define TensorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, tensorType,inv,inv) \
|
||||
UNARY_FUNCTION(diagTensorType, tensorType,diag,diag) \
|
||||
UNARY_FUNCTION(tensorType, tensorType,negSumDiag,negSumDiag) \
|
||||
UNARY_FUNCTION(CmptType, tensorType,contractScalar,contractScalar) \
|
||||
UNARY_FUNCTION(vectorType, tensorType,contractLinear,contractLinear) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, CmptType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, diagTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, sphericalTensorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, tensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, diagTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(tensorType, sphericalTensorType, tensorType, -,'-',subtract)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(TensorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef TensorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "GeometricTensorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,72 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "GeometricVectorNFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.C"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,94 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
GeometricVectorNFields
|
||||
|
||||
Description
|
||||
Specialisations of GeometricField<T> for VectorN types.
|
||||
|
||||
SourceFiles
|
||||
GeometricVectorNFields.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef GeometricVectorNFields_H
|
||||
#define GeometricVectorNFields_H
|
||||
|
||||
#include "GeometricField.H"
|
||||
#include "DimensionedVectorNFields.H"
|
||||
#include "VectorNFieldFields.H"
|
||||
|
||||
#define TEMPLATE template<template<class> class PatchField, class GeoMesh>
|
||||
#include "GeometricFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorN_FieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, CmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(CmptType, vectorType, cmptSum, cmptSum) \
|
||||
\
|
||||
BINARY_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
BINARY_TYPE_FUNCTION(vectorType, vectorType, vectorType, cmptMultiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, *,'*',multiply) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, *,'*',multiply) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, CmptType, vectorType, /,'|',divide) \
|
||||
\
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract) \
|
||||
\
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, +,'+',add) \
|
||||
BINARY_TYPE_OPERATOR(vectorType, vectorType, vectorType, -,'-',subtract)
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
forAllVectorTensorNTypes(VectorN_FieldFunctions)
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef VectorN_FieldFunctions
|
||||
|
||||
#include "undefFieldFunctionsM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "GeometricVectorNFields.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
53
src/VectorN/OpenFOAM/Lists/VectorNLists.C
Normal file
53
src/VectorN/OpenFOAM/Lists/VectorNLists.C
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
Specialisation of List<T> for VectorN and TensorN types.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "VectorNLists.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
#define makeListType(type, Type, args...) \
|
||||
defineCompoundTypeName(List<type>, Type##List); \
|
||||
addCompoundToRunTimeSelectionTable(List<type>, type##List);
|
||||
|
||||
forAllVectorNTypes(makeListType)
|
||||
forAllTensorNTypes(makeListType)
|
||||
forAllDiagTensorNTypes(makeListType)
|
||||
forAllSphericalTensorNTypes(makeListType)
|
||||
|
||||
#undef makeListType
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// ************************************************************************* //
|
60
src/VectorN/OpenFOAM/Lists/VectorNLists.H
Normal file
60
src/VectorN/OpenFOAM/Lists/VectorNLists.H
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
VectorNLists
|
||||
|
||||
Description
|
||||
Specialisation of List<T> for VectorN and TensorN types.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorNLists_H
|
||||
#define VectorNLists_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
#include "List.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
#define makeListTypeDef(type, Type, args...) \
|
||||
typedef List<type> type##List;
|
||||
|
||||
forAllVectorNTypes(makeListTypeDef)
|
||||
forAllTensorNTypes(makeListTypeDef)
|
||||
forAllDiagTensorNTypes(makeListTypeDef)
|
||||
forAllSphericalTensorNTypes(makeListTypeDef)
|
||||
|
||||
#undef makeListTypeDef
|
||||
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
95
src/VectorN/OpenFOAM/expandContract/ExpandTensorN.H
Normal file
95
src/VectorN/OpenFOAM/expandContract/ExpandTensorN.H
Normal file
|
@ -0,0 +1,95 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
Global functions for expansion and contraction of tensorN coefficient
|
||||
to diagonal and scalar type
|
||||
|
||||
Author
|
||||
Hrvoje Jasak, Wikki Ltd. All rights reserved
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef expandTensorN_H
|
||||
#define expandTensorN_H
|
||||
|
||||
#include "VectorN.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define UNARY_TEMPLATE_FUNCTION(ReturnType, Type, Func) \
|
||||
template<class Cmpt, int length> \
|
||||
inline void Func(ReturnType<Cmpt,length>&, const Type<Cmpt,length>&);
|
||||
|
||||
#define UNARY_TEMPLATE_FUNCTION_VS(ReturnType, Func) \
|
||||
template<class Cmpt, int length> \
|
||||
inline void Func(ReturnType<Cmpt,length>&, const Cmpt&);
|
||||
|
||||
#define UNARY_TEMPLATE_FUNCTION_SV(Type, Func) \
|
||||
template<class Cmpt, int length> \
|
||||
inline void Func(Cmpt&, const Type<Cmpt,length>&);
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
UNARY_TEMPLATE_FUNCTION_SV(TensorN, contractScalar)
|
||||
UNARY_TEMPLATE_FUNCTION_SV(DiagTensorN, contractScalar)
|
||||
UNARY_TEMPLATE_FUNCTION_SV(SphericalTensorN, contractScalar)
|
||||
UNARY_TEMPLATE_FUNCTION_SV(VectorN, contractScalar)
|
||||
|
||||
UNARY_TEMPLATE_FUNCTION(VectorN, TensorN, contractLinear)
|
||||
UNARY_TEMPLATE_FUNCTION(VectorN, DiagTensorN, contractLinear)
|
||||
UNARY_TEMPLATE_FUNCTION(VectorN, SphericalTensorN, contractLinear)
|
||||
|
||||
UNARY_TEMPLATE_FUNCTION_VS(VectorN, expandScalar)
|
||||
UNARY_TEMPLATE_FUNCTION_VS(TensorN, expandScalar)
|
||||
UNARY_TEMPLATE_FUNCTION_VS(DiagTensorN, expandScalar)
|
||||
UNARY_TEMPLATE_FUNCTION_VS(SphericalTensorN, expandScalar)
|
||||
|
||||
UNARY_TEMPLATE_FUNCTION(TensorN, VectorN, expandLinear)
|
||||
UNARY_TEMPLATE_FUNCTION(DiagTensorN, VectorN, expandLinear)
|
||||
UNARY_TEMPLATE_FUNCTION(SphericalTensorN, VectorN, expandLinear)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "ExpandTensorNI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef UNARY_TEMPLATE_FUNCTION
|
||||
#undef UNARY_TEMPLATE_FUNCTION_VS
|
||||
#undef UNARY_TEMPLATE_FUNCTION_SV
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
168
src/VectorN/OpenFOAM/expandContract/ExpandTensorNField.C
Normal file
168
src/VectorN/OpenFOAM/expandContract/ExpandTensorNField.C
Normal file
|
@ -0,0 +1,168 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
Global functions for expansion and contraction of tensor field
|
||||
to diagonal type
|
||||
|
||||
Author
|
||||
Hrvoje Jasak, Wikki Ltd. All rights reserved
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "ExpandTensorNField.H"
|
||||
#include "ExpandTensorN.H"
|
||||
#include "Field.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
#include "FieldM.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define UNARY_FUNCTION(typeF1, typeF2, FUNC) \
|
||||
\
|
||||
void FUNC(Field<typeF1>& f1, const UList<typeF2>& f2) \
|
||||
{ \
|
||||
checkFields(f1, f2, #FUNC "(f1,f2)"); \
|
||||
\
|
||||
List_ACCESS(typeF1, f1, f1P); \
|
||||
List_CONST_ACCESS(typeF2, f2, f2P); \
|
||||
\
|
||||
List_FOR_ALL(f1,i) \
|
||||
FUNC(List_ELEM(f1, f1P, i), List_ELEM(f2, f2P, i)); \
|
||||
List_END_FOR_ALL \
|
||||
} \
|
||||
\
|
||||
void FUNC(Field<typeF1>& f1, const tmp<Field<typeF2> >& tf2) \
|
||||
{ \
|
||||
FUNC(f1,tf2()); \
|
||||
tf2.clear(); \
|
||||
}
|
||||
|
||||
#define ExpandFieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, cmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(cmptType, tensorType, contractScalar) \
|
||||
UNARY_FUNCTION(cmptType, diagTensorType, contractScalar) \
|
||||
UNARY_FUNCTION(cmptType, sphericalTensorType, contractScalar) \
|
||||
UNARY_FUNCTION(cmptType, vectorType, contractScalar) \
|
||||
\
|
||||
UNARY_FUNCTION(vectorType, tensorType, contractLinear) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType, contractLinear) \
|
||||
UNARY_FUNCTION(vectorType, sphericalTensorType, contractLinear) \
|
||||
\
|
||||
UNARY_FUNCTION(vectorType, cmptType, expandScalar) \
|
||||
UNARY_FUNCTION(tensorType, cmptType, expandScalar) \
|
||||
UNARY_FUNCTION(diagTensorType, cmptType, expandScalar) \
|
||||
UNARY_FUNCTION(sphericalTensorType, cmptType, expandScalar) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, vectorType, expandLinear) \
|
||||
UNARY_FUNCTION(diagTensorType, vectorType, expandLinear) \
|
||||
UNARY_FUNCTION(sphericalTensorType, vectorType, expandLinear)
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
|
||||
|
||||
forAllVectorTensorNTypes(ExpandFieldFunctions)
|
||||
|
||||
// template<class Cmpt, int length>
|
||||
// void contractScalar
|
||||
// (
|
||||
// Field<Cmpt>& res,
|
||||
// const UList<TensorN<Cmpt, length> >& f
|
||||
// )
|
||||
// {
|
||||
// forAll (res, i)
|
||||
// {
|
||||
// contractScalar(res[i], f[i]);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void contractLinear
|
||||
// (
|
||||
// Field<VectorN<Cmpt, length> >& res,
|
||||
// const UList<TensorN<Cmpt, length> >& f
|
||||
// )
|
||||
// {
|
||||
// forAll (res, i)
|
||||
// {
|
||||
// contractLinear(res[i], f[i]);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandScalar
|
||||
// (
|
||||
// Field<VectorN<Cmpt, length> >& res,
|
||||
// const UList<Cmpt>& f
|
||||
// )
|
||||
// {
|
||||
// forAll (res, i)
|
||||
// {
|
||||
// expandScalar(res[i], f[i]);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandScalar
|
||||
// (
|
||||
// Field<TensorN<Cmpt, length> >& res,
|
||||
// const UList<Cmpt>& f
|
||||
// )
|
||||
// {
|
||||
// forAll (res, i)
|
||||
// {
|
||||
// expandScalar(res[i], f[i]);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandLinear
|
||||
// (
|
||||
// Field<TensorN<Cmpt, length> >& res,
|
||||
// const UList<VectorN<Cmpt, length> >& f
|
||||
// )
|
||||
// {
|
||||
// forAll (res, i)
|
||||
// {
|
||||
// expandLinear(res[i], f[i]);
|
||||
// }
|
||||
// }
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef UNARY_FUNCTION
|
||||
#undef ExpandFieldFunctions
|
||||
|
||||
// ************************************************************************* //
|
193
src/VectorN/OpenFOAM/expandContract/ExpandTensorNField.H
Normal file
193
src/VectorN/OpenFOAM/expandContract/ExpandTensorNField.H
Normal file
|
@ -0,0 +1,193 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
Global functions for expansion and contraction of tensor field
|
||||
to diagonal type
|
||||
|
||||
Author
|
||||
Hrvoje Jasak, Wikki Ltd. All rights reserved
|
||||
|
||||
SourceFiles
|
||||
ExpandTensorNField.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef expandTensorNField_H
|
||||
#define expandTensorNField_H
|
||||
|
||||
#include "Field.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define UNARY_FUNCTION(typeF1, typeF2, FUNC) \
|
||||
void FUNC(Field<typeF1>& f1, const UList<typeF2>& f2); \
|
||||
void FUNC(Field<typeF1>& f1, const tmp<Field<typeF2> >& tf2);
|
||||
|
||||
|
||||
#define ExpandFieldFunctions(tensorType, diagTensorType, sphericalTensorType, \
|
||||
vectorType, cmptType, args...) \
|
||||
\
|
||||
UNARY_FUNCTION(cmptType, tensorType, contractScalar) \
|
||||
UNARY_FUNCTION(cmptType, diagTensorType, contractScalar) \
|
||||
UNARY_FUNCTION(cmptType, sphericalTensorType, contractScalar) \
|
||||
UNARY_FUNCTION(cmptType, vectorType, contractScalar) \
|
||||
\
|
||||
UNARY_FUNCTION(vectorType, tensorType, contractLinear) \
|
||||
UNARY_FUNCTION(vectorType, diagTensorType, contractLinear) \
|
||||
UNARY_FUNCTION(vectorType, sphericalTensorType, contractLinear) \
|
||||
\
|
||||
UNARY_FUNCTION(vectorType, cmptType, expandScalar) \
|
||||
UNARY_FUNCTION(tensorType, cmptType, expandScalar) \
|
||||
UNARY_FUNCTION(diagTensorType, cmptType, expandScalar) \
|
||||
UNARY_FUNCTION(sphericalTensorType, cmptType, expandScalar) \
|
||||
\
|
||||
UNARY_FUNCTION(tensorType, vectorType, expandLinear) \
|
||||
UNARY_FUNCTION(diagTensorType, vectorType, expandLinear) \
|
||||
UNARY_FUNCTION(sphericalTensorType, vectorType, expandLinear)
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
|
||||
|
||||
forAllVectorTensorNTypes(ExpandFieldFunctions)
|
||||
|
||||
|
||||
// template <class Cmpt, int length>
|
||||
// void contractScalar
|
||||
// (
|
||||
// Field<Cmpt>& res,
|
||||
// const UList<TensorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void contractScalar
|
||||
// (
|
||||
// Field<Cmpt>& res,
|
||||
// const UList<DiagTensorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void contractScalar
|
||||
// (
|
||||
// Field<Cmpt>& res,
|
||||
// const UList<SphericalTensorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void contractLinear
|
||||
// (
|
||||
// Field<VectorN<Cmpt, length> >& res,
|
||||
// const UList<TensorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void contractLinear
|
||||
// (
|
||||
// Field<VectorN<Cmpt, length> >& res,
|
||||
// const UList<DiagTensorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void contractLinear
|
||||
// (
|
||||
// Field<VectorN<Cmpt, length> >& res,
|
||||
// const UList<SphericalTensorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandScalar
|
||||
// (
|
||||
// Field<VectorN<Cmpt, length> >& res,
|
||||
// const UList<Cmpt>& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandScalar
|
||||
// (
|
||||
// Field<TensorN<Cmpt, length> >& res,
|
||||
// const UList<Cmpt>& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandScalar
|
||||
// (
|
||||
// Field<DiagTensorN<Cmpt, length> >& res,
|
||||
// const UList<Cmpt>& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandScalar
|
||||
// (
|
||||
// Field<SphericalTensorN<Cmpt, length> >& res,
|
||||
// const UList<Cmpt>& f
|
||||
// );
|
||||
//
|
||||
// // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandLinear
|
||||
// (
|
||||
// Field<TensorN<Cmpt, length> >& res,
|
||||
// const UList<VectorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandLinear
|
||||
// (
|
||||
// Field<DiagTensorN<Cmpt, length> >& res,
|
||||
// const UList<VectorN<Cmpt, length> >& f
|
||||
// );
|
||||
//
|
||||
// template <class Cmpt, int length>
|
||||
// void expandLinear
|
||||
// (
|
||||
// Field<SphericalTensorN<Cmpt, length> >& res,
|
||||
// const UList<VectorN<Cmpt, length> >& f
|
||||
// );
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#undef UNARY_FUNCTION
|
||||
#undef ExpandFieldFunctions
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// #ifdef NoRepository
|
||||
// # include "ExpandTensorNField.C"
|
||||
// #endif
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
#endif
|
322
src/VectorN/OpenFOAM/expandContract/ExpandTensorNI.H
Normal file
322
src/VectorN/OpenFOAM/expandContract/ExpandTensorNI.H
Normal file
|
@ -0,0 +1,322 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
ExpandTensorN
|
||||
|
||||
Description
|
||||
|
||||
Author
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
//- Return the Average of a vector of as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void contractScalar(Cmpt& result, const VectorN<Cmpt, length>& t)
|
||||
{
|
||||
result = pTraits<Cmpt>::zero;
|
||||
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result += t[i];
|
||||
}
|
||||
|
||||
//- Modified 2009/11/3 by I. Clifford
|
||||
result *= 1.0/VectorN<Cmpt, length>::nComponents;
|
||||
}
|
||||
|
||||
|
||||
//- Return the Average of a vector of as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt contractScalar(const VectorN<Cmpt, length>& t)
|
||||
{
|
||||
Cmpt result;
|
||||
contractScalar(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a TensorN as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void contractScalar(Cmpt& result, const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
result = pTraits<Cmpt>::zero;
|
||||
|
||||
int j=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result += t[j];
|
||||
j += TensorN<Cmpt, length>::rowLength+1;
|
||||
}
|
||||
|
||||
//- Modified 2009/11/3 by I. Clifford
|
||||
result *= 1.0/TensorN<Cmpt, length>::rowLength;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a TensorN as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt contractScalar(const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
Cmpt result;
|
||||
contractScalar(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a DiagTensorN as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void contractScalar(Cmpt& result, const DiagTensorN<Cmpt, length>& t)
|
||||
{
|
||||
result = pTraits<Cmpt>::zero;
|
||||
|
||||
for (int i = 0; i < DiagTensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result += t[i];
|
||||
}
|
||||
|
||||
result *= 1.0/TensorN<Cmpt, length>::rowLength;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a DiagTensorN as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt contractScalar(const DiagTensorN<Cmpt, length>& t)
|
||||
{
|
||||
Cmpt result;
|
||||
contractScalar(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a SphericalTensorN as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void contractScalar(Cmpt& result, const SphericalTensorN<Cmpt, length>& t)
|
||||
{
|
||||
result = t[0];
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a SphericalTensorN as a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt contractScalar(const SphericalTensorN<Cmpt, length>& t)
|
||||
{
|
||||
Cmpt result;
|
||||
contractScalar(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a TensorN as a vector
|
||||
template <class Cmpt, int length>
|
||||
inline void contractLinear
|
||||
(
|
||||
VectorN<Cmpt, length>& result,
|
||||
const TensorN<Cmpt, length>& t
|
||||
)
|
||||
{
|
||||
int j=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[i] = t[j];
|
||||
j += TensorN<Cmpt, length>::rowLength+1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a TensorN as a vector
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length> contractLinear(const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
VectorN<Cmpt, length> result;
|
||||
contractLinear(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a DiagTensorN as a vector
|
||||
template <class Cmpt, int length>
|
||||
inline void contractLinear
|
||||
(
|
||||
VectorN<Cmpt, length>& result,
|
||||
const DiagTensorN<Cmpt, length>& t
|
||||
)
|
||||
{
|
||||
for (int i = 0; i < DiagTensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[i] = t[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a DiagTensorN as a vector
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length> contractLinear(const DiagTensorN<Cmpt, length>& t)
|
||||
{
|
||||
VectorN<Cmpt, length> result;
|
||||
contractLinear(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a SphericalTensorN as a vector
|
||||
template <class Cmpt, int length>
|
||||
inline void contractLinear
|
||||
(
|
||||
VectorN<Cmpt, length>& result,
|
||||
const SphericalTensorN<Cmpt, length>& t
|
||||
)
|
||||
{
|
||||
for (int i = 0; i < SphericalTensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[i] = t[0];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return the diagonal of a SphericalTensorN as a vector
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length> contractLinear
|
||||
(
|
||||
const SphericalTensorN<Cmpt, length>& t
|
||||
)
|
||||
{
|
||||
VectorN<Cmpt, length> result;
|
||||
contractLinear(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the VectorN given a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void expandScalar(VectorN<Cmpt, length>& result, const Cmpt& v)
|
||||
{
|
||||
for (int i = 0; i < VectorN<Cmpt, length>::nComponents; i++)
|
||||
{
|
||||
result[i] = v;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return the TensorN given a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void expandScalar(TensorN<Cmpt, length>& result, const Cmpt& v)
|
||||
{
|
||||
result = TensorN<Cmpt, length>::zero;
|
||||
|
||||
int j =0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[j] = v;
|
||||
j += TensorN<Cmpt, length>::rowLength+1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return the DiagTensorN given a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void expandScalar(DiagTensorN<Cmpt, length>& result, const Cmpt& v)
|
||||
{
|
||||
for (int i = 0; i < DiagTensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[i] = v;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return the SphericalTensorN given a scalar
|
||||
template <class Cmpt, int length>
|
||||
inline void expandScalar(SphericalTensorN<Cmpt, length>& result, const Cmpt& v)
|
||||
{
|
||||
result[0] = v;
|
||||
}
|
||||
|
||||
|
||||
//- Return the TensorN given a diagonal vectorN
|
||||
template <class Cmpt, int length>
|
||||
inline void expandLinear
|
||||
(
|
||||
TensorN<Cmpt, length>& result,
|
||||
const VectorN<Cmpt, length>& v
|
||||
)
|
||||
{
|
||||
result = TensorN<Cmpt, length>::zero;
|
||||
|
||||
int j=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[j] = v[i];
|
||||
j += TensorN<Cmpt, length>::rowLength+1;
|
||||
}
|
||||
}
|
||||
|
||||
//- Return the DiagTensorN given a diagonal vectorN
|
||||
template <class Cmpt, int length>
|
||||
inline void expandLinear
|
||||
(
|
||||
DiagTensorN<Cmpt, length>& result,
|
||||
const VectorN<Cmpt, length>& v
|
||||
)
|
||||
{
|
||||
for (int i = 0; i < DiagTensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[i] = v[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return the SphericalTensorN given a diagonal vectorN
|
||||
template <class Cmpt, int length>
|
||||
inline void expandLinear
|
||||
(
|
||||
SphericalTensorN<Cmpt, length>& result,
|
||||
const VectorN<Cmpt, length>& v
|
||||
)
|
||||
{
|
||||
result[0] = pTraits<Cmpt>::zero;
|
||||
|
||||
for (int i = 0; i < DiagTensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result[0] += v[i];
|
||||
}
|
||||
|
||||
result[0] *= 1.0/DiagTensorN<Cmpt, length>::rowLength;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// ************************************************************************* //
|
122
src/VectorN/OpenFOAM/primitives/DiagTensorN.H
Normal file
122
src/VectorN/OpenFOAM/primitives/DiagTensorN.H
Normal file
|
@ -0,0 +1,122 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
DiagTensorN
|
||||
|
||||
Description
|
||||
Templated NXN DiagTensor derived from VectorSpace adding construction from
|
||||
N components, and the inner-product (dot-product) and outer-product operators.
|
||||
|
||||
SourceFiles
|
||||
DiagTensorNI.H
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DiagTensorN_H
|
||||
#define DiagTensorN_H
|
||||
|
||||
#include "VectorN.H"
|
||||
#include "SphericalTensorN.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class DiagTensor Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template <class Cmpt, int length>
|
||||
class DiagTensorN
|
||||
:
|
||||
public VectorSpace<DiagTensorN<Cmpt, length>, Cmpt, length>
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
// Member constants
|
||||
|
||||
enum
|
||||
{
|
||||
rank = 2, // Rank of DiagTensor is 2
|
||||
rowLength = length
|
||||
};
|
||||
|
||||
|
||||
// Static data members
|
||||
|
||||
static const char* const typeName;
|
||||
static const char* componentNames[];
|
||||
static const DiagTensorN zero;
|
||||
static const DiagTensorN one;
|
||||
static const DiagTensorN I;
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct null
|
||||
inline DiagTensorN();
|
||||
|
||||
//- Construct given VectorSpace
|
||||
inline DiagTensorN(const VectorSpace<DiagTensorN<Cmpt, length>, Cmpt, length>&);
|
||||
|
||||
//- Construct from Istream
|
||||
inline DiagTensorN(Istream&);
|
||||
|
||||
//- Construct given component value. Special use only!
|
||||
explicit inline DiagTensorN(const Cmpt& tx);
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Diagonal
|
||||
inline DiagTensorN<Cmpt, length> diag() const;
|
||||
|
||||
//- Transpose
|
||||
inline DiagTensorN<Cmpt, length> T() const;
|
||||
|
||||
// Member Operators
|
||||
|
||||
//- Assign to a SphericalTensorN
|
||||
inline void operator=(const SphericalTensorN<Cmpt, length>&);
|
||||
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Include inline implementations
|
||||
#include "DiagTensorNI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
409
src/VectorN/OpenFOAM/primitives/DiagTensorNI.H
Normal file
409
src/VectorN/OpenFOAM/primitives/DiagTensorNI.H
Normal file
|
@ -0,0 +1,409 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const char* const DiagTensorN<Cmpt, length>::typeName =
|
||||
("diagTensor" + name(length)).c_str();
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const DiagTensorN<Cmpt, length> DiagTensorN<Cmpt, length>::zero(0);
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const DiagTensorN<Cmpt, length> DiagTensorN<Cmpt, length>::one(1);
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
// Construct null
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length>::DiagTensorN()
|
||||
{}
|
||||
|
||||
|
||||
// Construct given VectorSpace
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length>::DiagTensorN
|
||||
(
|
||||
const VectorSpace<DiagTensorN<Cmpt, length>, Cmpt, length>& vs
|
||||
)
|
||||
:
|
||||
VectorSpace<DiagTensorN<Cmpt, length>, Cmpt, length>(vs)
|
||||
{}
|
||||
|
||||
|
||||
//- Construct from component
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length>::DiagTensorN(const Cmpt& tx)
|
||||
{
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::eqOpS(*this, tx, eqOp<Cmpt>());
|
||||
}
|
||||
|
||||
|
||||
// Construct from Istream
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length>::DiagTensorN(Istream& is)
|
||||
:
|
||||
VectorSpace<DiagTensorN<Cmpt, length>, Cmpt, length>(is)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
//- Return diagonal tensor diagonal
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length> DiagTensorN<Cmpt, length>::diag() const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
//- Return diagonal tensor transpose
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length> DiagTensorN<Cmpt, length>::T() const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
//- Assign to a SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline void DiagTensorN<Cmpt, length>::operator=(const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
const Cmpt& s = st.v_[0];
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::eqOpS(*this, s, eqOp<Cmpt>());
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
//- Addition of DiagTensorN and DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator+(const DiagTensorN<Cmpt,length>& dt1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt,length>::nComponents,0>::op(res, dt1, dt2, plusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Addition of DiagTensorN and SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator+(const DiagTensorN<Cmpt,length>& dt1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
const Cmpt& s = st2.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt,length>::nComponents,0>::opVS(res, dt1, s, plusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Addition of SphericalTensorN and DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator+(const SphericalTensorN<Cmpt,length>& st1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
const Cmpt& s = st1.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt,length>::nComponents,0>::opSV(res, s, dt2, plusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of DiagTensorN and DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator-(const DiagTensorN<Cmpt,length>& dt1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt,length>::nComponents,0>::op(res, dt1, dt2, minusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of DiagTensorN and SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator-(const DiagTensorN<Cmpt,length>& dt1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
const Cmpt& s = st2.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt,length>::nComponents,0>::opVS(res, dt1, s, minusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of SphericalTensorN and DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator-(const SphericalTensorN<Cmpt,length>& st1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
const Cmpt& s = st1.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt,length>::nComponents,0>::opSV(res, s, dt2, minusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a diagonal tensor and a diagonal tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<DiagTensorN<Cmpt, length>, DiagTensorN<Cmpt, length> >::type
|
||||
operator&(const DiagTensorN<Cmpt, length>& dt1, const DiagTensorN<Cmpt, length>& dt2)
|
||||
{
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::op(res, dt1, dt2, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between spherical tensor and diagonal tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<SphericalTensorN<Cmpt, length>, DiagTensorN<Cmpt, length> >::type
|
||||
operator&(const SphericalTensorN<Cmpt, length>& st1, const DiagTensorN<Cmpt, length>& dt2)
|
||||
{
|
||||
const Cmpt& s = st1.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::opSV(res, s, dt2, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between diagonal tensor and spherical tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<DiagTensorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >::type
|
||||
operator&(const DiagTensorN<Cmpt, length>& dt1, const SphericalTensorN<Cmpt, length>& st2)
|
||||
{
|
||||
const Cmpt& s = st2.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::opVS(res, dt1, s, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a diagonal tensor and a vector
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<DiagTensorN<Cmpt, length>, VectorN<Cmpt, length> >::type
|
||||
operator&(const DiagTensorN<Cmpt, length>& dt, const VectorN<Cmpt, length>& v)
|
||||
{
|
||||
VectorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::opVV(res, dt, v, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//- Inner-product between a vector and a tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<VectorN<Cmpt, length>, DiagTensorN<Cmpt, length> >::type
|
||||
operator&(const VectorN<Cmpt, length>& v, const DiagTensorN<Cmpt, length>& dt)
|
||||
{
|
||||
VectorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::opVV(res, v, dt, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Division of a scalar by a diagonalTensor
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length>
|
||||
operator/(const scalar s, const DiagTensorN<Cmpt, length>& dt)
|
||||
{
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::opSV(res, s, dt, divideOp3<Cmpt, scalar, Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a VectorN by an inverse diagonalTensor
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt,length>
|
||||
operator/(const VectorN<Cmpt,length>& v, const DiagTensorN<Cmpt,length>& dt)
|
||||
{
|
||||
VectorN<Cmpt, length> res(v);
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::eqOp(res, dt, divideEqOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a DiagTensorN and an inverse DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator/(const DiagTensorN<Cmpt,length>& dt1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::op(res, dt1, dt2, divideOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a SphericalTensorN and an inverse DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator/(const SphericalTensorN<Cmpt,length>& st1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
const Cmpt& s = st1.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::opSV(res, s, dt2, divideOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a DiagTensorN and an inverse SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt,length>
|
||||
operator/(const DiagTensorN<Cmpt,length>& dt1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
const Cmpt& s = st2.v_[0];
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::opVS(res, dt1, s, divideOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Return the inverse of a diagonal tensor
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length> inv(const DiagTensorN<Cmpt, length>& dt)
|
||||
{
|
||||
DiagTensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<DiagTensorN<Cmpt, length>::nComponents,0>::opSV(res, 1.0, dt, divideOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Return tensor diagonal
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length> diag(const DiagTensorN<Cmpt, length>& dt)
|
||||
{
|
||||
return dt;
|
||||
}
|
||||
|
||||
|
||||
//- Return the component sum
|
||||
// template <class Cmpt, int length>
|
||||
// inline Cmpt sum(const DiagTensorN<Cmpt, length>& dt)
|
||||
// {
|
||||
// Cmpt result=Cmpt::zero;
|
||||
// for(register label i=0; i<DiagTensorN<Cmpt, length>::nComponents; i++)
|
||||
// {
|
||||
// result += dt[i];
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
|
||||
//- Transform the spherical tensor
|
||||
//- The components are assumed to be individual scalars
|
||||
//- i.e. transform has no effect
|
||||
template<class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length> transform
|
||||
(
|
||||
const tensor& tt,
|
||||
const DiagTensorN<Cmpt, length>& v
|
||||
)
|
||||
{
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<DiagTensorN<Cmpt, length>, Cmpt>
|
||||
{
|
||||
public:
|
||||
|
||||
typedef DiagTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<Cmpt, DiagTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef DiagTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<DiagTensorN<Cmpt, length>, DiagTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef DiagTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<SphericalTensorN<Cmpt, length>, DiagTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef DiagTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<DiagTensorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef DiagTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<VectorN<Cmpt, length>, DiagTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<DiagTensorN<Cmpt, length>, VectorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
115
src/VectorN/OpenFOAM/primitives/SphericalTensorN.H
Normal file
115
src/VectorN/OpenFOAM/primitives/SphericalTensorN.H
Normal file
|
@ -0,0 +1,115 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
SphericalTensorN
|
||||
|
||||
Description
|
||||
Templated NXN SphericalTensor derived from VectorSpace adding construction from
|
||||
N components, and the inner-product (dot-product) and outer-product operators.
|
||||
|
||||
SourceFiles
|
||||
SphericalTensorNI.H
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef SphericalTensorN_H
|
||||
#define SphericalTensorN_H
|
||||
|
||||
#include "VectorN.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class DiagTensor Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template <class Cmpt, int length>
|
||||
class SphericalTensorN
|
||||
:
|
||||
public VectorSpace<SphericalTensorN<Cmpt, length>, Cmpt, 1>
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
// Member constants
|
||||
|
||||
enum
|
||||
{
|
||||
rank = 2, // Rank of DiagTensor is 2
|
||||
rowLength = length
|
||||
};
|
||||
|
||||
|
||||
// Static data members
|
||||
|
||||
static const char* const typeName;
|
||||
static const char* componentNames[];
|
||||
static const SphericalTensorN zero;
|
||||
static const SphericalTensorN one;
|
||||
static const SphericalTensorN I;
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct null
|
||||
inline SphericalTensorN();
|
||||
|
||||
//- Construct given VectorSpace
|
||||
inline SphericalTensorN(const VectorSpace<SphericalTensorN<Cmpt, length>, Cmpt, 1>&);
|
||||
|
||||
//- Construct from Istream
|
||||
inline SphericalTensorN(Istream&);
|
||||
|
||||
//- Construct given component value. Special use only!
|
||||
explicit inline SphericalTensorN(const Cmpt& tx);
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Diagonal
|
||||
inline SphericalTensorN<Cmpt, length> diag() const;
|
||||
|
||||
//- Transpose
|
||||
inline SphericalTensorN<Cmpt, length> T() const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Include inline implementations
|
||||
#include "SphericalTensorNI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
274
src/VectorN/OpenFOAM/primitives/SphericalTensorNI.H
Normal file
274
src/VectorN/OpenFOAM/primitives/SphericalTensorNI.H
Normal file
|
@ -0,0 +1,274 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const char* const SphericalTensorN<Cmpt, length>::typeName =
|
||||
("sphericalTensor" + name(length)).c_str();
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const SphericalTensorN<Cmpt, length> SphericalTensorN<Cmpt, length>::zero(0);
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const SphericalTensorN<Cmpt, length> SphericalTensorN<Cmpt, length>::one(1);
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
// Construct null
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length>::SphericalTensorN()
|
||||
{}
|
||||
|
||||
|
||||
// Construct given VectorSpace
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length>::SphericalTensorN
|
||||
(
|
||||
const VectorSpace<SphericalTensorN<Cmpt, length>, Cmpt, 1>& vs
|
||||
)
|
||||
:
|
||||
VectorSpace<SphericalTensorN<Cmpt, length>, Cmpt, 1>(vs)
|
||||
{}
|
||||
|
||||
|
||||
//- Construct from component
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length>::SphericalTensorN(const Cmpt& tx)
|
||||
{
|
||||
this->v_[0] = tx;
|
||||
}
|
||||
|
||||
|
||||
// Construct from Istream
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length>::SphericalTensorN(Istream& is)
|
||||
:
|
||||
VectorSpace<SphericalTensorN<Cmpt, length>, Cmpt, 1>(is)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
//- Return diagonal tensor diagonal
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length> SphericalTensorN<Cmpt, length>::diag() const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
//- Return spherical tensor transpose
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length> SphericalTensorN<Cmpt, length>::T() const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
//- Transform the spherical tensor
|
||||
//- The components are assumed to be individual scalars
|
||||
//- i.e. transform has no effect
|
||||
template<class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length> transform
|
||||
(
|
||||
const tensor& tt,
|
||||
const SphericalTensorN<Cmpt, length>& v
|
||||
)
|
||||
{
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
//- Addition of SphericalTensorN and SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt,length>
|
||||
operator+(const SphericalTensorN<Cmpt,length>& st1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>(st1.v_[0] + st2.v_[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of SphericalTensorN and SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt,length>
|
||||
operator-(const SphericalTensorN<Cmpt,length>& st1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>(st1.v_[0] - st2.v_[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between spherical tensor and spherical tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<SphericalTensorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >::type
|
||||
operator&(const SphericalTensorN<Cmpt, length>& st1, const SphericalTensorN<Cmpt, length>& st2)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>(st1.v_[0]*st2.v_[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a spherical tensor and a vector
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<SphericalTensorN<Cmpt, length>, VectorN<Cmpt, length> >::type
|
||||
operator&(const SphericalTensorN<Cmpt, length>& st, const VectorN<Cmpt, length>& v)
|
||||
{
|
||||
const Cmpt& s = st.v_[0];
|
||||
VectorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::opSV(res, s, v, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a vector and a spherical tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<VectorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >::type
|
||||
operator&(const VectorN<Cmpt, length>& v, const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
const Cmpt& s = st.v_[0];
|
||||
VectorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::opVS(res, v, s, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Product of a scalar and a spherical tensor
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length>
|
||||
operator*(const scalar s, const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>(s*st.v_[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Division of a scalar by a spherical tensor
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length>
|
||||
operator/(const scalar s, const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>(s/st.v_[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a VectorN by an inverse SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt,length>
|
||||
operator/(const VectorN<Cmpt,length>& v, const SphericalTensorN<Cmpt,length>& st)
|
||||
{
|
||||
return v/st.v_[0];
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a SphericalTensorN and an inverse SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt,length>
|
||||
operator/(const SphericalTensorN<Cmpt,length>& st1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>(st1.v_[0]/st2.v_[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Return the inverse of a spherical tensor
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length> inv(const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>(pTraits<Cmpt>::one/st.v_[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Return tensor diagonal
|
||||
template <class Cmpt, int length>
|
||||
inline SphericalTensorN<Cmpt, length> diag(const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
return st;
|
||||
}
|
||||
|
||||
//- Return the component sum
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt sum(const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
return SphericalTensorN<Cmpt, length>::rowLength*st.v_[0];
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<Cmpt, SphericalTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef SphericalTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<SphericalTensorN<Cmpt, length>, Cmpt>
|
||||
{
|
||||
public:
|
||||
|
||||
typedef SphericalTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<SphericalTensorN<Cmpt, length>, VectorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<VectorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<SphericalTensorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef SphericalTensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
150
src/VectorN/OpenFOAM/primitives/TensorN.H
Normal file
150
src/VectorN/OpenFOAM/primitives/TensorN.H
Normal file
|
@ -0,0 +1,150 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
TensorN
|
||||
|
||||
Description
|
||||
|
||||
SourceFiles
|
||||
TensorNI.H
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef TensorN_H
|
||||
#define TensorN_H
|
||||
|
||||
#include "VectorN.H"
|
||||
#include "SphericalTensorN.H"
|
||||
#include "DiagTensorN.H"
|
||||
|
||||
// * * * * * * * * * * * * * Forward Declarations * * * * * * * * * * * * * //
|
||||
|
||||
template <class Cmpt, int length>
|
||||
class DiagTensorN;
|
||||
|
||||
template <class Cmpt, int length>
|
||||
class SphericalTensorN;
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class TensorN Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template <class Cmpt, int length>
|
||||
class TensorN
|
||||
:
|
||||
public VectorSpace<TensorN<Cmpt, length>, Cmpt, length*length>
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
// Member constants
|
||||
|
||||
enum
|
||||
{
|
||||
rank = 2, // Rank of TensorN is 2
|
||||
rowLength = length // Number of components in a row
|
||||
};
|
||||
|
||||
|
||||
// Static data members
|
||||
|
||||
static const char* const typeName;
|
||||
|
||||
static const TensorN zero;
|
||||
static const TensorN one;
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct null
|
||||
inline TensorN();
|
||||
|
||||
//- Construct given VectorSpace
|
||||
inline TensorN
|
||||
(
|
||||
const VectorSpace<TensorN<Cmpt, length>, Cmpt, length*length>&
|
||||
);
|
||||
|
||||
//- Construct given component value. Special use only!
|
||||
explicit inline TensorN(const Cmpt& tx);
|
||||
|
||||
//- Construct from Istream
|
||||
TensorN(Istream&);
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return (i, j) component
|
||||
inline const Cmpt& operator()
|
||||
(
|
||||
const direction i,
|
||||
const direction j
|
||||
) const;
|
||||
|
||||
//- Return access to (i, j) component
|
||||
inline Cmpt& operator()
|
||||
(
|
||||
const direction i,
|
||||
const direction j
|
||||
);
|
||||
|
||||
//- Diagonal
|
||||
inline DiagTensorN<Cmpt, length> diag() const;
|
||||
|
||||
//- Transpose
|
||||
inline TensorN<Cmpt, length> T() const;
|
||||
|
||||
//- Negative sum the vertical off-diagonal components
|
||||
inline TensorN<Cmpt, length> negSumDiag() const;
|
||||
|
||||
// Member Operators
|
||||
|
||||
//- Assign to a SphericalTensorN
|
||||
inline void operator=(const SphericalTensorN<Cmpt, length>&);
|
||||
|
||||
//- Assign to a DiagTensorN
|
||||
inline void operator=(const DiagTensorN<Cmpt, length>&);
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Include inline implementations
|
||||
#include "TensorNI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
985
src/VectorN/OpenFOAM/primitives/TensorNI.H
Normal file
985
src/VectorN/OpenFOAM/primitives/TensorNI.H
Normal file
|
@ -0,0 +1,985 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const char* const TensorN<Cmpt, length>::typeName =
|
||||
("tensor" + name(length)).c_str();
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const TensorN<Cmpt, length> TensorN<Cmpt, length>::zero(0);
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const TensorN<Cmpt, length> TensorN<Cmpt, length>::one(1);
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
//- Construct null
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length>::TensorN()
|
||||
{}
|
||||
|
||||
|
||||
//- Construct given VectorSpace
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length>::TensorN
|
||||
(
|
||||
const VectorSpace<TensorN<Cmpt, length>, Cmpt, length*length>& vs
|
||||
)
|
||||
:
|
||||
VectorSpace<TensorN<Cmpt, length>, Cmpt, length*length>(vs)
|
||||
{}
|
||||
|
||||
|
||||
//- Construct from component
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length>::TensorN(const Cmpt& tx)
|
||||
{
|
||||
VectorSpaceOps<TensorN<Cmpt, length>::nComponents,0>::eqOpS(*this, tx, eqOp<Cmpt>());
|
||||
}
|
||||
|
||||
|
||||
//- Construct from Istream
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length>::TensorN(Istream& is)
|
||||
:
|
||||
VectorSpace<TensorN<Cmpt, length>, Cmpt, length*length>(is)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
//- Return tensor transpose
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length> TensorN<Cmpt, length>::T() const
|
||||
{
|
||||
TensorN<Cmpt, length> transpose;
|
||||
|
||||
int i = 0;
|
||||
for (int row = 0; row < TensorN<Cmpt, length>::rowLength; row++)
|
||||
{
|
||||
int j=row;
|
||||
for (int col = 0; col < TensorN<Cmpt, length>::rowLength; col++)
|
||||
{
|
||||
transpose.v_[i] = this->v_[j];
|
||||
i++;
|
||||
j += TensorN<Cmpt, length>::rowLength;
|
||||
}
|
||||
}
|
||||
|
||||
return transpose;
|
||||
}
|
||||
|
||||
//- Return tensor diagonal
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length> TensorN<Cmpt, length>::diag() const
|
||||
{
|
||||
DiagTensorN<Cmpt, length> dt;
|
||||
|
||||
int diagI=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
dt[i] = this->v_[diagI];
|
||||
diagI += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return dt;
|
||||
}
|
||||
|
||||
//- Negative sum the vertical off-diagonal components
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length> TensorN<Cmpt, length>::negSumDiag() const
|
||||
{
|
||||
TensorN<Cmpt, length> negsumdiag;
|
||||
|
||||
// Zero main diagonal
|
||||
int diagI=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
negsumdiag.v_[diagI] = 0.0;
|
||||
diagI += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
int k=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
diagI = 0;
|
||||
for (int j = 0; j < TensorN<Cmpt, length>::rowLength; j++)
|
||||
{
|
||||
if (k != diagI)
|
||||
{
|
||||
negsumdiag.v_[k] = this->v_[k];
|
||||
negsumdiag.v_[diagI] -= this->v_[k];
|
||||
}
|
||||
k++;
|
||||
diagI += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return negsumdiag;
|
||||
}
|
||||
|
||||
//- Assign to a SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline void TensorN<Cmpt, length>::operator=(const SphericalTensorN<Cmpt, length>& st)
|
||||
{
|
||||
int diag=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::nComponents; i++)
|
||||
{
|
||||
if (i == diag)
|
||||
{
|
||||
this->v_[i] = st[0];
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->v_[i] = pTraits<Cmpt>::zero;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Assign to a DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline void TensorN<Cmpt, length>::operator=(const DiagTensorN<Cmpt, length>& dt)
|
||||
{
|
||||
int diag=0;
|
||||
int k=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
for (int j = 0; j < TensorN<Cmpt, length>::rowLength; j++)
|
||||
{
|
||||
if (j == diag)
|
||||
{
|
||||
this->v_[k] = dt[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
this->v_[k] = pTraits<Cmpt>::zero;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
diag++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Transform the tensor
|
||||
//- The components are assumed to be individual scalars
|
||||
//- i.e. transform has no effect
|
||||
template<class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length> transform
|
||||
(
|
||||
const tensor& tt,
|
||||
const TensorN<Cmpt, length>& v
|
||||
)
|
||||
{
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||
|
||||
template <class Cmpt, int length>
|
||||
inline const Cmpt& TensorN<Cmpt, length>::operator()
|
||||
(
|
||||
const direction i,
|
||||
const direction j
|
||||
) const
|
||||
{
|
||||
return this->operator[](i*TensorN<Cmpt, length>::rowLength + j);
|
||||
}
|
||||
|
||||
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt& TensorN<Cmpt, length>::operator()
|
||||
(
|
||||
const direction i,
|
||||
const direction j
|
||||
)
|
||||
{
|
||||
return this->operator[](i*TensorN<Cmpt, length>::rowLength + j);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
//- Inner-product between two tensors
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<TensorN<Cmpt, length>, TensorN<Cmpt, length> >::type
|
||||
operator&(const TensorN<Cmpt, length>& t1, const TensorN<Cmpt, length>& t2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(TensorN<Cmpt, length>::zero);
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
for (int row = 0; row < TensorN<Cmpt, length>::rowLength; row++)
|
||||
{
|
||||
for (int col = 0; col < TensorN<Cmpt, length>::rowLength; col++)
|
||||
{
|
||||
Cmpt& r = result.v_[i];
|
||||
int m = j;
|
||||
int n = col;
|
||||
|
||||
for (int row2=0; row2 < TensorN<Cmpt, length>::rowLength; row2++)
|
||||
{
|
||||
r += t1.v_[m]*t2.v_[n];
|
||||
m++;
|
||||
n += TensorN<Cmpt, length>::rowLength;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
j += TensorN<Cmpt, length>::rowLength;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//- Inner-product between diagonal tensor and tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<DiagTensorN<Cmpt, length>, TensorN<Cmpt, length> >::type
|
||||
operator&(const DiagTensorN<Cmpt, length>& dt1, const TensorN<Cmpt, length>& t2)
|
||||
{
|
||||
TensorN<Cmpt, length> result;
|
||||
|
||||
int k=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
const Cmpt& xx = dt1.v_[i];
|
||||
|
||||
for (int j = 0; j < TensorN<Cmpt, length>::rowLength; j++)
|
||||
{
|
||||
result.v_[k] = xx*t2.v_[k];
|
||||
k++;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//- Inner-product between tensor and diagonal tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<TensorN<Cmpt, length>, DiagTensorN<Cmpt, length> >::type
|
||||
operator&(const TensorN<Cmpt, length>& t1, const DiagTensorN<Cmpt, length>& dt2)
|
||||
{
|
||||
TensorN<Cmpt, length> result;
|
||||
|
||||
int k=0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
for (int j = 0; j < TensorN<Cmpt, length>::rowLength; j++)
|
||||
{
|
||||
result.v_[k] = t1.v_[k]*dt2.v_[j];
|
||||
k++;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between spherical tensor and tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<SphericalTensorN<Cmpt, length>, TensorN<Cmpt, length> >::type
|
||||
operator&(const SphericalTensorN<Cmpt, length>& st1, const TensorN<Cmpt, length>& t2)
|
||||
{
|
||||
const Cmpt& s = st1.v_[0];
|
||||
TensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<TensorN<Cmpt, length>::nComponents,0>::opSV(res, s, t2, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between tensor and spherical tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<TensorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >::type
|
||||
operator&(const TensorN<Cmpt, length>& t1, const SphericalTensorN<Cmpt, length>& st2)
|
||||
{
|
||||
const Cmpt& s = st2.v_[0];
|
||||
TensorN<Cmpt, length> res;
|
||||
VectorSpaceOps<TensorN<Cmpt, length>::nComponents,0>::opVS(res, t1, s, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a tensor and a vector
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<TensorN<Cmpt, length>, VectorN<Cmpt, length> >::type
|
||||
operator&(const TensorN<Cmpt, length>& t, const VectorN<Cmpt, length>& v)
|
||||
{
|
||||
VectorN<Cmpt, length> result(VectorN<Cmpt, length>::zero);
|
||||
|
||||
int i=0;
|
||||
for (int row = 0; row < TensorN<Cmpt, length>::rowLength; row++)
|
||||
{
|
||||
Cmpt& r = result.v_[row];
|
||||
|
||||
for (int col = 0; col < TensorN<Cmpt, length>::rowLength; col++)
|
||||
{
|
||||
r += t.v_[i]*v.v_[col];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a vector and a tensor
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
innerProduct<VectorN<Cmpt, length>, TensorN<Cmpt, length> >::type
|
||||
operator&(const VectorN<Cmpt, length>& v, const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
VectorN<Cmpt, length> result(VectorN<Cmpt, length>::zero);
|
||||
|
||||
for (int col = 0; col < TensorN<Cmpt, length>::rowLength; col++)
|
||||
{
|
||||
int j=col;
|
||||
Cmpt& r = result.v_[col];
|
||||
|
||||
for (int row = 0; row < TensorN<Cmpt, length>::rowLength; row++)
|
||||
{
|
||||
r += v.v_[row]*t.v_[j];
|
||||
j += TensorN<Cmpt, length>::rowLength;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Outer-product between two vectors
|
||||
template <class Cmpt, int length>
|
||||
inline typename
|
||||
outerProduct<VectorN<Cmpt, length>, VectorN<Cmpt, length> >::type
|
||||
operator*(const VectorN<Cmpt, length>& v1, const VectorN<Cmpt, length>& v2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(TensorN<Cmpt, length>::zero);
|
||||
|
||||
int i=0;
|
||||
for (int row = 0; row < TensorN<Cmpt, length>::rowLength; row++)
|
||||
{
|
||||
for (int col = 0; col < TensorN<Cmpt, length>::rowLength; col++)
|
||||
{
|
||||
result.v_[i] = v1.v_[row]*v2.v_[col];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Addition of TensorN and TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator+(const TensorN<Cmpt,length>& t1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
TensorN<Cmpt,length> res;
|
||||
VectorSpaceOps<TensorN<Cmpt,length>::nComponents,0>::op(res, t1, t2, plusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Addition of TensorN and DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator+(const TensorN<Cmpt,length>& t1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t1);
|
||||
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] += dt2.v_[i];
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Addition of DiagTensorN and TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator+(const DiagTensorN<Cmpt,length>& dt1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t2);
|
||||
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] += dt1.v_[i];
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Addition of TensorN and SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator+(const TensorN<Cmpt,length>& t1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t1);
|
||||
|
||||
const Cmpt& s = st2.v_[0];
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] += s;
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Addition of SphericalTensorN and TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator+(const SphericalTensorN<Cmpt,length>& st1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t2);
|
||||
|
||||
const Cmpt& s = st1.v_[0];
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] += s;
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of TensorN and TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator-(const TensorN<Cmpt,length>& t1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
TensorN<Cmpt,length> res;
|
||||
VectorSpaceOps<TensorN<Cmpt,length>::nComponents,0>::op(res, t1, t2, minusOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of TensorN and DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator-(const TensorN<Cmpt,length>& t1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t1);
|
||||
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] -= dt2.v_[i];
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of DiagTensorN and TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator-(const DiagTensorN<Cmpt,length>& dt1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(-t2);
|
||||
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] += dt1.v_[i];
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of TensorN and SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator-(const TensorN<Cmpt,length>& t1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t1);
|
||||
|
||||
const Cmpt& s = st2.v_[0];
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] -= s;
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Subtraction of SphericalTensorN and TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator-(const SphericalTensorN<Cmpt,length>& st1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
TensorN<Cmpt, length> result(-t2);
|
||||
|
||||
const Cmpt& s = st1.v_[0];
|
||||
int diag = 0;
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::rowLength; i++)
|
||||
{
|
||||
result.v_[diag] += s;
|
||||
diag += TensorN<Cmpt, length>::rowLength + 1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Division of a scalar by a TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator/(const scalar s, const TensorN<Cmpt,length>& t)
|
||||
{
|
||||
return s*inv(t);
|
||||
}
|
||||
|
||||
//- Inner Product of a VectorN by an inverse TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt,length>
|
||||
operator/(const VectorN<Cmpt,length>& v, const TensorN<Cmpt,length>& t)
|
||||
{
|
||||
return v & inv(t);
|
||||
}
|
||||
|
||||
//- Inner Product of a TensorN by an inverse TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator/(const TensorN<Cmpt,length>& t1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
return t1 & inv(t2);
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a DiagTensorN and an inverse TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator/(const DiagTensorN<Cmpt,length>& dt1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
return dt1 & inv(t2);
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a TensorN and an inverse DiagTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator/(const TensorN<Cmpt,length>& t1, const DiagTensorN<Cmpt,length>& dt2)
|
||||
{
|
||||
return t1 & inv(dt2);
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a SphericalTensorN and an inverse TensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator/(const SphericalTensorN<Cmpt,length>& st1, const TensorN<Cmpt,length>& t2)
|
||||
{
|
||||
return st1.v_[0] * inv(t2);
|
||||
}
|
||||
|
||||
|
||||
//- Inner Product of a TensorN and an inverse SphericalTensorN
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt,length>
|
||||
operator/(const TensorN<Cmpt,length>& t1, const SphericalTensorN<Cmpt,length>& st2)
|
||||
{
|
||||
TensorN<Cmpt, length> result;
|
||||
|
||||
const Cmpt& s = st2[0];
|
||||
for (int i = 0; i < TensorN<Cmpt, length>::nComponents; i++)
|
||||
{
|
||||
result.v_[i] = t1.v_[i]/s;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// UNOPTIMIZED VERSION
|
||||
/*
|
||||
//- Return the inverse of a tensor give the determinant
|
||||
// Uses Gauss-Jordan Elimination with full pivoting
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length> inv(const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t);
|
||||
|
||||
label i, j, k, iRow=0, iCol=0;
|
||||
Cmpt bigValue, temp, pivotInv;
|
||||
|
||||
// Lists used for bookkeeping on the pivoting
|
||||
List<label> indexCol(length), indexRow(length), iPivot(length);
|
||||
|
||||
iPivot=0;
|
||||
|
||||
// Main loop over columns to be reduced
|
||||
for (i=0; i<length; i++)
|
||||
{
|
||||
bigValue = pTraits<Cmpt>::zero;
|
||||
|
||||
//Search for pivot element
|
||||
for (j=0; j<length; j++)
|
||||
{
|
||||
if (iPivot[j] != 1)
|
||||
{
|
||||
for (k=0; k<length; k++)
|
||||
{
|
||||
if (iPivot[k] == 0)
|
||||
{
|
||||
if (Foam::mag(result(j,k)) >= bigValue)
|
||||
{
|
||||
bigValue = Foam::mag(result(j,k));
|
||||
iRow = j;
|
||||
iCol = k;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
++(iPivot[iCol]);
|
||||
|
||||
// We now have the pivot element
|
||||
// Interchange rows if needed
|
||||
if (iRow != iCol)
|
||||
{
|
||||
for (j=0; j<length; j++)
|
||||
{
|
||||
Swap(result(iRow,j), result(iCol,j));
|
||||
}
|
||||
}
|
||||
indexRow[i] = iRow;
|
||||
indexCol[i] = iCol;
|
||||
|
||||
//Check for singularity
|
||||
if (result(iCol, iCol) == 0.0)
|
||||
{
|
||||
FatalErrorIn("inline TensorN<Cmpt, length> inv(const TensorN<Cmpt, length>& t)")
|
||||
<< "Singular tensor" << length << Foam::abort(FatalError);
|
||||
}
|
||||
|
||||
// Divide the pivot row by pivot element
|
||||
pivotInv = pTraits<Cmpt>::one/result(iCol, iCol);
|
||||
result(iCol, iCol) = pTraits<Cmpt>::one;
|
||||
|
||||
// Multiply all row elements by inverse
|
||||
for (j=0; j<length; j++)
|
||||
{
|
||||
result(iCol,j) *= pivotInv;
|
||||
}
|
||||
|
||||
// Reduce the rows
|
||||
for (j=0; j<length; j++)
|
||||
{
|
||||
if (j != iCol)
|
||||
{
|
||||
temp=result(j,iCol);
|
||||
result(j,iCol) = pTraits<Cmpt>::zero;
|
||||
|
||||
for (k=0; k<length; k++)
|
||||
{
|
||||
result(j,k) -= result(iCol,k)*temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Unscamble the solution
|
||||
for (i=length-1; i>=0; i--)
|
||||
{
|
||||
if (indexRow[i] != indexCol[i])
|
||||
{
|
||||
for (j=0; j<length; j++)
|
||||
{
|
||||
Swap(result(j,indexRow[i]), result(j,indexCol[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
*/
|
||||
|
||||
//- Return the inverse of a tensor give the determinant
|
||||
// Uses Gauss-Jordan Elimination with full pivoting
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length> inv(const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
TensorN<Cmpt, length> result(t);
|
||||
|
||||
label iRow=0, iCol=0;
|
||||
Cmpt largestCoeff, temp;
|
||||
Cmpt __restrict__ *srcIter, *destIter;
|
||||
|
||||
// Lists used for bookkeeping on the pivoting
|
||||
List<label> indexCol(length), indexRow(length), iPivot(length);
|
||||
|
||||
iPivot=0;
|
||||
|
||||
// Main loop over columns to be reduced
|
||||
for (int i=0; i<length; i++)
|
||||
{
|
||||
largestCoeff = pTraits<Cmpt>::zero;
|
||||
|
||||
//Search for pivot element
|
||||
int curRowOffset = 0;
|
||||
for (int j=0; j<length; j++)
|
||||
{
|
||||
if (iPivot[j] != 1)
|
||||
{
|
||||
for (int k=0; k<length; k++)
|
||||
{
|
||||
if (iPivot[k] == 0)
|
||||
{
|
||||
if ((temp = Foam::mag(result[curRowOffset+k])) >= largestCoeff)
|
||||
{
|
||||
largestCoeff = temp;
|
||||
iRow = j;
|
||||
iCol = k;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
curRowOffset += length;
|
||||
}
|
||||
++(iPivot[iCol]);
|
||||
|
||||
// We now have the pivot element
|
||||
// Interchange rows if needed
|
||||
if (iRow != iCol)
|
||||
{
|
||||
srcIter = &result(iRow,0);
|
||||
destIter = &result(iCol,0);
|
||||
|
||||
for (int j=0; j<length; j++)
|
||||
{
|
||||
Swap((*srcIter), (*destIter));
|
||||
srcIter++;
|
||||
destIter++;
|
||||
}
|
||||
}
|
||||
indexRow[i] = iRow;
|
||||
indexCol[i] = iCol;
|
||||
|
||||
//Check for singularity
|
||||
srcIter = &result(iCol, iCol); //Dummy pointer to reduce indexing
|
||||
if ((*srcIter) == Cmpt(0.0))
|
||||
{
|
||||
FatalErrorIn("inline TensorN<Cmpt, length> inv(const TensorN<Cmpt, length>& t)")
|
||||
<< "Singular tensor" << length << Foam::abort(FatalError);
|
||||
}
|
||||
|
||||
// Divide the pivot row by pivot element
|
||||
temp = pTraits<Cmpt>::one/(*srcIter);
|
||||
(*srcIter) = pTraits<Cmpt>::one;
|
||||
|
||||
srcIter = &result(iCol,0);
|
||||
for (int j=0; j<length; j++)
|
||||
{
|
||||
(*srcIter) *= temp;
|
||||
srcIter++;
|
||||
}
|
||||
|
||||
// Reduce the rows, excluding the pivot row
|
||||
for (int j=0; j<length; j++)
|
||||
{
|
||||
if (j != iCol)
|
||||
{
|
||||
destIter = &result(j,0);
|
||||
srcIter = &result(iCol,0);
|
||||
|
||||
temp=destIter[iCol];
|
||||
destIter[iCol] = pTraits<Cmpt>::zero;
|
||||
|
||||
for (int k=0; k<length; k++)
|
||||
{
|
||||
(*destIter) -= (*srcIter)*temp;
|
||||
srcIter++;
|
||||
destIter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Unscamble the solution
|
||||
for (int i=length-1; i>=0; i--)
|
||||
{
|
||||
if (indexRow[i] != indexCol[i])
|
||||
{
|
||||
srcIter = &result[indexRow[i]];
|
||||
destIter = &result[indexCol[i]];
|
||||
for (int j=0; j<length; j++)
|
||||
{
|
||||
Swap((*srcIter), (*destIter));
|
||||
srcIter += length;
|
||||
destIter += length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return tensor diagonal
|
||||
template <class Cmpt, int length>
|
||||
inline DiagTensorN<Cmpt, length> diag(const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
return t.diag();
|
||||
}
|
||||
|
||||
//- Return tensor diagonal
|
||||
template <class Cmpt, int length>
|
||||
inline TensorN<Cmpt, length> negSumDiag(const TensorN<Cmpt, length>& t)
|
||||
{
|
||||
return t.negSumDiag();
|
||||
}
|
||||
|
||||
//- Return the component sum
|
||||
// template <class Cmpt, int length>
|
||||
// inline Cmpt sum(const TensorN<Cmpt, length>& t)
|
||||
// {
|
||||
// Cmpt result=Cmpt::zero;
|
||||
// for(int i=0; i<TensorN<Cmpt, length>::nComponents; i++)
|
||||
// {
|
||||
// result += t[i];
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<TensorN<Cmpt, length>, Cmpt>
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<Cmpt, TensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<DiagTensorN<Cmpt, length>, TensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<TensorN<Cmpt, length>, DiagTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<SphericalTensorN<Cmpt, length>, TensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<TensorN<Cmpt, length>, SphericalTensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<VectorN<Cmpt, length>, TensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<TensorN<Cmpt, length>, VectorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class innerProduct<TensorN<Cmpt, length>, TensorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
118
src/VectorN/OpenFOAM/primitives/VectorN.H
Normal file
118
src/VectorN/OpenFOAM/primitives/VectorN.H
Normal file
|
@ -0,0 +1,118 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
VectorN
|
||||
|
||||
Description
|
||||
Templated 2D Vector derived from VectorSpace adding construction from
|
||||
2 components, element access using x() and y() member functions and
|
||||
the inner-product (dot-product).
|
||||
|
||||
SourceFiles
|
||||
VectorNI.H
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef VectorN_H
|
||||
#define VectorN_H
|
||||
|
||||
#include "VectorSpace.H"
|
||||
#include "tensor.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class VectorN Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template <class Cmpt, int length>
|
||||
class VectorN
|
||||
:
|
||||
public VectorSpace<VectorN<Cmpt, length>, Cmpt, length>
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
// Member constants
|
||||
|
||||
enum
|
||||
{
|
||||
rank = 1 // Rank of VectorN is 1
|
||||
};
|
||||
|
||||
|
||||
// Static data members
|
||||
|
||||
static const char* const typeName;
|
||||
static const VectorN zero;
|
||||
static const VectorN one;
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct null
|
||||
inline VectorN();
|
||||
|
||||
//- Construct given VectorSpace
|
||||
inline VectorN(const VectorSpace<VectorN<Cmpt, length>, Cmpt, length>&);
|
||||
|
||||
//- Construct given component value. Special use only!
|
||||
explicit inline VectorN(const Cmpt& vx);
|
||||
|
||||
//- Construct from Istream
|
||||
inline VectorN(Istream&);
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return ith component
|
||||
inline const Cmpt& operator()(const direction i) const;
|
||||
|
||||
//- Return access to ith component
|
||||
inline Cmpt& operator()(const direction i);
|
||||
|
||||
//- Componentwise multiply
|
||||
inline VectorN<Cmpt, length> cmptMultiply(const VectorN<Cmpt, length>&);
|
||||
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Include inline implementations
|
||||
#include "VectorNI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
204
src/VectorN/OpenFOAM/primitives/VectorNI.H
Normal file
204
src/VectorN/OpenFOAM/primitives/VectorNI.H
Normal file
|
@ -0,0 +1,204 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class TensorN;
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const char* const VectorN<Cmpt, length>::typeName =
|
||||
("vector" + name(length)).c_str();
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const VectorN<Cmpt, length> VectorN<Cmpt, length>::zero(0);
|
||||
|
||||
template <class Cmpt, int length>
|
||||
const VectorN<Cmpt, length> VectorN<Cmpt, length>::one(1);
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
// Construct null
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length>::VectorN()
|
||||
{}
|
||||
|
||||
|
||||
// Construct given VectorSpace
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length>::VectorN
|
||||
(
|
||||
const VectorSpace<VectorN<Cmpt, length>, Cmpt, length>& vs
|
||||
)
|
||||
:
|
||||
VectorSpace<VectorN<Cmpt, length>, Cmpt, length>(vs)
|
||||
{}
|
||||
|
||||
|
||||
// Construct given Cmpts
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length>::VectorN(const Cmpt& vx)
|
||||
{
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::eqOpS(*this, vx, eqOp<Cmpt>());
|
||||
}
|
||||
|
||||
|
||||
// Construct from Istream
|
||||
template <class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length>::VectorN(Istream& is)
|
||||
:
|
||||
VectorSpace<VectorN<Cmpt, length>, Cmpt, length>(is)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||
|
||||
template <class Cmpt, int length>
|
||||
inline const Cmpt& VectorN<Cmpt, length>::operator()(const direction i) const
|
||||
{
|
||||
return this->operator[](i);
|
||||
}
|
||||
|
||||
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt& VectorN<Cmpt, length>::operator()(const direction i)
|
||||
{
|
||||
return this->operator[](i);
|
||||
}
|
||||
|
||||
|
||||
//- Multiply components of VectorN by VectorN
|
||||
template<class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length> VectorN<Cmpt, length>::cmptMultiply(const VectorN<Cmpt, length>& v)
|
||||
{
|
||||
VectorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::op(res, *this, v, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Transform the spherical tensor
|
||||
//- The components are assumed to be individual scalars
|
||||
//- i.e. transform has no effect
|
||||
template<class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length> transform
|
||||
(
|
||||
const tensor& tt,
|
||||
const VectorN<Cmpt, length>& v
|
||||
)
|
||||
{
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<Cmpt, VectorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<VectorN<Cmpt, length>, Cmpt>
|
||||
{
|
||||
public:
|
||||
|
||||
typedef VectorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
template<class Cmpt, int length>
|
||||
class outerProduct<VectorN<Cmpt, length>, VectorN<Cmpt, length> >
|
||||
{
|
||||
public:
|
||||
|
||||
typedef TensorN<Cmpt, length> type;
|
||||
};
|
||||
|
||||
|
||||
//- Inner-product between a vector and a vector
|
||||
template <class Cmpt, int length>
|
||||
inline Cmpt operator&
|
||||
(
|
||||
const VectorN<Cmpt, length>& v1,
|
||||
const VectorN<Cmpt, length>& v2
|
||||
)
|
||||
{
|
||||
Cmpt res = pTraits<Cmpt>::zero;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::SopEqOpVV
|
||||
(res, v1, v2, plusEqOp<Cmpt>(), multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Componentwise division of scalar by VectorN
|
||||
template<class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length>
|
||||
operator/(const scalar s, const VectorN<Cmpt, length>& v)
|
||||
{
|
||||
VectorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::opSV(res, s, v, divideOp3<Cmpt, scalar, Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//- Multiply components of VectorN by VectorN
|
||||
template<class Cmpt, int length>
|
||||
inline VectorN<Cmpt, length> cmptMultiply(const VectorN<Cmpt, length>& v1, const VectorN<Cmpt, length>& v2)
|
||||
{
|
||||
VectorN<Cmpt, length> res;
|
||||
VectorSpaceOps<VectorN<Cmpt, length>::nComponents,0>::op(res, v1, v2, multiplyOp<Cmpt>());
|
||||
return res;
|
||||
}
|
||||
|
||||
//- Return the component sum
|
||||
// template <class Cmpt, int length>
|
||||
// inline Cmpt sum(const VectorN<Cmpt, length>& v)
|
||||
// {
|
||||
// Cmpt result = pTraits<Cmpt>::zero;
|
||||
// for(register label i=0; i<VectorN<Cmpt, length>::nComponents; i++)
|
||||
// {
|
||||
// result += v[i];
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
66
src/VectorN/OpenFOAM/primitives/vector2/diagTensor2.H
Normal file
66
src/VectorN/OpenFOAM/primitives/vector2/diagTensor2.H
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
diagTensor2
|
||||
|
||||
Description
|
||||
DiagTensorN of 2 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef diagTensor2_H
|
||||
#define diagTensor2_H
|
||||
|
||||
#include "DiagTensorN.H"
|
||||
#include "vector2.H"
|
||||
#include "sphericalTensor2.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef DiagTensorN<scalar, 2> diagTensor2;
|
||||
|
||||
//- Specify data associated with diagTensor2 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<diagTensor2>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// Include inline implementations
|
||||
#include "diagTensor2I.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
151
src/VectorN/OpenFOAM/primitives/vector2/diagTensor2I.H
Normal file
151
src/VectorN/OpenFOAM/primitives/vector2/diagTensor2I.H
Normal file
|
@ -0,0 +1,151 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
diagTensor2
|
||||
|
||||
Description
|
||||
DiagTensorN of 2 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
//- Assign to a SphericalTensorN
|
||||
template<>
|
||||
inline void diagTensor2::operator=(const sphericalTensor2& st)
|
||||
{
|
||||
this->v_[0] = st[0];
|
||||
this->v_[1] = st[0];
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
//- Inner-product between two diagonal tensors
|
||||
inline diagTensor2
|
||||
operator&(const diagTensor2& dt1, const diagTensor2& dt2)
|
||||
{
|
||||
diagTensor2 result;
|
||||
|
||||
result[0] = dt1[0]*dt2[0];
|
||||
result[1] = dt1[1]*dt2[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a spherical tensor and a diagonal tensor
|
||||
inline diagTensor2
|
||||
operator&(const sphericalTensor2& st1, const diagTensor2& dt2)
|
||||
{
|
||||
diagTensor2 result;
|
||||
|
||||
result[0] = st1[0]*dt2[0];
|
||||
result[1] = st1[0]*dt2[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//- Inner-product between a diagonal tensor and a spherical tensor
|
||||
inline diagTensor2
|
||||
operator&(const diagTensor2& dt1, const sphericalTensor2& st2)
|
||||
{
|
||||
diagTensor2 result;
|
||||
|
||||
result[0] = dt1[0]*st2[0];
|
||||
result[1] = dt1[1]*st2[0];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a diagonal tensor and a vector
|
||||
inline vector2
|
||||
operator&(const diagTensor2& dt, const vector2& v)
|
||||
{
|
||||
vector2 result;
|
||||
|
||||
result[0] = dt[0]*v[0];
|
||||
result[1] = dt[1]*v[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a vector and a diagonal tensor
|
||||
inline vector2
|
||||
operator&(const vector2& v, const diagTensor2& dt)
|
||||
{
|
||||
vector2 result;
|
||||
|
||||
result[0] = v[0]*dt[0];
|
||||
result[1] = v[1]*dt[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Division of a scalar by a diagTensor2
|
||||
inline diagTensor2 operator/(const scalar s, const diagTensor2& dt)
|
||||
{
|
||||
diagTensor2 result;
|
||||
|
||||
result[0] = s/dt[0];
|
||||
result[1] = s/dt[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the inverse of a diagTensor2
|
||||
inline diagTensor2 inv(const diagTensor2& dt)
|
||||
{
|
||||
diagTensor2 result;
|
||||
|
||||
result[0] = 1.0/dt[0];
|
||||
result[1] = 1.0/dt[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the component sum
|
||||
inline scalar sum(const diagTensor2& dt)
|
||||
{
|
||||
return dt[0] + dt[1];
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
65
src/VectorN/OpenFOAM/primitives/vector2/sphericalTensor2.H
Normal file
65
src/VectorN/OpenFOAM/primitives/vector2/sphericalTensor2.H
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
sphericalTensor2
|
||||
|
||||
Description
|
||||
SphericalTensorN of 2 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef sphericalTensor2_H
|
||||
#define sphericalTensor2_H
|
||||
|
||||
#include "SphericalTensorN.H"
|
||||
#include "vector2.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef SphericalTensorN<scalar, 2> sphericalTensor2;
|
||||
|
||||
//- Specify data associated with sphericalTensor2 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<sphericalTensor2>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// Include inline implementations
|
||||
#include "sphericalTensor2I.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
88
src/VectorN/OpenFOAM/primitives/vector2/sphericalTensor2I.H
Normal file
88
src/VectorN/OpenFOAM/primitives/vector2/sphericalTensor2I.H
Normal file
|
@ -0,0 +1,88 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
sphericalTensor2
|
||||
|
||||
Description
|
||||
SphericalTensorN of 2 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
//- Inner-product between two spherical tensors
|
||||
inline sphericalTensor2
|
||||
operator&(const sphericalTensor2& st1, const sphericalTensor2& st2)
|
||||
{
|
||||
return sphericalTensor2(st1[0]*st2[0]);
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a spherical tensor and a vector
|
||||
inline vector2
|
||||
operator&(const sphericalTensor2& st, const vector2& v)
|
||||
{
|
||||
vector2 result;
|
||||
|
||||
result[0] = st[0]*v[0];
|
||||
result[1] = st[0]*v[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a vector and a spherical tensor
|
||||
inline vector2
|
||||
operator&(const vector2& v, const sphericalTensor2& st)
|
||||
{
|
||||
vector2 result;
|
||||
|
||||
result[0] = v[0]*st[0];
|
||||
result[1] = v[1]*st[0];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the inverse of a tensor given the determinant
|
||||
inline sphericalTensor2 inv(const sphericalTensor2& st)
|
||||
{
|
||||
return sphericalTensor2(1/st[0]);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
67
src/VectorN/OpenFOAM/primitives/vector2/tensor2.H
Normal file
67
src/VectorN/OpenFOAM/primitives/vector2/tensor2.H
Normal file
|
@ -0,0 +1,67 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
tensor2
|
||||
|
||||
Description
|
||||
TensorN of 2 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef tensor2_H
|
||||
#define tensor2_H
|
||||
|
||||
#include "TensorN.H"
|
||||
#include "vector2.H"
|
||||
#include "sphericalTensor2.H"
|
||||
#include "diagTensor2.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef TensorN<scalar, 2> tensor2;
|
||||
|
||||
//- Specify data associated with tensor2 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<tensor2>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// Include inline implementations
|
||||
#include "tensor2I.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
221
src/VectorN/OpenFOAM/primitives/vector2/tensor2I.H
Normal file
221
src/VectorN/OpenFOAM/primitives/vector2/tensor2I.H
Normal file
|
@ -0,0 +1,221 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
tensor2
|
||||
|
||||
Description
|
||||
TensorN of 2 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
//- Return tensor transpose
|
||||
template<>
|
||||
inline tensor2 tensor2::T() const
|
||||
{
|
||||
tensor2 transpose;
|
||||
|
||||
transpose[0] = this->operator[](0);
|
||||
transpose[1] = this->operator[](2);
|
||||
transpose[2] = this->operator[](1);
|
||||
transpose[3] = this->operator[](3);
|
||||
|
||||
return transpose;
|
||||
}
|
||||
|
||||
|
||||
//- Assign to a sphericalTensor2
|
||||
template<>
|
||||
inline void tensor2::operator=(const sphericalTensor2& st)
|
||||
{
|
||||
this->v_[0] = st[0];
|
||||
this->v_[1] = 0.0;
|
||||
this->v_[2] = 0.0;
|
||||
this->v_[3] = st[0];
|
||||
}
|
||||
|
||||
|
||||
//- Assign to a diagTensor2
|
||||
template<>
|
||||
inline void tensor2::operator=(const diagTensor2& dt)
|
||||
{
|
||||
this->v_[0] = dt[0];
|
||||
this->v_[1] = 0.0;
|
||||
this->v_[2] = 0.0;
|
||||
this->v_[3] = dt[1];
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * //
|
||||
|
||||
//- Inner-product between two tensors
|
||||
inline tensor2
|
||||
operator&(const tensor2& t1, const tensor2& t2)
|
||||
{
|
||||
tensor2 result;
|
||||
|
||||
result[0] = t1[0]*t2[0] + t1[1]*t2[2];
|
||||
result[1] = t1[0]*t2[1] + t1[1]*t2[3];
|
||||
result[2] = t1[2]*t2[0] + t1[3]*t2[2];
|
||||
result[3] = t1[2]*t2[1] + t1[3]*t2[3];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a diagonal tensors and a tensor
|
||||
inline tensor2
|
||||
operator&(const diagTensor2& dt1, const tensor2& t2)
|
||||
{
|
||||
tensor2 result;
|
||||
|
||||
result[0] = dt1[0]*t2[0];
|
||||
result[1] = dt1[0]*t2[1];
|
||||
result[2] = dt1[1]*t2[2];
|
||||
result[3] = dt1[1]*t2[3];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//- Inner-product between a tensor and diagonal tensor
|
||||
inline tensor2
|
||||
operator&(const tensor2& t1, const diagTensor2& dt2)
|
||||
{
|
||||
tensor2 result;
|
||||
|
||||
result[0] = t1[0]*dt2[0];
|
||||
result[1] = t1[1]*dt2[1];
|
||||
result[2] = t1[2]*dt2[0];
|
||||
result[3] = t1[3]*dt2[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a spherical tensor and a tensor
|
||||
inline tensor2
|
||||
operator&(const sphericalTensor2& st1, const tensor2& t2)
|
||||
{
|
||||
tensor2 result;
|
||||
|
||||
result[0] = st1[0]*t2[0];
|
||||
result[1] = st1[0]*t2[1];
|
||||
result[2] = st1[0]*t2[2];
|
||||
result[3] = st1[0]*t2[3];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//- Inner-product between a tensor and spherical tensor
|
||||
inline tensor2
|
||||
operator&(const tensor2& t1, const sphericalTensor2& st2)
|
||||
{
|
||||
tensor2 result;
|
||||
|
||||
result[0] = t1[0]*st2[0];
|
||||
result[1] = t1[1]*st2[0];
|
||||
result[2] = t1[2]*st2[0];
|
||||
result[3] = t1[3]*st2[0];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a tensor and a vector
|
||||
inline vector2
|
||||
operator&(const tensor2& t, const vector2& v)
|
||||
{
|
||||
vector2 result;
|
||||
|
||||
result[0] = t[0]*v[0] + t[1]*v[1];
|
||||
result[1] = t[2]*v[0] + t[3]*v[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Inner-product between a vector and a tensor
|
||||
inline vector2
|
||||
operator&(const vector2& v, const tensor2& t)
|
||||
{
|
||||
vector2 result;
|
||||
|
||||
result[0] = v[0]*t[0] + v[1]*t[2];
|
||||
result[1] = v[0]*t[1] + v[1]*t[3];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Outer-product between two vectors
|
||||
inline tensor2
|
||||
operator*(const vector2& v1, const vector2& v2)
|
||||
{
|
||||
tensor2 result;
|
||||
|
||||
result[0] = v1[0]*v2[0];
|
||||
result[1] = v1[0]*v2[1];
|
||||
result[2] = v1[1]*v2[0];
|
||||
result[3] = v1[1]*v2[1];
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//- Return the determinant of a tensor
|
||||
inline scalar det(const tensor2& t)
|
||||
{
|
||||
return
|
||||
(
|
||||
t[0]*t[3]-t[1]*t[2]
|
||||
);
|
||||
}
|
||||
|
||||
//- Return the inverse of a tensor given the determinant
|
||||
inline tensor2 inv(const tensor2& t)
|
||||
{
|
||||
tensor2 cofactor;
|
||||
|
||||
cofactor[0] = t[3];
|
||||
cofactor[1] = -t[1];
|
||||
cofactor[2] = -t[2];
|
||||
cofactor[3] = t[0];
|
||||
|
||||
return cofactor/det(t);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
66
src/VectorN/OpenFOAM/primitives/vector2/vector2.H
Normal file
66
src/VectorN/OpenFOAM/primitives/vector2/vector2.H
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
Vector2
|
||||
|
||||
Description
|
||||
Vector2 obtained from generic VectorN
|
||||
|
||||
SourceFiles
|
||||
Vector2.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef Vector2_H
|
||||
#define Vector2_H
|
||||
|
||||
#include "scalar.H"
|
||||
#include "VectorN.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef VectorN<scalar, 2> vector2;
|
||||
|
||||
|
||||
//- Specify data associated with vector2 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<vector2>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
63
src/VectorN/OpenFOAM/primitives/vector4/diagTensor4.H
Normal file
63
src/VectorN/OpenFOAM/primitives/vector4/diagTensor4.H
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
diagTensor4
|
||||
|
||||
Description
|
||||
DiagTensorN of 4 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef diagTensor4_H
|
||||
#define diagTensor4_H
|
||||
|
||||
#include "DiagTensorN.H"
|
||||
#include "vector4.H"
|
||||
#include "sphericalTensor4.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef DiagTensorN<scalar, 4> diagTensor4;
|
||||
|
||||
//- Specify data associated with diagTensor4 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<diagTensor4>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
62
src/VectorN/OpenFOAM/primitives/vector4/sphericalTensor4.H
Normal file
62
src/VectorN/OpenFOAM/primitives/vector4/sphericalTensor4.H
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
sphericalTensor4
|
||||
|
||||
Description
|
||||
SphericalTensorN of 4 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef sphericalTensor4_H
|
||||
#define sphericalTensor4_H
|
||||
|
||||
#include "SphericalTensorN.H"
|
||||
#include "vector4.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef SphericalTensorN<scalar, 4> sphericalTensor4;
|
||||
|
||||
//- Specify data associated with sphericalTensor4 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<sphericalTensor4>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
67
src/VectorN/OpenFOAM/primitives/vector4/tensor4.H
Normal file
67
src/VectorN/OpenFOAM/primitives/vector4/tensor4.H
Normal file
|
@ -0,0 +1,67 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
tensor4
|
||||
|
||||
Description
|
||||
TensorN of 4 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef tensor4_H
|
||||
#define tensor4_H
|
||||
|
||||
#include "TensorN.H"
|
||||
#include "vector4.H"
|
||||
#include "sphericalTensor4.H"
|
||||
#include "diagTensor4.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef TensorN<scalar, 4> tensor4;
|
||||
|
||||
//- Specify data associated with tensor4 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<tensor4>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// Include inline implementations
|
||||
#include "tensor4I.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
103
src/VectorN/OpenFOAM/primitives/vector4/tensor4I.H
Normal file
103
src/VectorN/OpenFOAM/primitives/vector4/tensor4I.H
Normal file
|
@ -0,0 +1,103 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
tensor4
|
||||
|
||||
Description
|
||||
TensorN of 4 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
//- Return the determinant of a tensor
|
||||
inline scalar det(const tensor4& t)
|
||||
{
|
||||
return
|
||||
(
|
||||
t[3]*t[6]*t[9]*t[12] - t[2]*t[7]*t[9]*t[12] - t[3]*t[5]*t[10]*t[12] + t[1]*t[7]*t[10]*t[12] +
|
||||
t[2]*t[5]*t[11]*t[12] - t[1]*t[6]*t[11]*t[12] - t[3]*t[6]*t[8]*t[13] + t[2]*t[7]*t[8]*t[13] +
|
||||
t[3]*t[4]*t[10]*t[13] - t[0]*t[7]*t[10]*t[13] - t[2]*t[4]*t[11]*t[13] + t[0]*t[6]*t[11]*t[13] +
|
||||
t[3]*t[5]*t[8]*t[14] - t[1]*t[7]*t[8]*t[14] - t[3]*t[4]*t[9]*t[14] + t[0]*t[7]*t[9]*t[14] +
|
||||
t[1]*t[4]*t[11]*t[14] - t[0]*t[5]*t[11]*t[14] - t[2]*t[5]*t[8]*t[15] + t[1]*t[6]*t[8]*t[15] +
|
||||
t[2]*t[4]*t[9]*t[15] - t[0]*t[6]*t[9]*t[15] - t[1]*t[4]*t[10]*t[15] + t[0]*t[5]*t[10]*t[15]
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//- Return the inverse of a tensor given the determinant
|
||||
inline tensor4 inv(const tensor4& t)
|
||||
{
|
||||
tensor4 cofactor;
|
||||
|
||||
cofactor[0] = t[6]*t[11]*t[13] - t[7]*t[10]*t[13] + t[7]*t[9]*t[14]
|
||||
- t[5]*t[11]*t[14] - t[6]*t[9]*t[15] + t[5]*t[10]*t[15];
|
||||
cofactor[1] = t[3]*t[10]*t[13] - t[2]*t[11]*t[13] - t[3]*t[9]*t[14]
|
||||
+ t[1]*t[11]*t[14] + t[2]*t[9]*t[15] - t[1]*t[10]*t[15];
|
||||
cofactor[2] = t[2]*t[7]*t[13] - t[3]*t[6]*t[13] + t[3]*t[5]*t[14]
|
||||
- t[1]*t[7]*t[14] - t[2]*t[5]*t[15] + t[1]*t[6]*t[15];
|
||||
cofactor[3] = t[3]*t[6]*t[9] - t[2]*t[7]*t[9] - t[3]*t[5]*t[10]
|
||||
+ t[1]*t[7]*t[10] + t[2]*t[5]*t[11] - t[1]*t[6]*t[11];
|
||||
cofactor[4] = t[7]*t[10]*t[12] - t[6]*t[11]*t[12] - t[7]*t[8]*t[14]
|
||||
+ t[4]*t[11]*t[14] + t[6]*t[8]*t[15] - t[4]*t[10]*t[15];
|
||||
cofactor[5] = t[2]*t[11]*t[12] - t[3]*t[10]*t[12] + t[3]*t[8]*t[14]
|
||||
- t[0]*t[11]*t[14] - t[2]*t[8]*t[15] + t[0]*t[10]*t[15];
|
||||
cofactor[6] = t[3]*t[6]*t[12] - t[2]*t[7]*t[12] - t[3]*t[4]*t[14]
|
||||
+ t[0]*t[7]*t[14] + t[2]*t[4]*t[15] - t[0]*t[6]*t[15];
|
||||
cofactor[7] = t[2]*t[7]*t[8] - t[3]*t[6]*t[8] + t[3]*t[4]*t[10]
|
||||
- t[0]*t[7]*t[10] - t[2]*t[4]*t[11] + t[0]*t[6]*t[11];
|
||||
cofactor[8] = t[5]*t[11]*t[12] - t[7]*t[9]*t[12] + t[7]*t[8]*t[13]
|
||||
- t[4]*t[11]*t[13] - t[5]*t[8]*t[15] + t[4]*t[9]*t[15];
|
||||
cofactor[9] = t[3]*t[9]*t[12] - t[1]*t[11]*t[12] - t[3]*t[8]*t[13]
|
||||
+ t[0]*t[11]*t[13] + t[1]*t[8]*t[15] - t[0]*t[9]*t[15];
|
||||
cofactor[10] = t[1]*t[7]*t[12] - t[3]*t[5]*t[12] + t[3]*t[4]*t[13]
|
||||
- t[0]*t[7]*t[13] - t[1]*t[4]*t[15] + t[0]*t[5]*t[15];
|
||||
cofactor[11] = t[3]*t[5]*t[8] - t[1]*t[7]*t[8] - t[3]*t[4]*t[9]
|
||||
+ t[0]*t[7]*t[9] + t[1]*t[4]*t[11] - t[0]*t[5]*t[11];
|
||||
cofactor[12] = t[6]*t[9]*t[12] - t[5]*t[10]*t[12] - t[6]*t[8]*t[13]
|
||||
+ t[4]*t[10]*t[13] + t[5]*t[8]*t[14] - t[4]*t[9]*t[14];
|
||||
cofactor[13] = t[1]*t[10]*t[12] - t[2]*t[9]*t[12] + t[2]*t[8]*t[13]
|
||||
- t[0]*t[10]*t[13] - t[1]*t[8]*t[14] + t[0]*t[9]*t[14];
|
||||
cofactor[14] = t[2]*t[5]*t[12] - t[1]*t[6]*t[12] - t[2]*t[4]*t[13]
|
||||
+ t[0]*t[6]*t[13] + t[1]*t[4]*t[14] - t[0]*t[5]*t[14];
|
||||
cofactor[15] = t[1]*t[6]*t[8] - t[2]*t[5]*t[8] + t[2]*t[4]*t[9]
|
||||
- t[0]*t[6]*t[9] - t[1]*t[4]*t[10] + t[0]*t[5]*t[10];
|
||||
|
||||
return cofactor/det(t);
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
66
src/VectorN/OpenFOAM/primitives/vector4/vector4.H
Normal file
66
src/VectorN/OpenFOAM/primitives/vector4/vector4.H
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
Vector4
|
||||
|
||||
Description
|
||||
Vector4 obtained from generic VectorN
|
||||
|
||||
SourceFiles
|
||||
Vector4.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef Vector4_H
|
||||
#define Vector4_H
|
||||
|
||||
#include "scalar.H"
|
||||
#include "VectorN.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef VectorN<scalar, 4> vector4;
|
||||
|
||||
|
||||
//- Specify data associated with vector4 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<vector4>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
63
src/VectorN/OpenFOAM/primitives/vector6/diagTensor6.H
Normal file
63
src/VectorN/OpenFOAM/primitives/vector6/diagTensor6.H
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
diagTensor6
|
||||
|
||||
Description
|
||||
DiagTensorN of 6 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef diagTensor6_H
|
||||
#define diagTensor6_H
|
||||
|
||||
#include "DiagTensorN.H"
|
||||
#include "vector6.H"
|
||||
#include "sphericalTensor6.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef DiagTensorN<scalar, 6> diagTensor6;
|
||||
|
||||
//- Specify data associated with diagTensor6 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<diagTensor6>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
62
src/VectorN/OpenFOAM/primitives/vector6/sphericalTensor6.H
Normal file
62
src/VectorN/OpenFOAM/primitives/vector6/sphericalTensor6.H
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
sphericalTensor6
|
||||
|
||||
Description
|
||||
SphericalTensorN of 6 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef sphericalTensor6_H
|
||||
#define sphericalTensor6_H
|
||||
|
||||
#include "SphericalTensorN.H"
|
||||
#include "vector6.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef SphericalTensorN<scalar, 6> sphericalTensor6;
|
||||
|
||||
//- Specify data associated with sphericalTensor6 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<sphericalTensor6>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
64
src/VectorN/OpenFOAM/primitives/vector6/tensor6.H
Normal file
64
src/VectorN/OpenFOAM/primitives/vector6/tensor6.H
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
tensor6
|
||||
|
||||
Description
|
||||
TensorN of 6 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef tensor6_H
|
||||
#define tensor6_H
|
||||
|
||||
#include "TensorN.H"
|
||||
#include "vector6.H"
|
||||
#include "sphericalTensor6.H"
|
||||
#include "diagTensor6.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef TensorN<scalar, 6> tensor6;
|
||||
|
||||
//- Specify data associated with tensor6 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<tensor6>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
66
src/VectorN/OpenFOAM/primitives/vector6/vector6.H
Normal file
66
src/VectorN/OpenFOAM/primitives/vector6/vector6.H
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
Vector6
|
||||
|
||||
Description
|
||||
Vector6 obtained from generic VectorN
|
||||
|
||||
SourceFiles
|
||||
Vector6.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef Vector6_H
|
||||
#define Vector6_H
|
||||
|
||||
#include "scalar.H"
|
||||
#include "VectorN.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef VectorN<scalar, 6> vector6;
|
||||
|
||||
|
||||
//- Specify data associated with vector6 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<vector6>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
63
src/VectorN/OpenFOAM/primitives/vector8/diagTensor8.H
Normal file
63
src/VectorN/OpenFOAM/primitives/vector8/diagTensor8.H
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
diagTensor8
|
||||
|
||||
Description
|
||||
DiagTensorN of 8 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef diagTensor8_H
|
||||
#define diagTensor8_H
|
||||
|
||||
#include "DiagTensorN.H"
|
||||
#include "vector8.H"
|
||||
#include "sphericalTensor8.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef DiagTensorN<scalar, 8> diagTensor8;
|
||||
|
||||
//- Specify data associated with diagTensor8 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<diagTensor8>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
62
src/VectorN/OpenFOAM/primitives/vector8/sphericalTensor8.H
Normal file
62
src/VectorN/OpenFOAM/primitives/vector8/sphericalTensor8.H
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
sphericalTensor8
|
||||
|
||||
Description
|
||||
SphericalTensorN of 8 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef sphericalTensor8_H
|
||||
#define sphericalTensor8_H
|
||||
|
||||
#include "SphericalTensorN.H"
|
||||
#include "vector6.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef SphericalTensorN<scalar, 8> sphericalTensor8;
|
||||
|
||||
//- Specify data associated with sphericalTensor8 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<sphericalTensor8>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
64
src/VectorN/OpenFOAM/primitives/vector8/tensor8.H
Normal file
64
src/VectorN/OpenFOAM/primitives/vector8/tensor8.H
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
tensor8
|
||||
|
||||
Description
|
||||
TensorN of 8 scalars.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef tensor8_H
|
||||
#define tensor8_H
|
||||
|
||||
#include "TensorN.H"
|
||||
#include "vector8.H"
|
||||
#include "sphericalTensor8.H"
|
||||
#include "diagTensor8.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef TensorN<scalar, 8> tensor8;
|
||||
|
||||
//- Specify data associated with tensor8 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<tensor8>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
66
src/VectorN/OpenFOAM/primitives/vector8/vector8.H
Normal file
66
src/VectorN/OpenFOAM/primitives/vector8/vector8.H
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Type
|
||||
Vector8
|
||||
|
||||
Description
|
||||
Vector8 obtained from generic VectorN
|
||||
|
||||
SourceFiles
|
||||
Vector8.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef Vector8_H
|
||||
#define Vector8_H
|
||||
|
||||
#include "scalar.H"
|
||||
#include "VectorN.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef VectorN<scalar, 8> vector8;
|
||||
|
||||
|
||||
//- Specify data associated with vector4 type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<vector8>() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,56 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "calculatedFvPatchVectorNFields.H"
|
||||
#include "fvPatchVectorNFields.H"
|
||||
#include "volMesh.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define doMakePatchTypeField(type, Type, args...) \
|
||||
makePatchTypeField(fvPatch##Type##Field, calculatedFvPatch##Type##Field);
|
||||
|
||||
forAllVectorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllDiagTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
#undef doMakePatchTypeField
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,38 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef calculatedFvPatchVectorNFields_H
|
||||
#define calculatedFvPatchVectorNFields_H
|
||||
|
||||
#include "volVectorNFields.H"
|
||||
#include "fvPatchVectorNFields.H"
|
||||
|
||||
#include "calculatedFvPatchVectorNFieldsFwd.H"
|
||||
#include "calculatedFvPatchField.H"
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef calculatedFvPatchVectorNFieldsFwd_H
|
||||
#define calculatedFvPatchVectorNFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class Type> class calculatedFvPatchField;
|
||||
|
||||
#define makeTypedef(type, Type, args...) \
|
||||
typedef calculatedFvPatchField<type> calculatedFvPatch##Type##Field;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
forAllTensorNTypes(makeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(makeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,55 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "coupledFvPatchVectorNFields.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define doMakePatchTypeField(type, Type, args...) \
|
||||
makePatchTypeFieldTypeName(coupledFvPatch##Type##Field);
|
||||
|
||||
forAllVectorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllDiagTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
|
||||
#undef doMakePatchTypeField
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,39 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef coupledFvPatchVectorNFields_H
|
||||
#define coupledFvPatchVectorNFields_H
|
||||
|
||||
#include "volVectorNFields.H"
|
||||
#include "fvPatchVectorNFields.H"
|
||||
|
||||
#include "coupledFvPatchVectorNFieldsFwd.H"
|
||||
#include "coupledFvPatchField.H"
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef coupledFvPatchFieldsFwd_H
|
||||
#define coupledFvPatchFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class Type> class coupledFvPatchField;
|
||||
|
||||
#define makeTypedef(type, Type, args...) \
|
||||
typedef coupledFvPatchField<type> coupledFvPatch##Type##Field;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
forAllTensorNTypes(makeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(makeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,55 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "emptyFvPatchVectorNFields.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define doMakePatchTypeField(type, Type, args...) \
|
||||
makePatchTypeField(fvPatch##Type##Field, emptyFvPatch##Type##Field);
|
||||
|
||||
forAllVectorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllDiagTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
|
||||
#undef doMakePatchTypeField
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,40 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef emptyFvPatchVectorNFields_H
|
||||
#define emptyFvPatchVectorNFields_H
|
||||
|
||||
#include "volVectorNFields.H"
|
||||
#include "fvPatchVectorNFields.H"
|
||||
|
||||
#include "emptyFvPatchVectorNFieldsFwd.H"
|
||||
#include "emptyFvPatchField.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef emptyFvPatchVectorNFieldsFwd_H
|
||||
#define emptyFvPatchVectorNFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class Type> class emptyFvPatchField;
|
||||
|
||||
#define makeTypedef(type, Type, args...) \
|
||||
typedef emptyFvPatchField<type> emptyFvPatch##Type##Field;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
forAllTensorNTypes(makeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(makeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,55 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fixedValueFvPatchVectorNFields.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define doMakePatchTypeField(type, Type, args...) \
|
||||
makePatchTypeField(fvPatch##Type##Field, fixedValueFvPatch##Type##Field);
|
||||
|
||||
forAllVectorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllDiagTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
|
||||
#undef doMakePatchTypeField
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,40 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef fixedValueFvPatchVectorNFields_H
|
||||
#define fixedValueFvPatchVectorNFields_H
|
||||
|
||||
#include "volVectorNFields.H"
|
||||
#include "fvPatchVectorNFields.H"
|
||||
|
||||
#include "fixedValueFvPatchVectorNFieldsFwd.H"
|
||||
#include "fixedValueFvPatchField.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef fixedValueFvPatchVectorNFieldsFwd_H
|
||||
#define fixedValueFvPatchVectorNFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class Type> class fixedValueFvPatchField;
|
||||
|
||||
#define makeTypedef(type, Type, args...) \
|
||||
typedef fixedValueFvPatchField<type> fixedValueFvPatch##Type##Field;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
forAllTensorNTypes(makeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(makeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,67 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvPatchVectorNFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define makeFvPatchField(fvPatchTypeField) \
|
||||
\
|
||||
defineNamedTemplateTypeNameAndDebug(fvPatchTypeField, 0); \
|
||||
template<> \
|
||||
int fvPatchTypeField::disallowGenericFvPatchField \
|
||||
( \
|
||||
debug::debugSwitch("disallowGenericFvPatchField", 0) \
|
||||
); \
|
||||
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \
|
||||
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \
|
||||
defineTemplateRunTimeSelectionTable(fvPatchTypeField, dictionary);
|
||||
|
||||
|
||||
#define doMakeFvPatchField(type, Type, args...) \
|
||||
makeFvPatchField(fvPatch##Type##Field)
|
||||
|
||||
forAllVectorNTypes(doMakeFvPatchField)
|
||||
|
||||
forAllTensorNTypes(doMakeFvPatchField)
|
||||
|
||||
forAllDiagTensorNTypes(doMakeFvPatchField)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakeFvPatchField)
|
||||
|
||||
#undef doMakeFvPatchField
|
||||
#undef makeFvPatchField
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,38 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef fvPatchVectorNFields_H
|
||||
#define fvPatchVectorNFields_H
|
||||
|
||||
#include "fvPatchVectorNFieldsFwd.H"
|
||||
#include "fvPatchField.H"
|
||||
#include "fvPatchFieldsFwd.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,62 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef fvPatchVectorNFieldsFwd_H
|
||||
#define fvPatchVectorNFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class Type> class fvPatchField;
|
||||
|
||||
#define doMakeTypedef(type, Type, args...) \
|
||||
typedef fvPatchField<type > fvPatch##Type##Field;
|
||||
|
||||
forAllVectorNTypes(doMakeTypedef)
|
||||
|
||||
forAllTensorNTypes(doMakeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(doMakeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakeTypedef)
|
||||
|
||||
#undef doMakeTypedef
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,56 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "genericFvPatchVectorNFields.H"
|
||||
#include "fvPatchVectorNFields.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
#include "volVectorNFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
#define doMakePatchTypeField(type, Type, args...) \
|
||||
makePatchTypeFieldTypeName(genericFvPatch##Type##Field);
|
||||
|
||||
forAllVectorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllDiagTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakePatchTypeField)
|
||||
|
||||
#undef doMakePatchTypeField
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,61 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef genericFvPatchVectorNFields_H
|
||||
#define genericFvPatchVectorNFields_H
|
||||
|
||||
#include "genericFvPatchField.H"
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#define doMakeTypedef(type, Type, args...) \
|
||||
typedef genericFvPatchField<type > genericFvPatch##Type##Field;
|
||||
|
||||
forAllVectorNTypes(doMakeTypedef)
|
||||
|
||||
forAllTensorNTypes(doMakeTypedef)
|
||||
|
||||
forAllDiagTensorNTypes(doMakeTypedef)
|
||||
|
||||
forAllSphericalTensorNTypes(doMakeTypedef)
|
||||
|
||||
#undef doMakeTypedef
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,108 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "processorFvPatchVectorNFields.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
#define VectorNMatrixInterfaceFunc(Type) \
|
||||
template <> \
|
||||
void processorFvPatchField<Type>::initInterfaceMatrixUpdate \
|
||||
( \
|
||||
const Field<Type>& psiInternal, \
|
||||
Field<Type>&, \
|
||||
const BlockLduMatrix<Type>&, \
|
||||
const CoeffField<Type>&, \
|
||||
const Pstream::commsTypes commsType \
|
||||
) const \
|
||||
{ \
|
||||
procPatch_.compressedSend \
|
||||
( \
|
||||
commsType, \
|
||||
this->patch().patchInternalField(psiInternal)() \
|
||||
); \
|
||||
} \
|
||||
\
|
||||
template <> \
|
||||
void processorFvPatchField<Type>::updateInterfaceMatrix \
|
||||
( \
|
||||
const Field<Type>& psiInternal, \
|
||||
Field<Type>& result, \
|
||||
const BlockLduMatrix<Type>&, \
|
||||
const CoeffField<Type>& coeffs, \
|
||||
const Pstream::commsTypes commsType \
|
||||
) const \
|
||||
{ \
|
||||
Field<Type> pnf(this->size()); \
|
||||
\
|
||||
if (coeffs.activeType() == blockCoeffBase::SCALAR) \
|
||||
{ \
|
||||
pnf = coeffs.asScalar() * \
|
||||
procPatch_.compressedReceive<Type>(commsType, this->size())(); \
|
||||
} \
|
||||
else if (coeffs.activeType() == blockCoeffBase::LINEAR) \
|
||||
{ \
|
||||
pnf = cmptMultiply(coeffs.asLinear(), \
|
||||
procPatch_.compressedReceive<Type>(commsType, this->size())() \
|
||||
); \
|
||||
} \
|
||||
else if (coeffs.activeType() == blockCoeffBase::SQUARE) \
|
||||
{ \
|
||||
pnf = coeffs.asSquare() & \
|
||||
procPatch_.compressedReceive<Type>(commsType, this->size())(); \
|
||||
} \
|
||||
\
|
||||
const unallocLabelList& faceCells = this->patch().faceCells(); \
|
||||
\
|
||||
forAll(faceCells, facei) \
|
||||
{ \
|
||||
result[faceCells[facei]] -= pnf[facei]; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define doMakePatchTypeField(type, Type, args...) \
|
||||
VectorNMatrixInterfaceFunc(type) \
|
||||
\
|
||||
makePatchTypeField(fvPatch##Type##Field, processorFvPatch##Type##Field);
|
||||
|
||||
forAllVectorNTypes(doMakePatchTypeField)
|
||||
|
||||
#undef doMakePatchTypeField
|
||||
|
||||
#undef VectorNMatrixInterfaceFunc
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,40 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef processorFvPatchVectorNFields_H
|
||||
#define processorFvPatchVectorNFields_H
|
||||
|
||||
#include "volVectorNFields.H"
|
||||
#include "fvPatchVectorNFields.H"
|
||||
|
||||
#include "processorFvPatchVectorNFieldsFwd.H"
|
||||
#include "processorFvPatchField.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,56 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef processorFvPatchVectorNFieldsFwd_H
|
||||
#define processorFvPatchVectorNFieldsFwd_H
|
||||
|
||||
#include "VectorNFieldTypes.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class Type> class processorFvPatchField;
|
||||
|
||||
#define makeTypedef(type, Type, args...) \
|
||||
typedef processorFvPatchField<type> processorFvPatch##Type##Field;
|
||||
|
||||
forAllVectorNTypes(makeTypedef)
|
||||
|
||||
#undef makeTypedef
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
|
@ -0,0 +1,54 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright held by original author
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "transformFvPatchVectorNFields.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
#define makePatch(type, Type, args...) \
|
||||
defineNamedTemplateTypeNameAndDebug(transformFvPatch##Type##Field, 0);
|
||||
|
||||
forAllVectorNTypes(makePatch)
|
||||
|
||||
forAllTensorNTypes(makePatch)
|
||||
|
||||
forAllDiagTensorNTypes(makePatch)
|
||||
|
||||
forAllSphericalTensorNTypes(makePatch)
|
||||
|
||||
#undef makePatch
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue