Compare commits
17 Commits
master
...
maintenanc
Author | SHA1 | Date | |
---|---|---|---|
|
0a04de8661 | ||
|
5802d22470 | ||
|
1679c5f157 | ||
|
d5607b2f28 | ||
|
b0ed2a254b | ||
|
0085b60946 | ||
|
45e9db3489 | ||
|
68bed4f1dc | ||
|
fe97c8fee9 | ||
|
324ce9adec | ||
|
a8cba8ba8f | ||
|
58a5587ca8 | ||
|
6d045eabc1 | ||
|
d45b9b4e41 | ||
|
dae13bfae8 | ||
|
5894f2ed95 | ||
|
d0151570a1 |
@ -1,2 +1,2 @@
|
|||||||
api=2206
|
api=2206
|
||||||
patch=221104
|
patch=240625
|
||||||
|
@ -9,7 +9,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||||
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/regionFaModels\lnInclude
|
-I$(LIB_SRC)/regionFaModels/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
|
@ -7,7 +7,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||||
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/regionFaModels\lnInclude
|
-I$(LIB_SRC)/regionFaModels/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
|
@ -10,7 +10,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
|
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/regionFaModels\lnInclude
|
-I$(LIB_SRC)/regionFaModels/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
|
@ -7,7 +7,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
||||||
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||||
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/regionFaModels\lnInclude
|
-I$(LIB_SRC)/regionFaModels/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
|
@ -19,7 +19,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
||||||
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
|
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
|
||||||
-I$(LIB_SRC)/regionFaModels\lnInclude
|
-I$(LIB_SRC)/regionFaModels/lnInclude
|
||||||
|
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
|
@ -8,7 +8,7 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
|
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
|
||||||
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
|
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
|
||||||
-I$(LIB_SRC)/regionFaModels\lnInclude
|
-I$(LIB_SRC)/regionFaModels/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
|
@ -174,7 +174,7 @@ Foam::tokenList Foam::functionEntries::evalEntry::evaluate
|
|||||||
result.writeField(toks);
|
result.writeField(toks);
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::move(toks);
|
return tokenList(std::move(toks.tokens()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019-2021 OpenCFD Ltd.
|
Copyright (C) 2019-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -41,9 +41,11 @@ void Foam::expressions::exprDriver::fill_random
|
|||||||
{
|
{
|
||||||
if (seed <= 0)
|
if (seed <= 0)
|
||||||
{
|
{
|
||||||
if (timeStatePtr_)
|
const TimeState* ts = this->timeState();
|
||||||
|
|
||||||
|
if (ts)
|
||||||
{
|
{
|
||||||
seed = (timeStatePtr_->timeIndex() - seed);
|
seed = (ts->timeIndex() - seed);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -152,10 +152,11 @@ slicedBoundaryField
|
|||||||
new SlicedPatchField<Type>
|
new SlicedPatchField<Type>
|
||||||
(
|
(
|
||||||
mesh.boundary()[patchi],
|
mesh.boundary()[patchi],
|
||||||
DimensionedField<Type, GeoMesh>::null(),
|
DimensionedField<Type, GeoMesh>::null()
|
||||||
bField[patchi]
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
bf[patchi].UList<Type>::shallowCopy(bField[patchi]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +202,8 @@ inline Foam::Matrix<Form, Type>::Matrix
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
mRows_(Mb.m()),
|
mRows_(Mb.m()),
|
||||||
nCols_(Mb.n())
|
nCols_(Mb.n()),
|
||||||
|
v_(nullptr)
|
||||||
{
|
{
|
||||||
doAlloc();
|
doAlloc();
|
||||||
|
|
||||||
@ -224,7 +225,8 @@ inline Foam::Matrix<Form, Type>::Matrix
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
mRows_(Mb.m()),
|
mRows_(Mb.m()),
|
||||||
nCols_(Mb.n())
|
nCols_(Mb.n()),
|
||||||
|
v_(nullptr)
|
||||||
{
|
{
|
||||||
doAlloc();
|
doAlloc();
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2018-2022 OpenCFD Ltd.
|
Copyright (C) 2018-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -440,12 +440,12 @@ public:
|
|||||||
|
|
||||||
//- Collect indirect data in processor order on master
|
//- Collect indirect data in processor order on master
|
||||||
// Handles contiguous/non-contiguous data, skips empty fields.
|
// Handles contiguous/non-contiguous data, skips empty fields.
|
||||||
template<class Type, class Addr>
|
template<class ProcIDsContainer, class Type, class Addr>
|
||||||
static void gather
|
static void gather
|
||||||
(
|
(
|
||||||
const labelUList& offsets, //!< offsets (master only)
|
const labelUList& offsets, //!< offsets (master only)
|
||||||
const label comm, //!< communicator
|
const label comm, //!< communicator
|
||||||
const UList<int>& procIDs,
|
const ProcIDsContainer& procIDs,
|
||||||
const IndirectListBase<Type, Addr>& fld,
|
const IndirectListBase<Type, Addr>& fld,
|
||||||
List<Type>& allFld, //! output field (master only)
|
List<Type>& allFld, //! output field (master only)
|
||||||
const int tag = UPstream::msgType(),
|
const int tag = UPstream::msgType(),
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2013-2017 OpenFOAM Foundation
|
Copyright (C) 2013-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2019-2022 OpenCFD Ltd.
|
Copyright (C) 2019-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -248,12 +248,12 @@ void Foam::globalIndex::gather
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class Type, class Addr>
|
template<class ProcIDsContainer, class Type, class Addr>
|
||||||
void Foam::globalIndex::gather
|
void Foam::globalIndex::gather
|
||||||
(
|
(
|
||||||
const labelUList& off, // needed on master only
|
const labelUList& off, // needed on master only
|
||||||
const label comm,
|
const label comm,
|
||||||
const UList<int>& procIDs,
|
const ProcIDsContainer& procIDs,
|
||||||
const IndirectListBase<Type, Addr>& fld,
|
const IndirectListBase<Type, Addr>& fld,
|
||||||
List<Type>& allFld,
|
List<Type>& allFld,
|
||||||
const int tag,
|
const int tag,
|
||||||
@ -368,7 +368,7 @@ void Foam::globalIndex::gather
|
|||||||
(
|
(
|
||||||
offsets_, // needed on master only
|
offsets_, // needed on master only
|
||||||
comm,
|
comm,
|
||||||
UPstream::procID(comm),
|
UPstream::allProcs(comm), // All communicator ranks
|
||||||
sendData,
|
sendData,
|
||||||
allData,
|
allData,
|
||||||
tag,
|
tag,
|
||||||
@ -404,7 +404,7 @@ void Foam::globalIndex::gather
|
|||||||
(
|
(
|
||||||
offsets_, // needed on master only
|
offsets_, // needed on master only
|
||||||
comm,
|
comm,
|
||||||
UPstream::procID(comm),
|
UPstream::allProcs(comm), // All communicator ranks
|
||||||
sendData,
|
sendData,
|
||||||
allData,
|
allData,
|
||||||
tag,
|
tag,
|
||||||
@ -622,7 +622,7 @@ void Foam::globalIndex::mpiGather
|
|||||||
(
|
(
|
||||||
offsets_, // needed on master only
|
offsets_, // needed on master only
|
||||||
comm,
|
comm,
|
||||||
UPstream::procID(comm),
|
UPstream::allProcs(comm), // All communicator ranks
|
||||||
sendData,
|
sendData,
|
||||||
allData,
|
allData,
|
||||||
tag,
|
tag,
|
||||||
@ -967,7 +967,7 @@ void Foam::globalIndex::scatter
|
|||||||
(
|
(
|
||||||
offsets_, // needed on master only
|
offsets_, // needed on master only
|
||||||
comm,
|
comm,
|
||||||
UPstream::procID(comm),
|
UPstream::allProcs(comm), // All communicator ranks
|
||||||
allData,
|
allData,
|
||||||
localData,
|
localData,
|
||||||
tag,
|
tag,
|
||||||
|
@ -535,6 +535,10 @@ inline Foam::Tensor<Cmpt> Foam::Tensor<Cmpt>::T() const
|
|||||||
|
|
||||||
|
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
|
#endif
|
||||||
inline Foam::Tensor<Cmpt>
|
inline Foam::Tensor<Cmpt>
|
||||||
Foam::Tensor<Cmpt>::inner(const Tensor<Cmpt>& t2) const
|
Foam::Tensor<Cmpt>::inner(const Tensor<Cmpt>& t2) const
|
||||||
{
|
{
|
||||||
@ -558,6 +562,10 @@ Foam::Tensor<Cmpt>::inner(const Tensor<Cmpt>& t2) const
|
|||||||
|
|
||||||
|
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
|
#endif
|
||||||
inline Foam::Tensor<Cmpt>
|
inline Foam::Tensor<Cmpt>
|
||||||
Foam::Tensor<Cmpt>::schur(const Tensor<Cmpt>& t2) const
|
Foam::Tensor<Cmpt>::schur(const Tensor<Cmpt>& t2) const
|
||||||
{
|
{
|
||||||
@ -993,6 +1001,10 @@ operator&(const Tensor<Cmpt>& t1, const Tensor<Cmpt>& t2)
|
|||||||
|
|
||||||
//- Inner-product of a SphericalTensor and a Tensor
|
//- Inner-product of a SphericalTensor and a Tensor
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
|
#endif
|
||||||
inline Tensor<Cmpt>
|
inline Tensor<Cmpt>
|
||||||
operator&(const SphericalTensor<Cmpt>& st1, const Tensor<Cmpt>& t2)
|
operator&(const SphericalTensor<Cmpt>& st1, const Tensor<Cmpt>& t2)
|
||||||
{
|
{
|
||||||
@ -1007,6 +1019,10 @@ operator&(const SphericalTensor<Cmpt>& st1, const Tensor<Cmpt>& t2)
|
|||||||
|
|
||||||
//- Inner-product of a Tensor and a SphericalTensor
|
//- Inner-product of a Tensor and a SphericalTensor
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
|
#endif
|
||||||
inline Tensor<Cmpt>
|
inline Tensor<Cmpt>
|
||||||
operator&(const Tensor<Cmpt>& t1, const SphericalTensor<Cmpt>& st2)
|
operator&(const Tensor<Cmpt>& t1, const SphericalTensor<Cmpt>& st2)
|
||||||
{
|
{
|
||||||
@ -1021,6 +1037,10 @@ operator&(const Tensor<Cmpt>& t1, const SphericalTensor<Cmpt>& st2)
|
|||||||
|
|
||||||
//- Inner-product of a SymmTensor and a Tensor
|
//- Inner-product of a SymmTensor and a Tensor
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
|
#endif
|
||||||
inline Tensor<Cmpt>
|
inline Tensor<Cmpt>
|
||||||
operator&(const SymmTensor<Cmpt>& st1, const Tensor<Cmpt>& t2)
|
operator&(const SymmTensor<Cmpt>& st1, const Tensor<Cmpt>& t2)
|
||||||
{
|
{
|
||||||
@ -1043,6 +1063,10 @@ operator&(const SymmTensor<Cmpt>& st1, const Tensor<Cmpt>& t2)
|
|||||||
|
|
||||||
//- Inner-product of a Tensor and a SymmTensor
|
//- Inner-product of a Tensor and a SymmTensor
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
|
#endif
|
||||||
inline Tensor<Cmpt>
|
inline Tensor<Cmpt>
|
||||||
operator&(const Tensor<Cmpt>& t1, const SymmTensor<Cmpt>& st2)
|
operator&(const Tensor<Cmpt>& t1, const SymmTensor<Cmpt>& st2)
|
||||||
{
|
{
|
||||||
@ -1069,7 +1093,7 @@ template<class Cmpt>
|
|||||||
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
__attribute__((optimize("no-tree-vectorize")))
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
#endif
|
#endif
|
||||||
inline typename innerProduct<Tensor<Cmpt>, Vector<Cmpt>>::type
|
inline Vector<Cmpt>
|
||||||
operator&(const Tensor<Cmpt>& t, const Vector<Cmpt>& v)
|
operator&(const Tensor<Cmpt>& t, const Vector<Cmpt>& v)
|
||||||
{
|
{
|
||||||
return Vector<Cmpt>
|
return Vector<Cmpt>
|
||||||
@ -1083,7 +1107,11 @@ operator&(const Tensor<Cmpt>& t, const Vector<Cmpt>& v)
|
|||||||
|
|
||||||
//- Inner-product of a Vector and a Tensor
|
//- Inner-product of a Vector and a Tensor
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
inline typename innerProduct<Vector<Cmpt>, Tensor<Cmpt>>::type
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
// Workaround for gcc (11+) that fails to handle tensor dot vector
|
||||||
|
__attribute__((optimize("no-tree-vectorize")))
|
||||||
|
#endif
|
||||||
|
inline Vector<Cmpt>
|
||||||
operator&(const Vector<Cmpt>& v, const Tensor<Cmpt>& t)
|
operator&(const Vector<Cmpt>& v, const Tensor<Cmpt>& t)
|
||||||
{
|
{
|
||||||
return Vector<Cmpt>
|
return Vector<Cmpt>
|
||||||
|
@ -29,6 +29,7 @@ License
|
|||||||
#include "word.H"
|
#include "word.H"
|
||||||
#include "debug.H"
|
#include "debug.H"
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
|
#include <cstdint>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
@ -593,7 +593,17 @@ void Foam::UPstream::allocatePstreamCommunicator
|
|||||||
|
|
||||||
void Foam::UPstream::freePstreamCommunicator(const label communicator)
|
void Foam::UPstream::freePstreamCommunicator(const label communicator)
|
||||||
{
|
{
|
||||||
if (communicator != 0)
|
// Not touching the first communicator (WORLD)
|
||||||
|
// or anything out-of bounds.
|
||||||
|
//
|
||||||
|
// No UPstream communicator indices when MPI is initialized outside
|
||||||
|
// of OpenFOAM - thus needs a bounds check too!
|
||||||
|
|
||||||
|
if
|
||||||
|
(
|
||||||
|
communicator > 0
|
||||||
|
&& (communicator < PstreamGlobals::MPICommunicators_.size())
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (PstreamGlobals::MPICommunicators_[communicator] != MPI_COMM_NULL)
|
if (PstreamGlobals::MPICommunicators_[communicator] != MPI_COMM_NULL)
|
||||||
{
|
{
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2017-2022 OpenCFD Ltd.
|
Copyright (C) 2017-2024 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -122,7 +122,8 @@ std::string Foam::fileFormats::NASCore::nextNasField
|
|||||||
(
|
(
|
||||||
const std::string& str,
|
const std::string& str,
|
||||||
std::string::size_type& pos,
|
std::string::size_type& pos,
|
||||||
std::string::size_type len
|
const std::string::size_type width,
|
||||||
|
const bool free_format
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const auto beg = pos;
|
const auto beg = pos;
|
||||||
@ -130,15 +131,23 @@ std::string Foam::fileFormats::NASCore::nextNasField
|
|||||||
|
|
||||||
if (end == std::string::npos)
|
if (end == std::string::npos)
|
||||||
{
|
{
|
||||||
pos = beg + len; // Continue after field width
|
if (free_format)
|
||||||
|
{
|
||||||
|
// Nothing left
|
||||||
|
pos = str.size();
|
||||||
|
return str.substr(beg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fixed format - continue after field width
|
||||||
|
pos = beg + width;
|
||||||
|
return str.substr(beg, width);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
len = (end - beg); // Efffective width
|
// Free format - continue after comma
|
||||||
pos = end + 1; // Continue after comma
|
pos = end + 1;
|
||||||
|
return str.substr(beg, (end - beg));
|
||||||
}
|
}
|
||||||
|
|
||||||
return str.substr(beg, len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -235,8 +244,8 @@ void Foam::fileFormats::NASCore::writeCoord
|
|||||||
// 2 ID : point ID - requires starting index of 1
|
// 2 ID : point ID - requires starting index of 1
|
||||||
// 3 CP : coordinate system ID (blank)
|
// 3 CP : coordinate system ID (blank)
|
||||||
// 4 X1 : point x coordinate
|
// 4 X1 : point x coordinate
|
||||||
// 5 X2 : point x coordinate
|
// 5 X2 : point y coordinate
|
||||||
// 6 X3 : point x coordinate
|
// 6 X3 : point z coordinate
|
||||||
// 7 CD : coordinate system for displacements (blank)
|
// 7 CD : coordinate system for displacements (blank)
|
||||||
// 8 PS : single point constraints (blank)
|
// 8 PS : single point constraints (blank)
|
||||||
// 9 SEID : super-element ID
|
// 9 SEID : super-element ID
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2017-2022 OpenCFD Ltd.
|
Copyright (C) 2017-2024 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -48,7 +48,6 @@ SourceFiles
|
|||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
namespace fileFormats
|
namespace fileFormats
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -74,18 +73,18 @@ public:
|
|||||||
//- Output load format
|
//- Output load format
|
||||||
enum loadFormat
|
enum loadFormat
|
||||||
{
|
{
|
||||||
PLOAD2,
|
PLOAD2, //!< Face load (eg, pressure)
|
||||||
PLOAD4
|
PLOAD4 //!< Vertex load
|
||||||
};
|
};
|
||||||
|
|
||||||
//- Selection names for the NASTRAN file field formats
|
//- Selection names for the NASTRAN load formats
|
||||||
static const Enum<loadFormat> loadFormatNames;
|
static const Enum<loadFormat> loadFormatNames;
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Default construct
|
//- Default construct
|
||||||
NASCore() = default;
|
NASCore() noexcept = default;
|
||||||
|
|
||||||
|
|
||||||
// Public Static Member Functions
|
// Public Static Member Functions
|
||||||
@ -93,18 +92,20 @@ public:
|
|||||||
//- Extract numbers from things like "-2.358-8" (same as "-2.358e-8")
|
//- Extract numbers from things like "-2.358-8" (same as "-2.358e-8")
|
||||||
static scalar readNasScalar(const std::string& str);
|
static scalar readNasScalar(const std::string& str);
|
||||||
|
|
||||||
//- A string::substr() to handle fixed-format and free-format NASTRAN.
|
//- A std::string::substr() variant to handle fixed-format and
|
||||||
// Returns the substr to the next comma (if found) or the given length
|
//- free-format NASTRAN.
|
||||||
//
|
// Returns the substr until the next comma (if found)
|
||||||
// \param str The string to extract from
|
// or the given fixed width
|
||||||
// \param pos On input, the position of the first character of the
|
|
||||||
// substring. On output, advances to the next position to use.
|
|
||||||
// \param len The fixed-format length to use if a comma is not found.
|
|
||||||
static std::string nextNasField
|
static std::string nextNasField
|
||||||
(
|
(
|
||||||
|
//! The string to extract from
|
||||||
const std::string& str,
|
const std::string& str,
|
||||||
|
//! [in,out] The parse position within \p str
|
||||||
std::string::size_type& pos,
|
std::string::size_type& pos,
|
||||||
std::string::size_type len
|
//! The fixed-format width to use (if comma is not found)
|
||||||
|
const std::string::size_type width,
|
||||||
|
//! The input is known to be free-format
|
||||||
|
const bool free_format = false
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,7 +53,6 @@ $(basicFaPatchFields)/transform/transformFaPatchScalarField.C
|
|||||||
constraintFaPatchFields = $(faPatchFields)/constraint
|
constraintFaPatchFields = $(faPatchFields)/constraint
|
||||||
$(constraintFaPatchFields)/empty/emptyFaPatchFields.C
|
$(constraintFaPatchFields)/empty/emptyFaPatchFields.C
|
||||||
$(constraintFaPatchFields)/processor/processorFaPatchFields.C
|
$(constraintFaPatchFields)/processor/processorFaPatchFields.C
|
||||||
$(constraintFaPatchFields)/processor/processorFaPatchScalarField.C
|
|
||||||
$(constraintFaPatchFields)/wedge/wedgeFaPatchFields.C
|
$(constraintFaPatchFields)/wedge/wedgeFaPatchFields.C
|
||||||
$(constraintFaPatchFields)/wedge/wedgeFaPatchScalarField.C
|
$(constraintFaPatchFields)/wedge/wedgeFaPatchScalarField.C
|
||||||
$(constraintFaPatchFields)/cyclic/cyclicFaPatchFields.C
|
$(constraintFaPatchFields)/cyclic/cyclicFaPatchFields.C
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
Copyright (C) 2016-2017 Wikki Ltd
|
||||||
Copyright (C) 2018-2022 OpenCFD Ltd.
|
Copyright (C) 2018-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -185,12 +185,26 @@ Foam::faBoundaryMesh::faBoundaryMesh
|
|||||||
|
|
||||||
void Foam::faBoundaryMesh::calcGeometry()
|
void Foam::faBoundaryMesh::calcGeometry()
|
||||||
{
|
{
|
||||||
// processorFaPatch geometry triggers calculation of pointNormals.
|
// processor initGeometry send/recv the following:
|
||||||
|
// - edgeCentres() : faMesh::edgeCentres()
|
||||||
|
// - edgeLengths() : faMesh::Le()
|
||||||
|
// - edgeFaceCentres() : faMesh::areaCentres()
|
||||||
|
//
|
||||||
|
// faMesh::Le() has its own point-to-point communication (OK) but
|
||||||
|
// triggers either/or edgeAreaNormals(), pointAreaNormals()
|
||||||
|
// with their own communication that can block.
|
||||||
|
|
||||||
// This uses parallel comms and hence will not be trigggered
|
// This uses parallel comms and hence will not be trigggered
|
||||||
// on processors that do not have a processorFaPatch so instead
|
// on processors that do not have a processorFaPatch so instead
|
||||||
// force construction.
|
// force construction.
|
||||||
|
|
||||||
|
(void)mesh_.edgeAreaNormals();
|
||||||
(void)mesh_.pointAreaNormals();
|
(void)mesh_.pointAreaNormals();
|
||||||
|
|
||||||
|
(void)mesh_.areaCentres();
|
||||||
|
(void)mesh_.faceAreaNormals();
|
||||||
|
|
||||||
|
|
||||||
PstreamBuffers pBufs(Pstream::defaultCommsType);
|
PstreamBuffers pBufs(Pstream::defaultCommsType);
|
||||||
|
|
||||||
if
|
if
|
||||||
@ -780,12 +794,15 @@ bool Foam::faBoundaryMesh::checkDefinition(const bool report) const
|
|||||||
|
|
||||||
void Foam::faBoundaryMesh::movePoints(const pointField& p)
|
void Foam::faBoundaryMesh::movePoints(const pointField& p)
|
||||||
{
|
{
|
||||||
// processorFaPatch geometry triggers calculation of pointNormals.
|
// See comments in calcGeometry()
|
||||||
// This uses parallel comms and hence will not be trigggered
|
|
||||||
// on processors that do not have a processorFaPatch so instead
|
(void)mesh_.edgeAreaNormals();
|
||||||
// force construction.
|
|
||||||
(void)mesh_.pointAreaNormals();
|
(void)mesh_.pointAreaNormals();
|
||||||
|
|
||||||
|
(void)mesh_.areaCentres();
|
||||||
|
(void)mesh_.faceAreaNormals();
|
||||||
|
|
||||||
|
|
||||||
PstreamBuffers pBufs(Pstream::defaultCommsType);
|
PstreamBuffers pBufs(Pstream::defaultCommsType);
|
||||||
|
|
||||||
if
|
if
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
Copyright (C) 2016-2017 Wikki Ltd
|
||||||
Copyright (C) 2020-2022 OpenCFD Ltd.
|
Copyright (C) 2020-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -265,6 +265,27 @@ void Foam::faMesh::clearOut() const
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::faMesh::syncGeom()
|
||||||
|
{
|
||||||
|
if (UPstream::parRun())
|
||||||
|
{
|
||||||
|
// areaCentres()
|
||||||
|
if (centresPtr_)
|
||||||
|
{
|
||||||
|
centresPtr_->boundaryFieldRef()
|
||||||
|
.evaluateCoupled<processorFaPatch>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// faceAreaNormals()
|
||||||
|
if (faceAreaNormalsPtr_)
|
||||||
|
{
|
||||||
|
faceAreaNormalsPtr_->boundaryFieldRef()
|
||||||
|
.evaluateCoupled<processorFaPatch>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Foam::faMesh::init(const bool doInit)
|
bool Foam::faMesh::init(const bool doInit)
|
||||||
{
|
{
|
||||||
if (doInit)
|
if (doInit)
|
||||||
@ -284,18 +305,7 @@ bool Foam::faMesh::init(const bool doInit)
|
|||||||
// Calculate the geometry for the patches (transformation tensors etc.)
|
// Calculate the geometry for the patches (transformation tensors etc.)
|
||||||
boundary_.calcGeometry();
|
boundary_.calcGeometry();
|
||||||
|
|
||||||
// Ensure processor/processor information is properly synchronised
|
syncGeom();
|
||||||
if (Pstream::parRun())
|
|
||||||
{
|
|
||||||
const_cast<areaVectorField&>(areaCentres()).boundaryFieldRef()
|
|
||||||
.evaluateCoupled<processorFaPatch>();
|
|
||||||
|
|
||||||
// This roughly corresponds to what OpenFOAM-v2112 (and earlier) had,
|
|
||||||
// but should nominally be unnecessary.
|
|
||||||
//
|
|
||||||
/// const_cast<areaVectorField&>(faceAreaNormals()).boundaryFieldRef()
|
|
||||||
/// .evaluateCoupled<processorFaPatch>();
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -955,7 +965,6 @@ bool Foam::faMesh::movePoints()
|
|||||||
|
|
||||||
clearGeomNotAreas();
|
clearGeomNotAreas();
|
||||||
|
|
||||||
// To satisfy the motion interface for MeshObject, const cast is needed
|
|
||||||
if (patchPtr_)
|
if (patchPtr_)
|
||||||
{
|
{
|
||||||
patchPtr_->movePoints(newPoints);
|
patchPtr_->movePoints(newPoints);
|
||||||
@ -969,6 +978,8 @@ bool Foam::faMesh::movePoints()
|
|||||||
|
|
||||||
// Note: Fluxes were dummy?
|
// Note: Fluxes were dummy?
|
||||||
|
|
||||||
|
syncGeom();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
Copyright (C) 2016-2017 Wikki Ltd
|
||||||
Copyright (C) 2021-2022 OpenCFD Ltd.
|
Copyright (C) 2021-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -599,6 +599,10 @@ public:
|
|||||||
//- Initialise non-demand-driven data etc
|
//- Initialise non-demand-driven data etc
|
||||||
bool init(const bool doInit);
|
bool init(const bool doInit);
|
||||||
|
|
||||||
|
//- Processor/processor synchronisation for geometry fields.
|
||||||
|
// Largely internal use only (slightly hacky).
|
||||||
|
void syncGeom();
|
||||||
|
|
||||||
|
|
||||||
// Database
|
// Database
|
||||||
|
|
||||||
|
@ -603,6 +603,12 @@ void Foam::faMesh::calcAreaCentres() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parallel consistency, exchange on processor patches
|
||||||
|
if (UPstream::parRun())
|
||||||
|
{
|
||||||
|
centres.boundaryFieldRef().evaluateCoupled<processorFaPatch>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -750,6 +756,12 @@ void Foam::faMesh::calcFaceAreaNormals() const
|
|||||||
{
|
{
|
||||||
faceNormals.boundaryFieldRef()[patchI] = edgeNormalsBoundary[patchI];
|
faceNormals.boundaryFieldRef()[patchI] = edgeNormalsBoundary[patchI];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parallel consistency, exchange on processor patches
|
||||||
|
if (UPstream::parRun())
|
||||||
|
{
|
||||||
|
faceNormals.boundaryFieldRef().evaluateCoupled<processorFaPatch>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2012-2016 OpenFOAM Foundation
|
Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||||
Copyright (C) 2015-2022 OpenCFD Ltd.
|
Copyright (C) 2015-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -61,6 +61,8 @@ void Foam::faMeshTools::forceDemandDriven(faMesh& mesh)
|
|||||||
(void)mesh.pointAreaNormals();
|
(void)mesh.pointAreaNormals();
|
||||||
(void)mesh.faceCurvatures();
|
(void)mesh.faceCurvatures();
|
||||||
(void)mesh.edgeTransformTensors();
|
(void)mesh.edgeTransformTensors();
|
||||||
|
|
||||||
|
mesh.syncGeom();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -181,13 +181,6 @@ public:
|
|||||||
|
|
||||||
// Coupled interface functionality
|
// Coupled interface functionality
|
||||||
|
|
||||||
//- Transform given patch component field
|
|
||||||
virtual void transformCoupleField
|
|
||||||
(
|
|
||||||
solveScalarField& f,
|
|
||||||
const direction cmpt
|
|
||||||
) const = 0;
|
|
||||||
|
|
||||||
//- Update result field based on interface functionality
|
//- Update result field based on interface functionality
|
||||||
virtual void updateInterfaceMatrix
|
virtual void updateInterfaceMatrix
|
||||||
(
|
(
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration |
|
|
||||||
\\ / A nd | www.openfoam.com
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifndef transformFaPatchFieldsFwd_H
|
|
||||||
#define transformFaPatchFieldsFwd_H
|
|
||||||
|
|
||||||
#include "fieldTypes.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
namespace Foam
|
|
||||||
{
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class Type> class transformFaPatchField;
|
|
||||||
|
|
||||||
// typedef transformFaPatchField<scalar> transformFaPatchScalarField;
|
|
||||||
// typedef transformFaPatchField<vector> transformFaPatchVectorField;
|
|
||||||
// typedef transformFaPatchField<tensor> transformFaPatchTensorField;
|
|
||||||
|
|
||||||
// template<class Type> class transformFaPatchField;
|
|
||||||
|
|
||||||
makeFaPatchTypeFieldTypedefs(transform)
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
Copyright (C) 2016-2017 Wikki Ltd
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -187,20 +187,7 @@ void Foam::cyclicFaPatchField<Type>::updateInterfaceMatrix
|
|||||||
transformCoupleField(pnf, cmpt);
|
transformCoupleField(pnf, cmpt);
|
||||||
|
|
||||||
// Multiply the field by coefficients and add into the result
|
// Multiply the field by coefficients and add into the result
|
||||||
if (add)
|
this->addToInternalField(result, !add, faceCells, coeffs, pnf);
|
||||||
{
|
|
||||||
forAll(faceCells, elemI)
|
|
||||||
{
|
|
||||||
result[faceCells[elemI]] += coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
forAll(faceCells, elemI)
|
|
||||||
{
|
|
||||||
result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -227,21 +214,11 @@ void Foam::cyclicFaPatchField<Type>::updateInterfaceMatrix
|
|||||||
pnf[facei + sizeby2] = psiInternal[faceCells[facei]];
|
pnf[facei + sizeby2] = psiInternal[faceCells[facei]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Transform according to the transformation tensors
|
||||||
|
transformCoupleField(pnf);
|
||||||
|
|
||||||
// Multiply the field by coefficients and add into the result
|
// Multiply the field by coefficients and add into the result
|
||||||
if (add)
|
this->addToInternalField(result, !add, faceCells, coeffs, pnf);
|
||||||
{
|
|
||||||
forAll(faceCells, elemI)
|
|
||||||
{
|
|
||||||
result[faceCells[elemI]] += coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
forAll(faceCells, elemI)
|
|
||||||
{
|
|
||||||
result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,16 +164,6 @@ public:
|
|||||||
|
|
||||||
// Coupled interface functionality
|
// Coupled interface functionality
|
||||||
|
|
||||||
//- Transform neighbour field
|
|
||||||
virtual void transformCoupleField
|
|
||||||
(
|
|
||||||
solveScalarField& f,
|
|
||||||
const direction cmpt
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
cyclicLduInterfaceField::transformCoupleField(f, cmpt);
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Update result field based on interface functionality
|
//- Update result field based on interface functionality
|
||||||
virtual void updateInterfaceMatrix
|
virtual void updateInterfaceMatrix
|
||||||
(
|
(
|
||||||
|
@ -130,13 +130,6 @@ Foam::processorFaPatchField<Type>::processorFaPatchField
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
Foam::processorFaPatchField<Type>::~processorFaPatchField()
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class Type>
|
template<class Type>
|
||||||
@ -203,6 +196,8 @@ void Foam::processorFaPatchField<Type>::initInterfaceMatrixUpdate
|
|||||||
commsType,
|
commsType,
|
||||||
this->patch().patchInternalField(psiInternal)()
|
this->patch().patchInternalField(psiInternal)()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const_cast<processorFaPatchField<Type>&>(*this).updatedMatrix() = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -219,32 +214,28 @@ void Foam::processorFaPatchField<Type>::updateInterfaceMatrix
|
|||||||
const Pstream::commsTypes commsType
|
const Pstream::commsTypes commsType
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
if (this->updatedMatrix())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const labelUList& faceCells = this->patch().edgeFaces();
|
||||||
|
|
||||||
solveScalarField pnf
|
solveScalarField pnf
|
||||||
(
|
(
|
||||||
procPatch_.receive<solveScalar>(commsType, this->size())()
|
procPatch_.receive<solveScalar>(commsType, this->size())
|
||||||
);
|
);
|
||||||
|
|
||||||
// Transform according to the transformation tensor
|
if (!std::is_arithmetic<Type>::value)
|
||||||
transformCoupleField(pnf, cmpt);
|
{
|
||||||
|
// Transform non-scalar data according to the transformation tensor
|
||||||
|
transformCoupleField(pnf, cmpt);
|
||||||
|
}
|
||||||
|
|
||||||
// Multiply the field by coefficients and add into the result
|
// Multiply the field by coefficients and add into the result
|
||||||
|
this->addToInternalField(result, !add, faceCells, coeffs, pnf);
|
||||||
|
|
||||||
const labelUList& edgeFaces = this->patch().edgeFaces();
|
const_cast<processorFaPatchField<Type>&>(*this).updatedMatrix() = true;
|
||||||
|
|
||||||
if (add)
|
|
||||||
{
|
|
||||||
forAll(edgeFaces, elemI)
|
|
||||||
{
|
|
||||||
result[edgeFaces[elemI]] += coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
forAll(edgeFaces, elemI)
|
|
||||||
{
|
|
||||||
result[edgeFaces[elemI]] -= coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -265,6 +256,8 @@ void Foam::processorFaPatchField<Type>::initInterfaceMatrixUpdate
|
|||||||
commsType,
|
commsType,
|
||||||
this->patch().patchInternalField(psiInternal)()
|
this->patch().patchInternalField(psiInternal)()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const_cast<processorFaPatchField<Type>&>(*this).updatedMatrix() = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -280,29 +273,25 @@ void Foam::processorFaPatchField<Type>::updateInterfaceMatrix
|
|||||||
const Pstream::commsTypes commsType
|
const Pstream::commsTypes commsType
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
if (this->updatedMatrix())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const labelUList& faceCells = this->patch().edgeFaces();
|
||||||
|
|
||||||
Field<Type> pnf
|
Field<Type> pnf
|
||||||
(
|
(
|
||||||
procPatch_.receive<Type>(commsType, this->size())()
|
procPatch_.receive<Type>(commsType, this->size())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Transform according to the transformation tensor
|
||||||
|
transformCoupleField(pnf);
|
||||||
|
|
||||||
// Multiply the field by coefficients and add into the result
|
// Multiply the field by coefficients and add into the result
|
||||||
|
this->addToInternalField(result, !add, faceCells, coeffs, pnf);
|
||||||
|
|
||||||
const labelUList& edgeFaces = this->patch().edgeFaces();
|
const_cast<processorFaPatchField<Type>&>(*this).updatedMatrix() = true;
|
||||||
|
|
||||||
if (add)
|
|
||||||
{
|
|
||||||
forAll(edgeFaces, elemI)
|
|
||||||
{
|
|
||||||
result[edgeFaces[elemI]] += coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
forAll(edgeFaces, elemI)
|
|
||||||
{
|
|
||||||
result[edgeFaces[elemI]] -= coeffs[elemI]*pnf[elemI];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
Copyright (C) 2016-2017 Wikki Ltd
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -38,8 +38,8 @@ SourceFiles
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef processorFaPatchField_H
|
#ifndef Foam_processorFaPatchField_H
|
||||||
#define processorFaPatchField_H
|
#define Foam_processorFaPatchField_H
|
||||||
|
|
||||||
#include "coupledFaPatchField.H"
|
#include "coupledFaPatchField.H"
|
||||||
#include "processorLduInterfaceField.H"
|
#include "processorLduInterfaceField.H"
|
||||||
@ -139,9 +139,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
//- Destructor
|
||||||
|
~processorFaPatchField() = default;
|
||||||
~processorFaPatchField();
|
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
@ -169,17 +168,8 @@ public:
|
|||||||
//- Return patch-normal gradient
|
//- Return patch-normal gradient
|
||||||
virtual tmp<Field<Type>> snGrad() const;
|
virtual tmp<Field<Type>> snGrad() const;
|
||||||
|
|
||||||
// Coupled interface functionality
|
|
||||||
|
|
||||||
//- Transform neighbour field
|
// Coupled interface functionality
|
||||||
virtual void transformCoupleField
|
|
||||||
(
|
|
||||||
solveScalarField& f,
|
|
||||||
const direction cmpt
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
processorLduInterfaceField::transformCoupleField(f, cmpt);
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Initialise neighbour matrix update
|
//- Initialise neighbour matrix update
|
||||||
virtual void initInterfaceMatrixUpdate
|
virtual void initInterfaceMatrixUpdate
|
||||||
|
@ -25,10 +25,10 @@ License
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef processorFaPatchFields_H
|
#ifndef Foam_processorFaPatchFields_H
|
||||||
#define processorFaPatchFields_H
|
#define Foam_processorFaPatchFields_H
|
||||||
|
|
||||||
#include "processorFaPatchScalarField.H"
|
#include "processorFaPatchField.H"
|
||||||
#include "fieldTypes.H"
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration |
|
|
||||||
\\ / A nd | www.openfoam.com
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifndef processorFaPatchFieldsFwd_H
|
|
||||||
#define processorFaPatchFieldsFwd_H
|
|
||||||
|
|
||||||
#include "fieldTypes.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
namespace Foam
|
|
||||||
{
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class Type> class processorFaPatchField;
|
|
||||||
|
|
||||||
makeFaPatchTypeFieldTypedefs(processor)
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
@ -1,100 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration |
|
|
||||||
\\ / A nd | www.openfoam.com
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "processorFaPatchScalarField.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void Foam::processorFaPatchField<Foam::scalar>::transformCoupleField
|
|
||||||
(
|
|
||||||
solveScalarField& f,
|
|
||||||
const direction cmpt
|
|
||||||
) const
|
|
||||||
{}
|
|
||||||
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void Foam::processorFaPatchField<Foam::scalar>::initInterfaceMatrixUpdate
|
|
||||||
(
|
|
||||||
solveScalarField& result,
|
|
||||||
const bool add,
|
|
||||||
const lduAddressing& lduAddr,
|
|
||||||
const label patchId,
|
|
||||||
const solveScalarField& psiInternal,
|
|
||||||
const scalarField& coeffs,
|
|
||||||
const direction,
|
|
||||||
const Pstream::commsTypes commsType
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
procPatch_.send
|
|
||||||
(
|
|
||||||
commsType,
|
|
||||||
patch().patchInternalField(psiInternal)()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void Foam::processorFaPatchField<Foam::scalar>::updateInterfaceMatrix
|
|
||||||
(
|
|
||||||
solveScalarField& result,
|
|
||||||
const bool add,
|
|
||||||
const lduAddressing& lduAddr,
|
|
||||||
const label patchId,
|
|
||||||
const solveScalarField&,
|
|
||||||
const scalarField& coeffs,
|
|
||||||
const direction,
|
|
||||||
const Pstream::commsTypes commsType
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
solveScalarField pnf
|
|
||||||
(
|
|
||||||
procPatch_.receive<solveScalar>(commsType, this->size())()
|
|
||||||
);
|
|
||||||
|
|
||||||
const labelUList& edgeFaces = patch().edgeFaces();
|
|
||||||
|
|
||||||
if (add)
|
|
||||||
{
|
|
||||||
forAll(edgeFaces, facei)
|
|
||||||
{
|
|
||||||
result[edgeFaces[facei]] -= coeffs[facei]*pnf[facei];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
forAll(edgeFaces, facei)
|
|
||||||
{
|
|
||||||
result[edgeFaces[facei]] -= coeffs[facei]*pnf[facei];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
@ -1,86 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration |
|
|
||||||
\\ / A nd | www.openfoam.com
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
Copyright (C) 2016-2017 Wikki Ltd
|
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifndef processorFaPatchScalarField_H
|
|
||||||
#define processorFaPatchScalarField_H
|
|
||||||
|
|
||||||
#include "processorFaPatchField.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
namespace Foam
|
|
||||||
{
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void processorFaPatchField<scalar>::transformCoupleField
|
|
||||||
(
|
|
||||||
solveScalarField& f,
|
|
||||||
const direction cmpt
|
|
||||||
) const;
|
|
||||||
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void processorFaPatchField<scalar>::initInterfaceMatrixUpdate
|
|
||||||
(
|
|
||||||
solveScalarField& result,
|
|
||||||
const bool add,
|
|
||||||
const lduAddressing& lduAddr,
|
|
||||||
const label patchId,
|
|
||||||
const solveScalarField&,
|
|
||||||
const scalarField& coeffs,
|
|
||||||
const direction,
|
|
||||||
const Pstream::commsTypes commsType
|
|
||||||
) const;
|
|
||||||
|
|
||||||
|
|
||||||
template<>
|
|
||||||
void processorFaPatchField<scalar>::updateInterfaceMatrix
|
|
||||||
(
|
|
||||||
solveScalarField& result,
|
|
||||||
const bool add,
|
|
||||||
const lduAddressing& lduAddr,
|
|
||||||
const label patchId,
|
|
||||||
const solveScalarField&,
|
|
||||||
const scalarField& coeffs,
|
|
||||||
const direction,
|
|
||||||
const Pstream::commsTypes commsType
|
|
||||||
) const;
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
@ -389,7 +389,7 @@ bool Foam::functionObjects::fvExpressionField::read(const dictionary& dict)
|
|||||||
}
|
}
|
||||||
|
|
||||||
autowrite_ = dict.getOrDefault("autowrite", false);
|
autowrite_ = dict.getOrDefault("autowrite", false);
|
||||||
store_ = dict.getOrDefault("autowrite", true);
|
store_ = dict.getOrDefault("store", true);
|
||||||
|
|
||||||
// "dimensions" is optional
|
// "dimensions" is optional
|
||||||
dimensions_.clear();
|
dimensions_.clear();
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2019-2021 OpenCFD Ltd.
|
Copyright (C) 2019-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -62,6 +62,53 @@ Foam::ThermoSurfaceFilm<CloudType>::ThermoSurfaceFilm
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
template<class filmType>
|
||||||
|
void Foam::ThermoSurfaceFilm<CloudType>::absorbInteraction
|
||||||
|
(
|
||||||
|
filmType& film,
|
||||||
|
const parcelType& p,
|
||||||
|
const polyPatch& pp,
|
||||||
|
const label facei,
|
||||||
|
const scalar mass,
|
||||||
|
bool& keepParticle
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DebugInfo<< "Parcel " << p.origId() << " absorbInteraction" << endl;
|
||||||
|
|
||||||
|
// Patch face normal
|
||||||
|
const vector& nf = pp.faceNormals()[facei];
|
||||||
|
|
||||||
|
// Patch velocity
|
||||||
|
const vector& Up = this->owner().U().boundaryField()[pp.index()][facei];
|
||||||
|
|
||||||
|
// Relative parcel velocity
|
||||||
|
const vector Urel(p.U() - Up);
|
||||||
|
|
||||||
|
// Parcel normal velocity
|
||||||
|
const vector Un(nf*(Urel & nf));
|
||||||
|
|
||||||
|
// Parcel tangential velocity
|
||||||
|
const vector Ut(Urel - Un);
|
||||||
|
|
||||||
|
film.addSources
|
||||||
|
(
|
||||||
|
pp.index(),
|
||||||
|
facei,
|
||||||
|
mass, // mass
|
||||||
|
mass*Ut, // tangential momentum
|
||||||
|
mass*mag(Un), // impingement pressure
|
||||||
|
mass*p.hs() // energy
|
||||||
|
);
|
||||||
|
|
||||||
|
this->nParcelsTransferred()++;
|
||||||
|
|
||||||
|
this->totalMassTransferred() += mass;
|
||||||
|
|
||||||
|
keepParticle = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class CloudType>
|
template<class CloudType>
|
||||||
bool Foam::ThermoSurfaceFilm<CloudType>::transferParcel
|
bool Foam::ThermoSurfaceFilm<CloudType>::transferParcel
|
||||||
(
|
(
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2021 OpenCFD Ltd.
|
Copyright (C) 2021-2023 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -141,6 +141,21 @@ public:
|
|||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
|
// Interaction models
|
||||||
|
|
||||||
|
//- Absorb parcel into film
|
||||||
|
template<class filmType>
|
||||||
|
void absorbInteraction
|
||||||
|
(
|
||||||
|
filmType&,
|
||||||
|
const parcelType& p,
|
||||||
|
const polyPatch& pp,
|
||||||
|
const label facei,
|
||||||
|
const scalar mass,
|
||||||
|
bool& keepParticle
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
// Evaluation
|
// Evaluation
|
||||||
|
|
||||||
//- Transfer parcel from cloud to surface film
|
//- Transfer parcel from cloud to surface film
|
||||||
|
@ -80,6 +80,19 @@ void Foam::vtk::coordSetWriter::beginPiece()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update sizes, similar to
|
||||||
|
// vtk::polyWriter::beginPiece(const pointField&, const edgeList&)
|
||||||
|
|
||||||
|
numberOfPoints_ = nLocalPoints_;
|
||||||
|
numberOfCells_ = nLocalLines_;
|
||||||
|
|
||||||
|
// if (parallel_)
|
||||||
|
// {
|
||||||
|
// reduce(numberOfPoints_, sumOp<label>());
|
||||||
|
// reduce(numberOfCells_, sumOp<label>());
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
// Nothing else to do for legacy
|
// Nothing else to do for legacy
|
||||||
if (legacy()) return;
|
if (legacy()) return;
|
||||||
|
|
||||||
@ -88,7 +101,7 @@ void Foam::vtk::coordSetWriter::beginPiece()
|
|||||||
format().openTag
|
format().openTag
|
||||||
(
|
(
|
||||||
vtk::fileTag::PIECE,
|
vtk::fileTag::PIECE,
|
||||||
vtk::fileAttr::NUMBER_OF_POINTS, nLocalPoints_
|
vtk::fileAttr::NUMBER_OF_POINTS, numberOfPoints_
|
||||||
);
|
);
|
||||||
if (nLocalVerts_)
|
if (nLocalVerts_)
|
||||||
{
|
{
|
||||||
@ -105,7 +118,7 @@ void Foam::vtk::coordSetWriter::beginPiece()
|
|||||||
|
|
||||||
void Foam::vtk::coordSetWriter::writePoints()
|
void Foam::vtk::coordSetWriter::writePoints()
|
||||||
{
|
{
|
||||||
this->beginPoints(nLocalPoints_);
|
this->beginPoints(numberOfPoints_); //<- same as nLocalPoints_
|
||||||
|
|
||||||
{
|
{
|
||||||
for (const pointField& pts : points_)
|
for (const pointField& pts : points_)
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2017 OpenCFD Ltd.
|
Copyright (C) 2017-2024 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -62,13 +62,17 @@ bool Foam::fileFormats::NASedgeFormat::read
|
|||||||
|
|
||||||
while (is.good())
|
while (is.good())
|
||||||
{
|
{
|
||||||
string::size_type linei = 0; // parsing position within current line
|
|
||||||
string line;
|
string line;
|
||||||
is.getLine(line);
|
is.getLine(line);
|
||||||
|
|
||||||
if (line.empty() || line[0] == '$')
|
if (line.empty())
|
||||||
{
|
{
|
||||||
continue; // Skip empty or comment
|
continue; // Ignore empty
|
||||||
|
}
|
||||||
|
else if (line[0] == '$')
|
||||||
|
{
|
||||||
|
// Ignore comment
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if character 72 is continuation
|
// Check if character 72 is continuation
|
||||||
@ -94,38 +98,66 @@ bool Foam::fileFormats::NASedgeFormat::read
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Parsing position within current line
|
||||||
|
std::string::size_type linei = 0;
|
||||||
|
|
||||||
|
// Is free format if line contains a comma
|
||||||
|
const bool freeFormat = (line.find(',') != std::string::npos);
|
||||||
|
|
||||||
// First word (column 0-8)
|
// First word (column 0-8)
|
||||||
const word cmd(word::validate(nextNasField(line, linei, 8)));
|
const word cmd(word::validate(nextNasField(line, linei, 8)));
|
||||||
|
|
||||||
if (cmd == "CBEAM" || cmd == "CROD")
|
if (cmd == "CBEAM" || cmd == "CROD")
|
||||||
{
|
{
|
||||||
// discard elementId (8-16)
|
// Fixed format:
|
||||||
(void) nextNasField(line, linei, 8); // 8-16
|
// 8-16 : element id
|
||||||
// discard groupId (16-24)
|
// 16-24 : group id
|
||||||
(void) nextNasField(line, linei, 8); // 16-24
|
// 24-32 : vertex
|
||||||
|
// 32-40 : vertex
|
||||||
|
|
||||||
label a = readLabel(nextNasField(line, linei, 8)); // 24-32
|
// discard elementId
|
||||||
label b = readLabel(nextNasField(line, linei, 8)); // 32-40
|
(void) nextNasField(line, linei, 8, freeFormat);
|
||||||
|
// discard groupId
|
||||||
|
(void) nextNasField(line, linei, 8, freeFormat);
|
||||||
|
|
||||||
|
label a = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
label b = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
|
||||||
dynEdges.append(edge(a,b));
|
dynEdges.append(edge(a,b));
|
||||||
}
|
}
|
||||||
else if (cmd == "PLOTEL")
|
else if (cmd == "PLOTEL")
|
||||||
{
|
{
|
||||||
// discard elementId (8-16)
|
// Fixed format:
|
||||||
(void) nextNasField(line, linei, 8); // 8-16
|
// 8-16 : element id
|
||||||
|
// 16-24 : vertex
|
||||||
|
// 24-32 : vertex
|
||||||
|
// 32-40 : vertex
|
||||||
|
|
||||||
label a = readLabel(nextNasField(line, linei, 8)); // 16-24
|
// discard elementId (8-16)
|
||||||
label b = readLabel(nextNasField(line, linei, 8)); // 24-32
|
(void) nextNasField(line, linei, 8, freeFormat);
|
||||||
|
|
||||||
|
label a = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
label b = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
|
||||||
dynEdges.append(edge(a,b));
|
dynEdges.append(edge(a,b));
|
||||||
}
|
}
|
||||||
else if (cmd == "GRID")
|
else if (cmd == "GRID")
|
||||||
{
|
{
|
||||||
label index = readLabel(nextNasField(line, linei, 8)); // 8-16
|
// Fixed (short) format:
|
||||||
(void) nextNasField(line, linei, 8); // 16-24
|
// 8-16 : point id
|
||||||
scalar x = readNasScalar(nextNasField(line, linei, 8)); // 24-32
|
// 16-24 : coordinate system (unsupported)
|
||||||
scalar y = readNasScalar(nextNasField(line, linei, 8)); // 32-40
|
// 24-32 : point x coordinate
|
||||||
scalar z = readNasScalar(nextNasField(line, linei, 8)); // 40-48
|
// 32-40 : point y coordinate
|
||||||
|
// 40-48 : point z coordinate
|
||||||
|
// 48-56 : displacement coordinate system (optional, unsupported)
|
||||||
|
// 56-64 : single point constraints (optional, unsupported)
|
||||||
|
// 64-70 : super-element id (optional, unsupported)
|
||||||
|
|
||||||
|
label index = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
(void) nextNasField(line, linei, 8, freeFormat);
|
||||||
|
scalar x = readNasScalar(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
scalar y = readNasScalar(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
scalar z = readNasScalar(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
|
||||||
pointId.append(index);
|
pointId.append(index);
|
||||||
dynPoints.append(point(x, y, z));
|
dynPoints.append(point(x, y, z));
|
||||||
@ -138,6 +170,8 @@ bool Foam::fileFormats::NASedgeFormat::read
|
|||||||
// GRID* 126 0 -5.55999875E+02 -5.68730474E+02
|
// GRID* 126 0 -5.55999875E+02 -5.68730474E+02
|
||||||
// * 2.14897901E+02
|
// * 2.14897901E+02
|
||||||
|
|
||||||
|
// Cannot be long format and free format at the same time!
|
||||||
|
|
||||||
label index = readLabel(nextNasField(line, linei, 16)); // 8-24
|
label index = readLabel(nextNasField(line, linei, 16)); // 8-24
|
||||||
(void) nextNasField(line, linei, 16); // 24-40
|
(void) nextNasField(line, linei, 16); // 24-40
|
||||||
scalar x = readNasScalar(nextNasField(line, linei, 16)); // 40-56
|
scalar x = readNasScalar(nextNasField(line, linei, 16)); // 40-56
|
||||||
|
@ -155,7 +155,7 @@ bool Foam::vtk::writePointSet
|
|||||||
|
|
||||||
if (parallel)
|
if (parallel)
|
||||||
{
|
{
|
||||||
vtk::writeListParallel(format(), mesh.points(), pointLabels);
|
vtk::writeListParallel(format.ref(), mesh.points(), pointLabels);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1950,7 +1950,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
|||||||
// //globalBorderTris.gather
|
// //globalBorderTris.gather
|
||||||
// //(
|
// //(
|
||||||
// // UPstream::worldComm,
|
// // UPstream::worldComm,
|
||||||
// // UPstream::procID(Pstream::worldComm),
|
// // UPstream::allProcs(UPstream::worldComm),
|
||||||
// // globalBorderCentres
|
// // globalBorderCentres
|
||||||
// //);
|
// //);
|
||||||
// pointField globalBorderCentres(allCentres);
|
// pointField globalBorderCentres(allCentres);
|
||||||
@ -1997,7 +1997,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
|||||||
// //globalBorderTris.scatter
|
// //globalBorderTris.scatter
|
||||||
// //(
|
// //(
|
||||||
// // UPstream::worldComm,
|
// // UPstream::worldComm,
|
||||||
// // UPstream::procID(Pstream::worldComm),
|
// // UPstream::allProcs(UPstream::worldComm),
|
||||||
// // isMasterPoint
|
// // isMasterPoint
|
||||||
// //);
|
// //);
|
||||||
// //boolList isMasterBorder(s.size(), false);
|
// //boolList isMasterBorder(s.size(), false);
|
||||||
@ -2095,7 +2095,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
|||||||
globalTris().gather
|
globalTris().gather
|
||||||
(
|
(
|
||||||
UPstream::worldComm,
|
UPstream::worldComm,
|
||||||
UPstream::procID(Pstream::worldComm),
|
UPstream::allProcs(UPstream::worldComm),
|
||||||
allCentres
|
allCentres
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -2145,7 +2145,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
|||||||
globalTris().scatter
|
globalTris().scatter
|
||||||
(
|
(
|
||||||
UPstream::worldComm,
|
UPstream::worldComm,
|
||||||
UPstream::procID(Pstream::worldComm),
|
UPstream::allProcs(UPstream::worldComm),
|
||||||
allDistribution,
|
allDistribution,
|
||||||
distribution
|
distribution
|
||||||
);
|
);
|
||||||
|
@ -834,15 +834,15 @@ Foam::meshToMesh::mapTgtToSrc
|
|||||||
label srcPatchi = srcPatchID_[i];
|
label srcPatchi = srcPatchID_[i];
|
||||||
label tgtPatchi = tgtPatchID_[i];
|
label tgtPatchi = tgtPatchID_[i];
|
||||||
|
|
||||||
if (!srcPatchFields.set(tgtPatchi))
|
if (!srcPatchFields.set(srcPatchi))
|
||||||
{
|
{
|
||||||
srcPatchFields.set
|
srcPatchFields.set
|
||||||
(
|
(
|
||||||
srcPatchi,
|
srcPatchi,
|
||||||
fvPatchField<Type>::New
|
fvPatchField<Type>::New
|
||||||
(
|
(
|
||||||
tgtBfld[srcPatchi],
|
tgtBfld[tgtPatchi],
|
||||||
srcMesh.boundary()[tgtPatchi],
|
srcMesh.boundary()[srcPatchi],
|
||||||
DimensionedField<Type, volMesh>::null(),
|
DimensionedField<Type, volMesh>::null(),
|
||||||
directFvPatchFieldMapper
|
directFvPatchFieldMapper
|
||||||
(
|
(
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
Copyright (C) 2017-2020 OpenCFD Ltd.
|
Copyright (C) 2017-2024 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -149,7 +149,6 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
|
|||||||
string line;
|
string line;
|
||||||
while (is.good())
|
while (is.good())
|
||||||
{
|
{
|
||||||
string::size_type linei = 0; // Parsing position within current line
|
|
||||||
is.getLine(line);
|
is.getLine(line);
|
||||||
|
|
||||||
// ANSA extension
|
// ANSA extension
|
||||||
@ -223,16 +222,30 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Parsing position within current line
|
||||||
|
std::string::size_type linei = 0;
|
||||||
|
|
||||||
|
// Is free format if line contains a comma
|
||||||
|
const bool freeFormat = (line.find(',') != std::string::npos);
|
||||||
|
|
||||||
// First word (column 0-8)
|
// First word (column 0-8)
|
||||||
const word cmd(word::validate(nextNasField(line, linei, 8)));
|
const word cmd(word::validate(nextNasField(line, linei, 8)));
|
||||||
|
|
||||||
if (cmd == "CTRIA3")
|
if (cmd == "CTRIA3")
|
||||||
{
|
{
|
||||||
label elemId = readLabel(nextNasField(line, linei, 8)); // 8-16
|
// Fixed format:
|
||||||
label groupId = readLabel(nextNasField(line, linei, 8)); // 16-24
|
// 8-16 : element id
|
||||||
const auto a = readLabel(nextNasField(line, linei, 8)); // 24-32
|
// 16-24 : group id
|
||||||
const auto b = readLabel(nextNasField(line, linei, 8)); // 32-40
|
// 24-32 : vertex
|
||||||
const auto c = readLabel(nextNasField(line, linei, 8)); // 40-48
|
// 32-40 : vertex
|
||||||
|
// 40-48 : vertex
|
||||||
|
|
||||||
|
label elemId = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
label groupId = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
const auto a = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
const auto b = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
const auto c = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
|
||||||
// Convert groupId into zoneId
|
// Convert groupId into zoneId
|
||||||
const auto iterZone = zoneLookup.cfind(groupId);
|
const auto iterZone = zoneLookup.cfind(groupId);
|
||||||
@ -261,12 +274,20 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
|
|||||||
}
|
}
|
||||||
else if (cmd == "CQUAD4")
|
else if (cmd == "CQUAD4")
|
||||||
{
|
{
|
||||||
label elemId = readLabel(nextNasField(line, linei, 8)); // 8-16
|
// Fixed format:
|
||||||
label groupId = readLabel(nextNasField(line, linei, 8)); // 16-24
|
// 8-16 : element id
|
||||||
const auto a = readLabel(nextNasField(line, linei, 8)); // 24-32
|
// 16-24 : group id
|
||||||
const auto b = readLabel(nextNasField(line, linei, 8)); // 32-40
|
// 24-32 : vertex
|
||||||
const auto c = readLabel(nextNasField(line, linei, 8)); // 40-48
|
// 32-40 : vertex
|
||||||
const auto d = readLabel(nextNasField(line, linei, 8)); // 48-56
|
// 40-48 : vertex
|
||||||
|
// 48-56 : vertex
|
||||||
|
|
||||||
|
label elemId = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
label groupId = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
const auto a = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
const auto b = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
const auto c = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
const auto d = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
|
||||||
// Convert groupId into zoneId
|
// Convert groupId into zoneId
|
||||||
const auto iterZone = zoneLookup.cfind(groupId);
|
const auto iterZone = zoneLookup.cfind(groupId);
|
||||||
@ -310,11 +331,21 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
|
|||||||
}
|
}
|
||||||
else if (cmd == "GRID")
|
else if (cmd == "GRID")
|
||||||
{
|
{
|
||||||
label index = readLabel(nextNasField(line, linei, 8)); // 8-16
|
// Fixed (short) format:
|
||||||
(void) nextNasField(line, linei, 8); // 16-24
|
// 8-16 : point id
|
||||||
scalar x = readNasScalar(nextNasField(line, linei, 8)); // 24-32
|
// 16-24 : coordinate system (not supported)
|
||||||
scalar y = readNasScalar(nextNasField(line, linei, 8)); // 32-40
|
// 24-32 : point x coordinate
|
||||||
scalar z = readNasScalar(nextNasField(line, linei, 8)); // 40-48
|
// 32-40 : point y coordinate
|
||||||
|
// 40-48 : point z coordinate
|
||||||
|
// 48-56 : displacement coordinate system (optional, unsupported)
|
||||||
|
// 56-64 : single point constraints (optional, unsupported)
|
||||||
|
// 64-70 : super-element id (optional, unsupported)
|
||||||
|
|
||||||
|
label index = readLabel(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
(void) nextNasField(line, linei, 8, freeFormat);
|
||||||
|
scalar x = readNasScalar(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
scalar y = readNasScalar(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
scalar z = readNasScalar(nextNasField(line, linei, 8, freeFormat));
|
||||||
|
|
||||||
pointId.append(index);
|
pointId.append(index);
|
||||||
dynPoints.append(point(x, y, z));
|
dynPoints.append(point(x, y, z));
|
||||||
@ -327,6 +358,8 @@ bool Foam::fileFormats::NASsurfaceFormat<Face>::read
|
|||||||
// GRID* 126 0 -5.55999875E+02 -5.68730474E+02
|
// GRID* 126 0 -5.55999875E+02 -5.68730474E+02
|
||||||
// * 2.14897901E+02
|
// * 2.14897901E+02
|
||||||
|
|
||||||
|
// Cannot be long format and free format at the same time!
|
||||||
|
|
||||||
label index = readLabel(nextNasField(line, linei, 16)); // 8-24
|
label index = readLabel(nextNasField(line, linei, 16)); // 8-24
|
||||||
(void) nextNasField(line, linei, 16); // 24-40
|
(void) nextNasField(line, linei, 16); // 24-40
|
||||||
scalar x = readNasScalar(nextNasField(line, linei, 16)); // 40-56
|
scalar x = readNasScalar(nextNasField(line, linei, 16)); // 40-56
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2012-2016 OpenFOAM Foundation
|
Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||||
Copyright (C) 2015-2022 OpenCFD Ltd.
|
Copyright (C) 2015-2024 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -307,16 +307,10 @@ void Foam::surfaceWriters::nastranWriter::writeGeometry
|
|||||||
Foam::surfaceWriters::nastranWriter::nastranWriter()
|
Foam::surfaceWriters::nastranWriter::nastranWriter()
|
||||||
:
|
:
|
||||||
surfaceWriter(),
|
surfaceWriter(),
|
||||||
writeFormat_(fieldFormat::SHORT),
|
writeFormat_(fieldFormat::FREE),
|
||||||
fieldMap_(),
|
|
||||||
commonGeometry_(false),
|
commonGeometry_(false),
|
||||||
separator_()
|
separator_(",") // FREE format
|
||||||
{
|
{}
|
||||||
// if (writeFormat_ == fieldFormat::FREE)
|
|
||||||
// {
|
|
||||||
// separator_ = ",";
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Foam::surfaceWriters::nastranWriter::nastranWriter
|
Foam::surfaceWriters::nastranWriter::nastranWriter
|
||||||
@ -331,12 +325,10 @@ Foam::surfaceWriters::nastranWriter::nastranWriter
|
|||||||
(
|
(
|
||||||
"format",
|
"format",
|
||||||
options,
|
options,
|
||||||
fieldFormat::LONG
|
fieldFormat::FREE
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
fieldMap_(),
|
commonGeometry_(options.getOrDefault("commonGeometry", false))
|
||||||
commonGeometry_(options.getOrDefault("commonGeometry", false)),
|
|
||||||
separator_()
|
|
||||||
{
|
{
|
||||||
if (writeFormat_ == fieldFormat::FREE)
|
if (writeFormat_ == fieldFormat::FREE)
|
||||||
{
|
{
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2012-2016 OpenFOAM Foundation
|
Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||||
Copyright (C) 2015-2022 OpenCFD Ltd.
|
Copyright (C) 2015-2024 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -33,13 +33,13 @@ Description
|
|||||||
The formatOptions for nastran:
|
The formatOptions for nastran:
|
||||||
\table
|
\table
|
||||||
Property | Description | Reqd | Default
|
Property | Description | Reqd | Default
|
||||||
fields | Field pairs for PLOAD2/PLOAD4 | yes |
|
format | Nastran format (short/long/free) | no | free
|
||||||
format | Nastran format (short/long/free) | no | long
|
|
||||||
scale | Output geometry scaling | no | 1
|
scale | Output geometry scaling | no | 1
|
||||||
transform | Output coordinate transform | no |
|
transform | Output coordinate transform | no |
|
||||||
fieldLevel | Subtract field level before scaling | no | empty dict
|
fieldLevel | Subtract field level before scaling | no | empty dict
|
||||||
fieldScale | Output field scaling | no | empty dict
|
fieldScale | Output field scaling | no | empty dict
|
||||||
commonGeometry | use separate geometry files | no | false
|
commonGeometry | use separate geometry files | no | false
|
||||||
|
fields | Field pairs for PLOAD2/PLOAD4 | yes |
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
For example,
|
For example,
|
||||||
@ -48,13 +48,6 @@ Description
|
|||||||
{
|
{
|
||||||
nastran
|
nastran
|
||||||
{
|
{
|
||||||
// OpenFOAM field name to NASTRAN load types
|
|
||||||
fields
|
|
||||||
(
|
|
||||||
(pMean PLOAD2)
|
|
||||||
(p PLOAD4)
|
|
||||||
);
|
|
||||||
|
|
||||||
format free; // format type
|
format free; // format type
|
||||||
|
|
||||||
scale 1000; // [m] -> [mm]
|
scale 1000; // [m] -> [mm]
|
||||||
@ -62,6 +55,13 @@ Description
|
|||||||
{
|
{
|
||||||
"p.*" 0.01; // [Pa] -> [mbar]
|
"p.*" 0.01; // [Pa] -> [mbar]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OpenFOAM field name to NASTRAN load types
|
||||||
|
fields
|
||||||
|
(
|
||||||
|
(pMean PLOAD2)
|
||||||
|
(p PLOAD4)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
\endverbatim
|
\endverbatim
|
||||||
@ -93,7 +93,6 @@ Description
|
|||||||
|
|
||||||
Note
|
Note
|
||||||
Output variable scaling does not apply to integer types such as Ids.
|
Output variable scaling does not apply to integer types such as Ids.
|
||||||
Field pairs default to PLOAD2 for scalars and PLOAD4 for vectors etc.
|
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
nastranSurfaceWriter.C
|
nastranSurfaceWriter.C
|
||||||
@ -221,10 +220,10 @@ public:
|
|||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Default construct. Default SHORT format
|
//- Default construct. Default FREE format
|
||||||
nastranWriter();
|
nastranWriter();
|
||||||
|
|
||||||
//- Construct with some output options. Default LONG format
|
//- Construct with some output options. Default FREE format
|
||||||
explicit nastranWriter(const dictionary& options);
|
explicit nastranWriter(const dictionary& options);
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
|
@ -140,17 +140,6 @@ Foam::radiation::radiativeIntensityRay::radiativeIntensityRay
|
|||||||
|
|
||||||
if (mesh_.nSolutionD() == 2)
|
if (mesh_.nSolutionD() == 2)
|
||||||
{
|
{
|
||||||
// Omega for 2D
|
|
||||||
omega_ = deltaPhi;
|
|
||||||
|
|
||||||
// dAve for 2D
|
|
||||||
dAve_ = vector
|
|
||||||
(
|
|
||||||
2*sinPhi*Foam::sin(0.5*deltaPhi),
|
|
||||||
2*cosPhi*Foam::sin(0.5*deltaPhi),
|
|
||||||
0
|
|
||||||
);
|
|
||||||
|
|
||||||
vector meshDir(Zero);
|
vector meshDir(Zero);
|
||||||
if (dom_.meshOrientation() != vector::zero)
|
if (dom_.meshOrientation() != vector::zero)
|
||||||
{
|
{
|
||||||
@ -172,7 +161,6 @@ Foam::radiation::radiativeIntensityRay::radiativeIntensityRay
|
|||||||
|
|
||||||
dAve_ = coordRot & dAve_;
|
dAve_ = coordRot & dAve_;
|
||||||
d_ = coordRot & d_;
|
d_ = coordRot & d_;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (mesh_.nSolutionD() == 1)
|
else if (mesh_.nSolutionD() == 1)
|
||||||
{
|
{
|
||||||
@ -195,9 +183,6 @@ Foam::radiation::radiativeIntensityRay::radiativeIntensityRay
|
|||||||
|
|
||||||
dAve_ = (dAve_ & normal)*meshDir;
|
dAve_ = (dAve_ & normal)*meshDir;
|
||||||
d_ = (d_ & normal)*meshDir;
|
d_ = (d_ & normal)*meshDir;
|
||||||
|
|
||||||
// Omega normalization for 1D
|
|
||||||
omega_ /= 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
autoPtr<volScalarField> IDefaultPtr;
|
autoPtr<volScalarField> IDefaultPtr;
|
||||||
|
Loading…
Reference in New Issue
Block a user