Compare commits

..

1 Commits

Author SHA1 Message Date
742d1dc604 WIP: duplicate constructor entries (#2538)
WIP: Updated multiphaseEuler runtime constructor table names

WIP: Updated multiphaseInter runtime constructor table names

WIP: Updated reactingEuler runtime constructor table names

WIP: Updated twoPhaseEuler runtime constructor table names
2022-08-19 11:01:42 +02:00
1022 changed files with 6823 additions and 15462 deletions

View File

@ -1,2 +1,2 @@
api=2206
patch=220907
patch=0

View File

@ -11,5 +11,4 @@ EXE_LIBS = \
-lfvOptions \
-lmeshTools \
-lsampling \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -1,8 +1,8 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I${LIB_SRC}/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/lagrangian/distributionModels/lnInclude \

View File

@ -26,5 +26,4 @@ EXE_LIBS = \
-ltopoChangerFvMesh \
-lsampling \
-latmosphericModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -21,5 +21,4 @@ EXE_LIBS = \
-lcompressibleTurbulenceModels \
-lthermoTools \
-latmosphericModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -28,5 +28,4 @@ EXE_LIBS = \
-ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -22,5 +22,4 @@ EXE_LIBS = \
-lcompressibleTurbulenceModels \
-lthermoTools \
-latmosphericModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -40,5 +40,4 @@ EXE_LIBS = \
-lthermoTools \
-lradiationModels \
-lregionModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -36,5 +36,5 @@ EXE_LIBS = \
-lfaOptions \
-lregionModels \
-lsampling \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -22,5 +22,4 @@ EXE_LIBS = \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-latmosphericModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -1,7 +1,7 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \

View File

@ -2,10 +2,10 @@ EXE_INC = \
-I../reactingParcelFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I${LIB_SRC}/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/lagrangian/distributionModels/lnInclude \

View File

@ -2,8 +2,8 @@ EXE_INC = \
-I.. \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I${LIB_SRC}/sampling/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \

View File

@ -1,7 +1,7 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \

View File

@ -2,7 +2,7 @@ EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/fvOptions/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \

View File

@ -2,8 +2,8 @@ EXE_INC = \
-I../reactingParcelFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I${LIB_SRC}/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \

View File

@ -4,8 +4,8 @@ EXE_INC = \
-I../../reactingParcelFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I${LIB_SRC}/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \

View File

@ -2,7 +2,7 @@ EXE_INC = \
-I$(FOAM_SOLVERS)/lagrangian/reactingParcelFoam/simpleReactingParcelFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \

View File

@ -4,8 +4,8 @@ EXE_INC = \
-I../../../compressible/rhoPimpleFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
-I${LIB_SRC}/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \

View File

@ -42,5 +42,4 @@ EXE_LIBS = \
-lregionModels \
-lregionFaModels \
-lsurfaceFilmModels \
-lfiniteArea \
-lcompressibleTwoPhaseMixtureTurbulenceModels

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2021-2022 OpenCFD Ltd.
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -104,7 +104,7 @@ void readList
{
OTstream os;
os << input;
ITstream is(os.tokens());
ITstream is("input", os.tokens());
is >> output;
}
@ -118,7 +118,7 @@ void readList
{
OTstream os;
os << input;
ITstream is(os.tokens());
ITstream is("input", os.tokens());
is >> output;
}

View File

@ -1,3 +0,0 @@
Test-FieldFields1.C
EXE = $(FOAM_USER_APPBIN)/Test-FieldFields1

View File

@ -1,117 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2022 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/>.
Application
Test-FieldFields1
\*---------------------------------------------------------------------------*/
#include "symmTensorField.H"
#include "tensorField.H"
#include "FieldFields.H"
#include "Random.H"
using namespace Foam;
template<class Cmpt>
void printFieldField(const FieldField<Field, Cmpt>& ff)
{
forAll(ff, i)
{
Info<< i << ": " << flatOutput(ff[i]) << nl;
}
Info<< nl;
}
template<class Type>
tmp<Field<Type>> randomField(Random& rnd, label dim)
{
auto tfld = tmp<Field<Type>>::New(dim);
auto& fld = tfld.ref();
for (Type& val : fld)
{
for (direction cmpt=0; cmpt < pTraits<Type>::nComponents; ++cmpt)
{
setComponent(val, cmpt) = rnd.position<label>(0, 100);
}
}
return tfld;
}
template<class Type>
tmp<Field<Type>> randomField(label dim)
{
Random rnd;
return randomField<Type>(rnd, dim);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
// scalarField
{
Info<< nl << "scalarFieldField" << nl;
Random rnd;
FieldField<Field, scalar> sff1(6);
forAll(sff1, i)
{
sff1.set(i, randomField<scalar>(rnd, 8));
}
printFieldField(sff1);
Info<< nl << "indexing:" << nl;
{
labelPair index;
const label range1 = sff1.size()-1;
const label range2 = sff1[0].size()-1;
for (label iter = 0; iter < 10; ++iter)
{
index.first() = rnd.position<label>(0, range1);
index.second() = rnd.position<label>(0, range2);
Info<< index << " => " << sff1[index] << nl;
}
}
}
Info<< nl << "End\n" << nl;
return 0;
}
// ************************************************************************* //

View File

@ -1,3 +0,0 @@
Test-FieldFields2.C
EXE = $(FOAM_USER_APPBIN)/Test-FieldFields2

View File

@ -1,2 +0,0 @@
/* EXE_INC = */
/* EXE_LIBS = */

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011 OpenFOAM Foundation
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -31,10 +31,7 @@ Description
#include <memory>
#include <iostream>
#include "autoPtr.H"
#include "refPtr.H"
#include "tmp.H"
#include "PtrMap.H"
#include "primitiveFields.H"
#include "HashPtrTable.H"
using namespace Foam;
@ -253,42 +250,6 @@ int main()
Info<< "Table: " << tbl << nl;
}
{
PtrMap<scalarField> fields;
{
const label patchi = 2;
scalarField fld1(patchi, 5.0);
scalarField fld2(patchi, 8.0);
// assign from tmp<>
fields.set( patchi, (fld1 * fld2));
}
{
const label patchi = 3;
scalarField fld1(patchi, 6.0);
// From tmp (clone)
fields.set(patchi, tmp<scalarField>(fld1));
}
{
const label patchi = 4;
// From refPtr
fields.set(patchi, refPtr<scalarField>::New(patchi, 10.0));
}
Info<< nl
<< "PtrMap:" << nl
<< fields << endl;
}
Info<< "\nEnd" << nl;
return 0;
}

View File

@ -1,3 +1,3 @@
EXE_INC = $(c++LESSWARN)
EXE_INC = ${c++LESSWARN}
/* EXE_LIBS = */

View File

@ -1,3 +1,3 @@
EXE_INC = $(c++LESSWARN)
EXE_INC = ${c++LESSWARN}
/* EXE_LIBS = */

View File

@ -1,3 +1,3 @@
EXE_INC = $(c++LESSWARN)
EXE_INC = ${c++LESSWARN}
/* EXE_LIBS = */

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011 OpenFOAM Foundation
Copyright (C) 2020-2022 OpenCFD Ltd.
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -132,7 +132,7 @@ int main(int argc, char *argv[])
OTstream os;
os << poly;
ITstream is(std::move(os.tokens()));
ITstream is("input", std::move(os.tokens()));
is >> polyfunc;
}

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2018-2022 OpenCFD Ltd.
Copyright (C) 2018-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -27,6 +27,7 @@ License
// #define Foam_autoPtr_deprecate_setMethod
#include <memory>
#include "autoPtr.H"
#include "labelList.H"
#include "ListOps.H"
@ -76,14 +77,6 @@ autoPtr<T> testNullReturn2()
}
template<class T>
struct DerivedList : public List<T>
{
// Inherit constructors
using List<T>::List;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
@ -261,16 +254,6 @@ int main(int argc, char *argv[])
// autoPtr<labelList> ptr2 = testNullReturn2<labelList>();
}
{
auto input1 = autoPtr<DerivedList<label>>::New(label(10), 1);
auto input2 = autoPtr<DerivedList<scalar>>::New(label(10), 1.0);
autoPtr<labelList> ptr1(std::move(input1));
// Does not compile: ptr1 = std::move(input2);
// Does not compile: ptr1 = autoPtr<List<scalar>>::New(label(10), 2);
}
return 0;
}

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020-2022 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -46,8 +46,8 @@ int main(int argc, char *argv[])
profiling::disable(); // No profiling output
argList::noBanner();
argList::noParallel();
argList::noFunctionObjects();
argList::removeOption("case");
argList::removeOption("noFunctionObjects");
argList::addBoolOption("no-close", "Skip dlclose");
argList::addBoolOption("quiet", "Disable verbosity");

View File

@ -1,3 +1,3 @@
EXE_INC = $(c++LESSWARN)
EXE_INC = ${c++LESSWARN}
/* EXE_LIBS = */

View File

@ -1,7 +1,7 @@
EXE_INC = \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude
-I${LIB_SRC}/finiteVolume/lnInclude \
-I${LIB_SRC}/meshTools/lnInclude \
EXE_LIBS = \
-lfiniteArea \

View File

@ -1,4 +1,4 @@
EXE_INC = $(COMP_OPENMP) /* -UUSE_OMP */
EXE_INC = ${COMP_OPENMP} /* -UUSE_OMP */
/* Mostly do not need to explicitly link openmp libraries */
/* EXE_LIBS = $(LINK_OPENMP) */
/* EXE_LIBS = ${LINK_OPENMP} */

View File

@ -55,7 +55,7 @@ void do_exchangeBuf
const bool wait
)
{
const label startOfRequests = UPstream::nRequests();
const label startOfRequests = Pstream::nRequests();
// Set up receives
// ~~~~~~~~~~~~~~~
@ -132,7 +132,7 @@ void do_exchangeContainer
const bool wait
)
{
const label startOfRequests = UPstream::nRequests();
const label startOfRequests = Pstream::nRequests();
// Set up receives
// ~~~~~~~~~~~~~~~

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020-2022 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -19,9 +19,6 @@ Description
\*---------------------------------------------------------------------------*/
#include "primitiveFields.H"
#include "autoPtr.H"
#include "refPtr.H"
#include "tmp.H"
#include "Switch.H"
using namespace Foam;
@ -32,36 +29,6 @@ struct myScalarField : public scalarField
};
template<class T>
void constructInfo()
{
Info<< " move-constructible:"
<< std::is_move_constructible<T>::value
<< " move-assignable:"
<< std::is_move_assignable<T>::value
<< " nothrow:"
<< std::is_nothrow_move_assignable<T>::value
<< " trivially:"
<< std::is_trivially_move_assignable<T>::value
<< nl;
}
template<class T>
void printInfo(const autoPtr<T>& item, const bool verbose = false)
{
Info<< "autoPtr good:" << Switch::name(item.good())
<< " addr: " << Foam::name(item.get());
constructInfo<autoPtr<T>>();
if (verbose && item)
{
Info<< "content: " << item() << nl;
}
}
template<class T>
void printInfo(const refPtr<T>& item, const bool verbose = false)
{
@ -70,24 +37,15 @@ void printInfo(const refPtr<T>& item, const bool verbose = false)
<< " addr: " << Foam::name(item.get())
<< " movable:" << Switch(item.movable());
constructInfo<refPtr<T>>();
if (verbose && item)
{
Info<< "content: " << item() << nl;
}
}
template<class T>
void printInfo(const tmp<T>& item, const bool verbose = false)
{
Info<< "tmp good:" << Switch::name(item.good())
<< " pointer:" << Switch::name(item.is_pointer())
<< " addr: " << Foam::name(item.get())
<< " movable:" << Switch(item.movable());
constructInfo<tmp<T>>();
Info<< " move-constructible:"
<< std::is_move_constructible<refPtr<T>>::value
<< " move-assignable:"
<< std::is_move_assignable<refPtr<T>>::value
<< " nothrow:"
<< std::is_nothrow_move_assignable<refPtr<T>>::value
<< " trivially:"
<< std::is_trivially_move_assignable<refPtr<T>>::value
<< nl;
if (verbose && item)
{
@ -143,62 +101,6 @@ int main()
printInfo(tfld3, true);
}
{
refPtr<scalarField> tfld1;
auto aptr = autoPtr<scalarField>::New(2, scalar(2));
tmp<scalarField> tfld2;
printInfo(tfld2, true);
tfld2 = new scalarField(10, Zero);
/*
tfld2 = aptr.get();
// tfld1.reset(aptr);
// tfld1 = std::move(aptr);
// tfld1 = aptr;
Info<< nl << "From autoPtr" << nl;
printInfo(aptr, true);
//& Info<< nl << "Construct from autoPtr" << nl;
//& // refPtr<scalarField> tfld2(autoPtr<scalarField>::New(10, scalar(2)));
//& printInfo(tfld2, true);
*/
}
{
auto aptr1 = autoPtr<labelField>::New(2, Zero);
//auto aptr1 = autoPtr<scalarField>::New(2, scalar(2));
auto aptr2 = autoPtr<scalarField>::New(2, scalar(2));
refPtr<scalarField> tfld2(std::move(aptr2));
// aptr2 = std::move(aptr1);
}
{
auto tptr1 = tmp<labelField>::New(2, Zero);
auto aptr1 = autoPtr<labelField>::New(2, Zero);
auto tfld2 = refPtr<labelField>::New(2, Zero);
// Deleted: refPtr<labelField> tfld1(aptr1);
refPtr<labelField> tfld1;
// refPtr<labelField> tfld1(std::move(tptr1));
// refPtr<labelField> tfld1(tptr1);
tfld1 = std::move(aptr1);
// tfld1.reset(aptr1);
// tfld1.reset(tfld2);
// tfld1 = std::move(tptr1);
// Does not compile: tfld1.ref(tptr1);
// Deleted: tfld1.cref(tptr1);
// Deleted: tfld1.ref(aptr1);
}
Info<< "\nEnd" << endl;
return 0;

View File

@ -126,9 +126,6 @@ int main(int argc, char *argv[])
testDivide<vector>(vectors);
//(void) compareOp<vector>()(vector::zero, vector::one);
Info<< "\nEnd\n" << endl;
return 0;

View File

@ -0,0 +1,3 @@
Test-tensorFieldFields1.C
EXE = $(FOAM_USER_APPBIN)/Test-tensorFieldFields1

View File

@ -24,7 +24,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
Test-FieldFields2
Test-tensorFieldFields1
\*---------------------------------------------------------------------------*/
@ -73,29 +73,21 @@ void allocComponents
}
template<class Type>
tmp<Field<Type>> randomField(Random& rnd, label dim)
vectorField randomVectorField(label size)
{
auto tfld = tmp<Field<Type>>::New(dim);
auto& fld = tfld.ref();
Random rnd;
for (Type& val : fld)
vectorField vf(size);
forAll(vf, i)
{
for (direction cmpt=0; cmpt < pTraits<Type>::nComponents; ++cmpt)
for (direction cmpt=0; cmpt < vector::nComponents; ++cmpt)
{
setComponent(val, cmpt) = rnd.position<label>(0, 100);
vf[i][cmpt] = rnd.position<label>(0, 100);
}
}
return tfld;
}
template<class Type>
tmp<Field<Type>> randomField(label dim)
{
Random rnd;
return randomField<Type>(rnd, dim);
return vf;
}
@ -199,7 +191,7 @@ int main(int argc, char *argv[])
printFieldField(sf1);
Info<< nl;
for (direction cmpt = 0; cmpt < pTraits<vector>::nComponents; ++cmpt)
for (direction cmpt = 0; cmpt < vector::nComponents; ++cmpt)
{
unzipRow(sf1, cmpt, slice[0]);
@ -261,9 +253,8 @@ int main(int argc, char *argv[])
{
Info<< nl << "vectorField" << nl;
Random rnd;
FieldField<Field, vector> vf1(1);
vf1.set(0, randomField<vector>(rnd, 4));
vf1.set(0, new vectorField(randomVectorField(4)));
FixedList<FieldField<Field, scalar>, 3> cmpts;
allocComponents(cmpts, 4);

View File

@ -34,29 +34,21 @@ Application
using namespace Foam;
template<class Type>
tmp<Field<Type>> randomField(Random& rnd, label dim)
vectorField randomVectorField(label size)
{
auto tfld = tmp<Field<Type>>::New(dim);
auto& fld = tfld.ref();
Random rnd;
for (Type& val : fld)
vectorField vf(size);
forAll(vf, i)
{
for (direction cmpt=0; cmpt < pTraits<Type>::nComponents; ++cmpt)
for (direction cmpt=0; cmpt < vector::nComponents; ++cmpt)
{
setComponent(val, cmpt) = rnd.position<label>(0, 100);
vf[i][cmpt] = rnd.position<label>(0, 100);
}
}
return tfld;
}
template<class Type>
tmp<Field<Type>> randomField(label dim)
{
Random rnd;
return randomField<Type>(rnd, dim);
return vf;
}
@ -259,7 +251,7 @@ int main(int argc, char *argv[])
{
Info<< nl << "vectorField" << nl;
vectorField vf1(randomField<vector>(4));
vectorField vf1(randomVectorField(4));
FixedList<scalarField, 3> cmpts(scalarField(vf1.size()));
Info<< nl

View File

@ -63,6 +63,7 @@ int main(int argc, char *argv[])
argList::addNote("Test timeSelector and TimePaths");
timeSelector::addOptions(true, true);
argList::noLibs();
argList::noFunctionObjects();
argList::addOption("relative", "PATH", "Test relativePath");

View File

@ -19,9 +19,6 @@ Description
\*---------------------------------------------------------------------------*/
#include "primitiveFields.H"
#include "autoPtr.H"
#include "refPtr.H"
#include "tmp.H"
#include "Switch.H"
using namespace Foam;
@ -129,28 +126,6 @@ int main()
printInfo(tfld2);
}
{
auto tptr1 = refPtr<labelField>::New(2, Zero);
auto aptr1 = autoPtr<labelField>::New(2, Zero);
// Deleted: tmp<labelField> tfld1(aptr1);
// tmp<labelField> tfld1(std::move(aptr1));
// tmp<labelField> tfld1(std::move(tptr1));
tmp<labelField> tfld1;
//tfld1.cref(tptr1);
//tfld1.cref(aptr1);
// refPtr<labelField> tfld1(std::move(tptr1));
// refPtr<labelField> tfld1(tptr1);
// tfld1 = std::move(aptr1);
// tfld1 = std::move(tptr1);
// Does not compile: tfld1.ref(tptr1);
// Deleted: tfld1.cref(tptr1);
// Deleted: tfld1.ref(aptr1);
}
Info<< "\nEnd" << endl;
return 0;

View File

@ -116,16 +116,12 @@ Description
{
const faPatch& p = patches[patchi];
// Report physical size (nEdges) not virtual size
Info<< " " << "patch " << p.index()
<< " (size: " << returnReduce(p.nEdges(), sumOp<label>())
<< ") name: " << p.name()
<< nl;
Info<< " " << "patch " << p.index()
<< " (size: " << returnReduce(p.size(), sumOp<label>())
<< ") name: " << p.name()
<< nl;
}
Info<< "----------------" << nl
<< "Used polyPatches: " << flatOutput(aMesh.whichPolyPatches()) << nl;
// Geometry information
Info<< nl;

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2021-2022 OpenCFD Ltd.
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -36,17 +36,12 @@ Description
{
const faPatch& p = patches[patchi];
// Report physical size (nEdges) not virtual size
Info<< " " << "patch " << p.index()
<< " (size: " << returnReduce(p.nEdges(), sumOp<label>())
<< ") name: " << p.name()
<< nl;
Info<< " " << "patch " << p.index()
<< " (size: " << returnReduce(p.size(), sumOp<label>())
<< ") name: " << p.name()
<< nl;
}
Info<< "----------------" << nl
<< "Used polyPatches: " << flatOutput(aMesh.whichPolyPatches()) << nl;
// Geometry information
Info<< nl;
{

View File

@ -226,18 +226,14 @@ int main(int argc, char *argv[])
// Add the boundary patches
const polyBoundaryMesh& patches = mesh.boundaryMesh();
polyPatchList newPatches(patches.size());
List<polyPatch*> p(patches.size());
forAll(newPatches, patchi)
forAll(p, patchi)
{
newPatches.set
(
patchi,
patches[patchi].clone(fMesh.boundaryMesh())
);
p[patchi] = patches[patchi].clone(fMesh.boundaryMesh()).ptr();
}
fMesh.addFvPatches(newPatches);
fMesh.addFvPatches(p);
// Refinement level

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2018-2022 OpenCFD Ltd.
Copyright (C) 2018-2019 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -205,43 +205,34 @@ label addPatch(polyMesh& mesh, const word& patchName)
{
const polyBoundaryMesh& patches = mesh.boundaryMesh();
polyPatchList newPatches(patches.size() + 1);
label nPatches = 0;
List<polyPatch*> newPatches(patches.size() + 1);
// Add empty patch as 0th entry (Note: only since subsetMesh wants this)
patchi = 0;
{
newPatches.set
(
nPatches,
new emptyPolyPatch
(
patchName,
0,
mesh.nInternalFaces(),
nPatches,
patches,
emptyPolyPatch::typeName
)
);
++nPatches;
}
for (const polyPatch& pp : patches)
{
newPatches.set
newPatches[patchi] =
new emptyPolyPatch
(
nPatches,
Foam::word(patchName),
0,
mesh.nInternalFaces(),
patchi,
patches,
emptyPolyPatch::typeName
);
forAll(patches, i)
{
const polyPatch& pp = patches[i];
newPatches[i+1] =
pp.clone
(
patches,
nPatches,
i+1,
pp.size(),
pp.start()
)
);
++nPatches;
).ptr();
}
mesh.removeBoundary();

View File

@ -1678,7 +1678,7 @@ int main(int argc, char *argv[])
label defaultPatchID = mesh.boundaryMesh().findPatchID(defaultFacesName);
if (mesh.boundaryMesh()[defaultPatchID].size() == 0)
{
polyPatchList newPatches((mesh.boundaryMesh().size() - 1));
List<polyPatch*> newPatchPtrList((mesh.boundaryMesh().size() - 1));
label newPatchi = 0;
forAll(mesh.boundaryMesh(), patchi)
{
@ -1686,21 +1686,18 @@ int main(int argc, char *argv[])
{
const polyPatch& patch = mesh.boundaryMesh()[patchi];
newPatches.set
newPatchPtrList[newPatchi] = patch.clone
(
mesh.boundaryMesh(),
newPatchi,
patch.clone
(
mesh.boundaryMesh(),
newPatchi,
patch.size(),
patch.start()
)
);
++newPatchi;
patch.size(),
patch.start()
).ptr();
newPatchi++;
}
}
repatcher.changePatches(newPatches);
repatcher.changePatches(newPatchPtrList);
}
// Set the precision of the points data to 10

View File

@ -1,56 +1,30 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2009 OpenFOAM Foundation
Copyright (C) 2017-2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
Description
Handle merging of patch pairs
\*---------------------------------------------------------------------------*/
// Handle merging of patch pairs
{
wordPairList mergePatchPairs;
// Read in a list of merge patch pairs
// Read in a list of dictionaries for the merge patch pairs
if
(
meshDict.readIfPresent("mergePatchPairs", mergePatchPairs)
&& mergePatchPairs.size()
)
{
Info<< "Merging " << mergePatchPairs.size() << " patch pairs" << nl;
Info<< "Creating merge patch pairs" << nl << endl;
// Cleanup
wordHashSet cleanupPatches(4*mergePatchPairs.size());
wordHashSet cleanupPointZones(2*mergePatchPairs.size());
wordHashSet cleanupFaceZones(2*mergePatchPairs.size());
Info<< " Adding point and face zones" << endl;
Info<< "Adding point and face zones" << endl;
{
const auto& pbm = mesh.boundaryMesh();
auto& pzs = mesh.pointZones(); pzs.clearAddressing();
auto& fzs = mesh.faceZones(); fzs.clearAddressing();
auto& pzs = mesh.pointZones();
pzs.clearAddressing();
auto& fzs = mesh.faceZones();
fzs.clearAddressing();
forAll(mergePatchPairs, pairi)
{
// Patch pairs
const polyPatch& patch0 = pbm[mergePatchPairs[pairi].first()];
const polyPatch& patch1 = pbm[mergePatchPairs[pairi].second()];
const word mergeName
(
mergePatchPairs[pairi].first()
+ mergePatchPairs[pairi].second()
+ Foam::name(pairi)
+ name(pairi)
);
// An empty zone for cut points
@ -63,35 +37,40 @@ Description
pzs
)
);
cleanupPointZones.insert(pzs.last().name());
// Coupling side 0 (master)
// Master patch
const word masterPatchName(mergePatchPairs[pairi].first());
const polyPatch& masterPatch =
mesh.boundaryMesh()[masterPatchName];
fzs.append
(
new faceZone
(
mergeName + "Side0Zone",
identity(patch0.range()),
mergeName + "MasterZone",
identity(masterPatch.range()),
false, // none are flipped
fzs.size(),
fzs
)
);
cleanupFaceZones.insert(fzs.last().name());
// Coupling side 1 (slave)
// Slave patch
const word slavePatchName(mergePatchPairs[pairi].second());
const polyPatch& slavePatch =
mesh.boundaryMesh()[slavePatchName];
fzs.append
(
new faceZone
(
mergeName + "Side1Zone",
identity(patch1.range()),
mergeName + "SlaveZone",
identity(slavePatch.range()),
false, // none are flipped
fzs.size(),
fzs
)
);
cleanupFaceZones.insert(fzs.last().name());
// An empty zone for cut faces
fzs.append
@ -103,38 +82,35 @@ Description
fzs
)
);
cleanupFaceZones.insert(fzs.last().name());
}
} // end of all merge pairs
}
Info<< " Merging with attachPolyTopoChanger" << endl;
Info<< "Creating attachPolyTopoChanger" << endl;
attachPolyTopoChanger polyMeshAttacher(mesh);
polyMeshAttacher.resize(1);
polyMeshAttacher.setSize(mergePatchPairs.size());
forAll(mergePatchPairs, pairi)
{
cleanupPatches.insert(mergePatchPairs[pairi].first());
cleanupPatches.insert(mergePatchPairs[pairi].second());
const word mergeName
(
mergePatchPairs[pairi].first()
+ mergePatchPairs[pairi].second()
+ Foam::name(pairi)
+ name(pairi)
);
// Add the sliding interface mesh modifier
polyMeshAttacher.set
(
0,
pairi,
new slidingInterface
(
"couple" + Foam::name(pairi),
"couple" + name(pairi),
pairi,
polyMeshAttacher,
mergeName + "Side0Zone",
mergeName + "Side1Zone",
mergeName + "MasterZone",
mergeName + "SlaveZone",
mergeName + "CutPointZone",
mergeName + "CutFaceZone",
mergePatchPairs[pairi].first(),
@ -144,135 +120,12 @@ Description
intersection::VISIBLE
)
);
polyMeshAttacher.attach(false); // Do not yet remove empty patches
}
// Re-do the boundary patches, removing empty merge patches
// but keeping any other empty patches
{
const polyBoundaryMesh& oldPatches = mesh.boundaryMesh();
polyPatchList newPatches(oldPatches.size());
label nNewPatches = 0;
wordHashSet removedPatches(cleanupPatches.capacity());
forAll(oldPatches, patchi)
{
const word& patchName = oldPatches[patchi].name();
if
(
!cleanupPatches.found(patchName)
|| returnReduceOr(oldPatches[patchi].size())
)
{
newPatches.set
(
nNewPatches,
oldPatches[patchi].clone
(
mesh.boundaryMesh(),
nNewPatches,
oldPatches[patchi].size(),
oldPatches[patchi].start()
)
);
++nNewPatches;
}
else
{
removedPatches.insert(patchName);
}
}
newPatches.resize(nNewPatches);
mesh.removeBoundary();
mesh.addPatches(newPatches);
Info<< "Removed " << removedPatches.size()
<< " empty merged patches:" << nl
<< " " << flatOutput(removedPatches.sortedToc()) << endl;
}
// Cleanup empty merged point zones
{
PtrList<pointZone>& zones = mesh.pointZones();
mesh.pointZones().clearAddressing();
wordHashSet removedZones(2*zones.size());
label nZones = 0;
forAll(zones, zonei)
{
if
(
!cleanupPointZones.found(zones[zonei].name())
|| returnReduceOr(zones[zonei].size())
)
{
zones.set(nZones, zones.release(zonei));
zones[nZones].index() = nZones; // re-index
++nZones;
}
else
{
removedZones.insert(zones[zonei].name());
}
}
zones.resize(nZones);
if (removedZones.size())
{
Info<< "Removed " << removedZones.size()
<< " empty point zones:" << nl
<< " " << flatOutput(removedZones.sortedToc()) << endl;
}
}
// Cleanup empty merged face zones
{
PtrList<faceZone>& zones = mesh.faceZones();
mesh.faceZones().clearAddressing();
wordHashSet removedZones(2*zones.size());
label nZones = 0;
forAll(zones, zonei)
{
if
(
!cleanupFaceZones.found(zones[zonei].name())
|| returnReduceOr(zones[zonei].size())
)
{
zones.set(nZones, zones.release(zonei));
zones[nZones].index() = nZones; // re-index
++nZones;
}
else
{
removedZones.insert(zones[zonei].name());
}
}
zones.resize(nZones);
if (removedZones.size())
{
Info<< "Removed " << removedZones.size()
<< " empty merged face zones:" << nl
<< " " << flatOutput(removedZones.sortedToc()) << endl;
}
}
polyMeshAttacher.attach(true);
}
else
{
Info<< "No patch pairs to merge" << endl;
Info<< nl << "There are no merge patch pairs" << endl;
}
}
// ************************************************************************* //

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2013-2016 OpenFOAM Foundation
Copyright (C) 2021-2022 OpenCFD Ltd.
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -167,32 +167,28 @@ int main(int argc, char *argv[])
);
Info<< "Constructing patches." << endl;
polyPatchList newPatches(poly2DMesh.patchNames().size());
label nPatches = 0;
List<polyPatch*> patches(poly2DMesh.patchNames().size());
label countPatches = 0;
forAll(newPatches, patchi)
forAll(patches, patchi)
{
if (poly2DMesh.patchSizes()[patchi] != 0)
{
newPatches.set
patches[countPatches] = new polyPatch
(
nPatches,
new polyPatch
(
poly2DMesh.patchNames()[patchi],
poly2DMesh.patchSizes()[patchi],
poly2DMesh.patchStarts()[patchi],
nPatches,
pMesh.boundaryMesh(),
word::null
)
poly2DMesh.patchNames()[patchi],
poly2DMesh.patchSizes()[patchi],
poly2DMesh.patchStarts()[patchi],
countPatches,
pMesh.boundaryMesh(),
word::null
);
++nPatches;
countPatches++;
}
}
newPatches.resize(nPatches);
pMesh.addPatches(newPatches);
patches.setSize(countPatches);
pMesh.addPatches(patches);
if (extrude)
{

View File

@ -191,7 +191,7 @@ int main(int argc, char *argv[])
const PtrList<boundaryPatch>& patches = bMesh.patches();
// Create new list of patches with old ones first
polyPatchList newPatches(patches.size());
List<polyPatch*> newPatchPtrList(patches.size());
newPatchi = 0;
@ -200,41 +200,34 @@ int main(int argc, char *argv[])
{
const polyPatch& patch = mesh.boundaryMesh()[patchi];
newPatches.set
(
newPatchi,
newPatchPtrList[newPatchi] =
patch.clone
(
mesh.boundaryMesh(),
newPatchi,
patch.size(),
patch.start()
)
);
).ptr();
++newPatchi;
newPatchi++;
}
// Add new ones with empty size.
for (label patchi = newPatchi; patchi < patches.size(); patchi++)
{
const word& patchName = patches[patchi].name();
const boundaryPatch& bp = patches[patchi];
newPatches.set
newPatchPtrList[newPatchi] = polyPatch::New
(
polyPatch::typeName,
bp.name(),
0,
mesh.nFaces(),
newPatchi,
polyPatch::New
(
polyPatch::typeName,
patchName,
0,
mesh.nFaces(),
newPatchi,
mesh.boundaryMesh()
)
);
mesh.boundaryMesh()
).ptr();
++newPatchi;
newPatchi++;
}
if (!overwrite)
@ -245,7 +238,7 @@ int main(int argc, char *argv[])
// Change patches
repatchPolyTopoChanger polyMeshRepatcher(mesh);
polyMeshRepatcher.changePatches(newPatches);
polyMeshRepatcher.changePatches(newPatchPtrList);
// Change face ordering

View File

@ -40,7 +40,6 @@ License
#include "vtkSurfaceWriter.H"
#include "checkTools.H"
#include "treeBoundBox.H"
#include "syncTools.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -49,113 +48,25 @@ void Foam::checkPatch
(
const bool allGeometry,
const word& name,
const polyMesh& mesh,
const PatchType& pp,
const labelList& meshFaces,
const labelList& meshEdges,
pointSet& points
)
{
typedef typename PatchType::surfaceTopo TopoType;
const label globalSize = returnReduce(pp.size(), sumOp<label>());
Info<< " "
<< setw(20) << name
<< setw(9) << globalSize
<< setw(9) << returnReduce(pp.size(), sumOp<label>())
<< setw(9) << returnReduce(pp.nPoints(), sumOp<label>());
if (globalSize == 0)
{
Info<< setw(34) << "ok (empty)";
}
else if (Pstream::parRun())
{
// Parallel - use mesh edges
// - no check for point-pinch
// - no check for consistent orientation (if that is posible to
// check?)
// (see addPatchCellLayer::globalEdgeFaces)
// From mesh edge to global face labels. Non-empty sublists only for
// pp edges.
labelListList globalEdgeFaces(mesh.nEdges());
const labelListList& edgeFaces = pp.edgeFaces();
// Global numbering
const globalIndex globalFaces(mesh.nFaces());
forAll(edgeFaces, edgei)
{
label meshEdgei = meshEdges[edgei];
const labelList& eFaces = edgeFaces[edgei];
// Store face and processor as unique tag.
labelList& globalEFaces = globalEdgeFaces[meshEdgei];
globalEFaces.setSize(eFaces.size());
forAll(eFaces, i)
{
globalEFaces[i] = globalFaces.toGlobal(meshFaces[eFaces[i]]);
}
//Pout<< "At edge:" << meshEdgei
// << " ctr:" << mesh.edges()[meshEdgei].centre(mesh.points())
// << " have eFaces:" << globalEdgeFaces[meshEdgei]
// << endl;
}
//DebugVar(globalEdgeFaces);
// Synchronise across coupled edges.
syncTools::syncEdgeList
(
mesh,
globalEdgeFaces,
ListOps::uniqueEqOp<label>(),
labelList() // null value
);
//DebugVar(globalEdgeFaces);
label labelTyp = TopoType::MANIFOLD;
forAll(meshEdges, edgei)
{
const label meshEdgei = meshEdges[edgei];
const labelList& globalEFaces = globalEdgeFaces[meshEdgei];
if (globalEFaces.size() == 1)
{
//points.insert(mesh.edges()[meshEdgei]);
labelTyp = max(labelTyp, TopoType::OPEN);
}
else if (globalEFaces.size() == 0 || globalEFaces.size() > 2)
{
points.insert(mesh.edges()[meshEdgei]);
labelTyp = max(labelTyp, TopoType::ILLEGAL);
}
}
reduce(labelTyp, maxOp<label>());
if (labelTyp == TopoType::MANIFOLD)
{
Info<< setw(34) << "ok (closed singly connected)";
}
else if (labelTyp == TopoType::OPEN)
{
Info<< setw(34)
<< "ok (non-closed singly connected)";
}
else
{
Info<< setw(34)
<< "multiply connected (shared edge)";
}
}
else
if (!Pstream::parRun())
{
typedef typename PatchType::surfaceTopo TopoType;
TopoType pTyp = pp.surfaceType();
if (pTyp == TopoType::MANIFOLD)
if (pp.empty())
{
Info<< setw(34) << "ok (empty)";
}
else if (pTyp == TopoType::MANIFOLD)
{
if (pp.checkPointManifold(true, &points))
{
@ -638,8 +549,15 @@ Foam::label Foam::checkTopology
);
{
Info<< "\nChecking patch topology for multiply connected"
if (!Pstream::parRun())
{
Info<< "\nChecking patch topology for multiply connected"
<< " surfaces..." << endl;
}
else
{
Info<< "\nChecking basic patch addressing..." << endl;
}
const polyBoundaryMesh& patches = mesh.boundaryMesh();
@ -648,8 +566,11 @@ Foam::label Foam::checkTopology
Info<< " "
<< setw(20) << "Patch"
<< setw(9) << "Faces"
<< setw(9) << "Points"
<< "Surface topology";
<< setw(9) << "Points";
if (!Pstream::parRun())
{
Info<< setw(34) << "Surface topology";
}
if (allGeometry)
{
Info<< " Bounding box";
@ -662,16 +583,7 @@ Foam::label Foam::checkTopology
if (!isA<processorPolyPatch>(pp))
{
checkPatch
(
allGeometry,
pp.name(),
mesh,
pp,
identity(pp.size(), pp.start()),
pp.meshEdges(),
points
);
checkPatch(allGeometry, pp.name(), pp, points);
Info<< endl;
}
}
@ -680,8 +592,15 @@ Foam::label Foam::checkTopology
}
{
Info<< "\nChecking faceZone topology for multiply connected"
<< " surfaces..." << endl;
if (!Pstream::parRun())
{
Info<< "\nChecking faceZone topology for multiply connected"
<< " surfaces..." << endl;
}
else
{
Info<< "\nChecking basic faceZone addressing..." << endl;
}
Pout.setf(ios_base::left);
@ -692,8 +611,12 @@ Foam::label Foam::checkTopology
Info<< " "
<< setw(20) << "FaceZone"
<< setw(9) << "Faces"
<< setw(9) << "Points"
<< setw(34) << "Surface topology";
<< setw(9) << "Points";
if (!Pstream::parRun())
{
Info<< setw(34) << "Surface topology";
}
if (allGeometry)
{
Info<< " Bounding box";
@ -702,16 +625,7 @@ Foam::label Foam::checkTopology
for (const faceZone& fz : faceZones)
{
checkPatch
(
allGeometry,
fz.name(),
mesh,
fz(), // patch
fz, // mesh face labels
fz.meshEdges(), // mesh edge labels
points
);
checkPatch(allGeometry, fz.name(), fz(), points);
Info<< endl;
}
}

View File

@ -1,4 +1,4 @@
#include "labelList.H"
#include "label.H"
#include "autoPtr.H"
namespace Foam
@ -14,10 +14,7 @@ namespace Foam
(
const bool allGeometry,
const word& name,
const polyMesh& mesh,
const PatchType& pp,
const labelList& meshFaces,
const labelList& meshEdges,
pointSet& points
);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2016-2022 OpenCFD Ltd.
Copyright (C) 2016 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -136,55 +136,46 @@ void Foam::mergePolyMesh::sortProcessorPatches()
const polyBoundaryMesh& oldPatches = boundaryMesh();
polyPatchList newPatches(oldPatches.size());
DynamicList<polyPatch*> newPatches(oldPatches.size());
labelList oldToSorted(oldPatches.size());
label nPatches = 0;
forAll(oldPatches, patchi)
{
const polyPatch& pp = oldPatches[patchi];
if (!isA<processorPolyPatch>(pp))
{
newPatches.set
oldToSorted[patchi] = newPatches.size();
newPatches.append
(
nPatches,
pp.clone
(
oldPatches,
nPatches,
0,
nInternalFaces()
)
);
oldToSorted[patchi] = nPatches;
++nPatches;
}
}
forAll(oldPatches, patchi)
{
const polyPatch& pp = oldPatches[patchi];
if (isA<processorPolyPatch>(pp))
{
newPatches.set
(
nPatches,
pp.clone
(
oldPatches,
oldToSorted[patchi],
0,
nInternalFaces()
)
).ptr()
);
}
}
forAll(oldPatches, patchi)
{
const polyPatch& pp = oldPatches[patchi];
oldToSorted[patchi] = nPatches;
++nPatches;
if (isA<processorPolyPatch>(pp))
{
oldToSorted[patchi] = newPatches.size();
newPatches.append
(
pp.clone
(
oldPatches,
oldToSorted[patchi],
0,
nInternalFaces()
).ptr()
);
}
}
@ -470,7 +461,7 @@ void Foam::mergePolyMesh::merge()
{
Info<< "Copying old patches" << endl;
polyPatchList newPatches(patchNames_.size());
List<polyPatch*> newPatches(patchNames_.size());
const polyBoundaryMesh& oldPatches = boundaryMesh();
@ -479,11 +470,7 @@ void Foam::mergePolyMesh::merge()
for (patchi = 0; patchi < oldPatches.size(); patchi++)
{
newPatches.set
(
patchi,
oldPatches[patchi].clone(oldPatches)
);
newPatches[patchi] = oldPatches[patchi].clone(oldPatches).ptr();
}
Info<< "Adding new patches. " << endl;
@ -500,18 +487,15 @@ void Foam::mergePolyMesh::merge()
dict.set("nFaces", 0);
dict.set("startFace", endOfLastPatch);
newPatches.set
newPatches[patchi] =
(
patchi,
polyPatch::New
(
polyPatch::New
(
patchNames_[patchi],
dict,
patchi,
oldPatches
)
)
patchNames_[patchi],
dict,
patchi,
oldPatches
).ptr()
);
}

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -404,24 +404,20 @@ Foam::mirrorFvMesh::mirrorFvMesh
fvMesh& pMesh = mirrorMeshPtr_();
// Add the boundary patches
polyPatchList newPatches(newPatchSizes.size());
List<polyPatch*> p(newPatchSizes.size());
forAll(newPatches, patchi)
forAll(p, patchi)
{
newPatches.set
p[patchi] = boundaryMesh()[patchi].clone
(
pMesh.boundaryMesh(),
patchi,
boundaryMesh()[patchi].clone
(
pMesh.boundaryMesh(),
patchi,
newPatchSizes[patchi],
newPatchStarts[patchi]
)
);
newPatchSizes[patchi],
newPatchStarts[patchi]
).ptr();
}
pMesh.addPatches(newPatches);
pMesh.addPatches(p);
}

View File

@ -3,7 +3,7 @@
*/
EXE_INC = \
$(COMP_FLAGS) \
${COMP_FLAGS} \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -564,7 +564,7 @@ int main(int argc, char *argv[])
mesh.faceZones()
(
mergePatchName + "Side0Zone",
mergePatchName + "MasterZone",
true // verbose
).resetAddressing(std::move(faceIds), false);
@ -574,7 +574,7 @@ int main(int argc, char *argv[])
mesh.faceZones()
(
mergePatchName + "Side1Zone",
mergePatchName + "SlaveZone",
true // verbose
).resetAddressing(std::move(faceIds), false);
@ -595,8 +595,8 @@ int main(int argc, char *argv[])
"couple" + Foam::name(actioni),
0,
stitcher,
mergePatchName + "Side0Zone",
mergePatchName + "Side1Zone",
mergePatchName + "MasterZone",
mergePatchName + "SlaveZone",
mergePatchName + "CutPointZone",
cutZoneName,
masterPatchName,

View File

@ -62,8 +62,8 @@ Usage
-rotate-z angle
Rotate (degrees) about z-axis.
or -yawPitchRoll : (yaw pitch roll) degrees
or -rollPitchYaw : (roll pitch yaw) degrees
or -yawPitchRoll (yawdegrees pitchdegrees rolldegrees)
or -rollPitchYaw (rolldegrees pitchdegrees yawdegrees)
-scale scalar|vector
Scale the points by the given scalar or vector on output.
@ -268,18 +268,15 @@ int main(int argc, char *argv[])
);
argList::addBoolOption
(
"auto-centre",
"Use bounding box centre as centre for rotations"
"auto-origin",
"Use bounding box centre as origin for rotations"
);
argList::addOption
(
"centre",
"origin",
"point",
"Use specified <point> as centre for rotations"
"Use specified <point> as origin for rotations"
);
argList::addOptionCompat("auto-centre", {"auto-origin", 2206});
argList::addOptionCompat("centre", {"origin", 2206});
argList::addOption
(
"rotate",
@ -440,18 +437,18 @@ int main(int argc, char *argv[])
points += v;
}
vector rotationCentre;
bool useRotationCentre = args.readIfPresent("centre", rotationCentre);
if (args.found("auto-centre") && !useRotationCentre)
vector origin;
bool useOrigin = args.readIfPresent("origin", origin);
if (args.found("auto-origin") && !useOrigin)
{
useRotationCentre = true;
rotationCentre = boundBox(points).centre();
useOrigin = true;
origin = boundBox(points).centre();
}
if (useRotationCentre)
if (useOrigin)
{
Info<< "Set centre of rotation to " << rotationCentre << endl;
points -= rotationCentre;
Info<< "Set origin for rotations to " << origin << endl;
points -= origin;
}
@ -548,15 +545,15 @@ int main(int argc, char *argv[])
}
}
if (useRotationCentre)
{
Info<< "Unset centre of rotation from " << rotationCentre << endl;
points += rotationCentre;
}
// Output scaling
applyScaling(points, getScalingOpt("scale", args));
if (useOrigin)
{
Info<< "Unset origin for rotations from " << origin << endl;
points += origin;
}
// Set the precision of the points data to 10
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020-2022 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -65,8 +65,8 @@ int main(int argc, char *argv[])
profiling::disable(); // No profiling output
argList::noBanner();
argList::noParallel();
argList::noFunctionObjects();
argList::removeOption("case");
argList::removeOption("noFunctionObjects");
argList::addBoolOption
(
"or",

View File

@ -1014,9 +1014,7 @@ int main(int argc, char *argv[])
Time::controlDictName,
args.rootPath(),
args.caseName()
/ ("processor" + Foam::name(proci)),
args.allowFunctionObjects(),
args.allowLibs()
/ ("processor" + Foam::name(proci))
)
);
}

View File

@ -244,9 +244,7 @@ int main(int argc, char *argv[])
(
Time::controlDictName,
args.rootPath(),
args.caseName()/("processor" + Foam::name(proci)),
args.allowFunctionObjects(),
args.allowLibs()
args.caseName()/("processor" + Foam::name(proci))
)
);
}

View File

@ -731,9 +731,7 @@ int main(int argc, char *argv[])
(
Time::controlDictName,
args.rootPath(),
args.caseName()/("processor" + Foam::name(proci)),
args.allowFunctionObjects(),
args.allowLibs()
args.caseName()/("processor" + Foam::name(proci))
)
);
}
@ -1186,7 +1184,7 @@ int main(int argc, char *argv[])
false
);
masterMeshPtr.cref(fvMeshes[0]);
masterMeshPtr = fvMeshes[0];
}

View File

@ -168,6 +168,7 @@ int main(int argc, char *argv[])
// Less frequently used - reduce some clutter
argList::setAdvanced("decomposeParDict");
argList::setAdvanced("noFunctionObjects");
argList::addVerboseOption("Additional verbosity");

View File

@ -65,7 +65,7 @@ label writeDimFields
{
typedef VolumeInternalField<Type> FieldType;
const auto& mesh = refCast<const fvMesh>(ensMesh.mesh());
const fvMesh& mesh = dynamicCast<const fvMesh>(ensMesh.mesh());
label count = 0;

View File

@ -88,7 +88,7 @@ label writeVolFields
{
typedef VolumeField<Type> FieldType;
const auto& mesh = refCast<const fvMesh>(ensMesh.mesh());
const fvMesh& mesh = dynamicCast<const fvMesh>(ensMesh.mesh());
label count = 0;

View File

@ -268,6 +268,7 @@ int main(int argc, char *argv[])
// Less frequently used - reduce some clutter
argList::setAdvanced("decomposeParDict");
argList::setAdvanced("noFunctionObjects");
argList::addVerboseOption("Additional verbosity");

View File

@ -87,6 +87,7 @@ int main(int argc, char *argv[])
// Less frequently used - reduce some clutter
argList::setAdvanced("decomposeParDict");
argList::setAdvanced("noFunctionObjects");
argList::addOption
(

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -100,9 +100,7 @@ int main(int argc, char *argv[])
(
Time::controlDictName,
args.rootPath(),
args.caseName()/("processor" + Foam::name(proci)),
args.allowFunctionObjects(),
args.allowLibs()
args.caseName()/("processor" + Foam::name(proci))
)
);
}

View File

@ -43,8 +43,7 @@ void evaluateConstraintTypes(GeometricField<Type, fvPatchField, volMesh>& fld)
{
auto& fldBf = fld.boundaryFieldRef();
const UPstream::commsTypes commsType = UPstream::defaultCommsType;
const label startOfRequests = UPstream::nRequests();
const UPstream::commsTypes commsType(UPstream::defaultCommsType);
if
(
@ -52,6 +51,8 @@ void evaluateConstraintTypes(GeometricField<Type, fvPatchField, volMesh>& fld)
|| commsType == UPstream::commsTypes::nonBlocking
)
{
const label startOfRequests = UPstream::nRequests();
forAll(fldBf, patchi)
{
fvPatchField<Type>& tgtField = fldBf[patchi];
@ -67,7 +68,11 @@ void evaluateConstraintTypes(GeometricField<Type, fvPatchField, volMesh>& fld)
}
// Wait for outstanding requests
if (commsType == UPstream::commsTypes::nonBlocking)
if
(
UPstream::parRun()
&& commsType == UPstream::commsTypes::nonBlocking
)
{
UPstream::waitRequests(startOfRequests);
}

View File

@ -56,7 +56,6 @@ using namespace Foam;
int main(int argc, char *argv[])
{
// Normally without functionObjects, with -withFunctionObjects to enable
argList::noFunctionObjects(true);
// No -constant, no special treatment for 0/

View File

@ -494,7 +494,6 @@ void evaluate
int main(int argc, char *argv[])
{
// Normally without functionObjects, with -withFunctionObjects to enable
argList::noFunctionObjects(true);
// No -constant, no special treatment for 0/
@ -742,7 +741,7 @@ int main(int argc, char *argv[])
);
}
if (args.allowFunctionObjects())
if (args.found("withFunctionObjects"))
{
runTime.functionObjects().start();
}

View File

@ -1,10 +1,8 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfiniteArea \
-lmeshTools \
-lgenericPatchFields

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -38,312 +37,215 @@ Description
#include "argList.H"
#include "Time.H"
#include "fvMesh.H"
#include "faMesh.H"
#include "topoSetSource.H"
#include "cellSet.H"
#include "faceSet.H"
#include "volFields.H"
#include "areaFields.H"
using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//- Simple tuple of field type and name (read from stream)
class fieldDescription
{
word type_;
word name_;
public:
const word& type() const noexcept { return type_; }
const word& name() const noexcept { return name_; }
explicit fieldDescription(Istream& is)
{
is >> type_;
is >> name_;
// Eg, read as "volScalarFieldValue", but change to "volScalarField"
if (type_.ends_with("Value"))
{
type_.erase(type_.size()-5);
}
}
};
// Consume unused field information
template<class Type>
bool consumeUnusedType(const fieldDescription& fieldDesc, Istream& is)
{
typedef GeometricField<Type, faPatchField, areaMesh> fieldType1;
typedef GeometricField<Type, fvPatchField, volMesh> fieldType2;
//? typedef GeometricField<Type, faePatchField, areaMesh> fieldType3;
//? typedef GeometricField<Type, fvsPatchField, volMesh> fieldType4;
if
(
fieldDesc.type() == fieldType1::typeName
|| fieldDesc.type() == fieldType2::typeName
)
{
(void) pTraits<Type>(is);
return true;
}
return false;
}
// Consume unused field information
static bool consumeUnused(const fieldDescription& fieldDesc, Istream& is)
{
return
(
consumeUnusedType<scalar>(fieldDesc, is)
|| consumeUnusedType<vector>(fieldDesc, is)
|| consumeUnusedType<sphericalTensor>(fieldDesc, is)
|| consumeUnusedType<symmTensor>(fieldDesc, is)
|| consumeUnusedType<tensor>(fieldDesc, is)
);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Setting volume fields
template<class Type>
bool setCellFieldType
(
const fieldDescription& fieldDesc,
const word& fieldTypeDesc,
const fvMesh& mesh,
const labelList& selectedCells,
Istream& is
Istream& fieldValueStream
)
{
typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
if (fieldDesc.type() != fieldType::typeName)
if (fieldTypeDesc != fieldType::typeName + "Value")
{
return false;
}
// Get value from stream
const Type fieldValue = pTraits<Type>(is);
word fieldName(fieldValueStream);
// Check the current time directory
IOobject fieldHeader
(
fieldDesc.name(),
mesh.thisDb().time().timeName(),
mesh.thisDb(),
fieldName,
mesh.time().timeName(),
mesh,
IOobject::MUST_READ
);
bool found = fieldHeader.typeHeaderOk<fieldType>(true);
if (!found)
// Check the "constant" directory
if (!fieldHeader.typeHeaderOk<fieldType>(true))
{
// Fallback to "constant" directory
fieldHeader = IOobject
(
fieldDesc.name(),
mesh.thisDb().time().constant(),
mesh.thisDb(),
fieldName,
mesh.time().constant(),
mesh,
IOobject::MUST_READ
);
found = fieldHeader.typeHeaderOk<fieldType>(true);
}
// Field exists
if (found)
// Check field exists
if (fieldHeader.typeHeaderOk<fieldType>(true))
{
Info<< " - set internal values of "
Info<< " Setting internal values of "
<< fieldHeader.headerClassName()
<< ": " << fieldDesc.name()
<< " = " << fieldValue << endl;
<< " " << fieldName << endl;
fieldType field(fieldHeader, mesh, false);
if (isNull(selectedCells) || selectedCells.size() == field.size())
const Type value = pTraits<Type>(fieldValueStream);
if (selectedCells.size() == field.size())
{
field.primitiveFieldRef() = fieldValue;
field.primitiveFieldRef() = value;
}
else
{
for (const label celli : selectedCells)
forAll(selectedCells, celli)
{
field[celli] = fieldValue;
field[selectedCells[celli]] = value;
}
}
// Make boundary fields consistent - treat like zeroGradient
for (auto& pfld : field.boundaryFieldRef())
typename GeometricField<Type, fvPatchField, volMesh>::
Boundary& fieldBf = field.boundaryFieldRef();
forAll(field.boundaryField(), patchi)
{
pfld = pfld.patchInternalField();
fieldBf[patchi] = fieldBf[patchi].patchInternalField();
}
if (!field.write())
{
FatalErrorInFunction
<< "Failed writing field " << field.name() << endl;
<< "Failed writing field " << fieldName << endl;
}
}
else
{
Warning
<< "Field " << fieldDesc.name() << " not found" << endl;
WarningInFunction
<< "Field " << fieldName << " not found" << endl;
// Consume value
(void)pTraits<Type>(fieldValueStream);
}
return true;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Setting finite-area face fields
template<class Type>
bool setAreaFieldType
(
const fieldDescription& fieldDesc,
const faMesh& mesh,
const labelList& selectedFaces,
Istream& is
)
class setCellField
{
typedef GeometricField<Type, faPatchField, areaMesh> fieldType;
if (fieldDesc.type() != fieldType::typeName)
public:
setCellField()
{}
autoPtr<setCellField> clone() const
{
return false;
return autoPtr<setCellField>::New();
}
// Get value from stream
const Type fieldValue = pTraits<Type>(is);
// Check the current time directory
IOobject fieldHeader
(
fieldDesc.name(),
mesh.thisDb().time().timeName(),
mesh.thisDb(),
IOobject::MUST_READ
);
bool found = fieldHeader.typeHeaderOk<fieldType>(true);
if (!found)
class iNew
{
// Fallback to "constant" directory
fieldHeader = IOobject
(
fieldDesc.name(),
mesh.thisDb().time().constant(),
mesh.thisDb(),
IOobject::MUST_READ
);
found = fieldHeader.typeHeaderOk<fieldType>(true);
}
const fvMesh& mesh_;
const labelList& selectedCells_;
// Field exists
if (found)
{
Info<< " - set internal values of "
<< fieldHeader.headerClassName()
<< ": " << fieldDesc.name()
<< " = " << fieldValue << endl;
public:
fieldType field(fieldHeader, mesh);
iNew(const fvMesh& mesh, const labelList& selectedCells)
:
mesh_(mesh),
selectedCells_(selectedCells)
{}
if (isNull(selectedFaces) || selectedFaces.size() == field.size())
iNew(const fvMesh& mesh, labelList&& selectedCells)
:
mesh_(mesh),
selectedCells_(std::move(selectedCells))
{}
autoPtr<setCellField> operator()(Istream& fieldValues) const
{
field.primitiveFieldRef() = fieldValue;
}
else
{
for (const label facei : selectedFaces)
word fieldType(fieldValues);
if
(
!(
setCellFieldType<scalar>
(fieldType, mesh_, selectedCells_, fieldValues)
|| setCellFieldType<vector>
(fieldType, mesh_, selectedCells_, fieldValues)
|| setCellFieldType<sphericalTensor>
(fieldType, mesh_, selectedCells_, fieldValues)
|| setCellFieldType<symmTensor>
(fieldType, mesh_, selectedCells_, fieldValues)
|| setCellFieldType<tensor>
(fieldType, mesh_, selectedCells_, fieldValues)
)
)
{
field[facei] = fieldValue;
WarningInFunction
<< "field type " << fieldType << " not currently supported"
<< endl;
}
return autoPtr<setCellField>::New();
}
if (!field.write())
{
FatalErrorInFunction
<< "Failed writing field " << field.name() << endl;
}
}
else
{
Warning
<< "Field " << fieldDesc.name() << " not found" << endl;
}
return true;
}
};
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Setting volume boundary fields
template<class Type>
bool setFaceFieldType
(
const fieldDescription& fieldDesc,
const word& fieldTypeDesc,
const fvMesh& mesh,
const labelList& selectedFaces,
Istream& is
Istream& fieldValueStream
)
{
typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
if (fieldDesc.type() != fieldType::typeName)
if (fieldTypeDesc != fieldType::typeName + "Value")
{
return false;
}
// Get value from stream
const Type fieldValue = pTraits<Type>(is);
word fieldName(fieldValueStream);
// Check the current time directory
IOobject fieldHeader
(
fieldDesc.name(),
mesh.thisDb().time().timeName(),
mesh.thisDb(),
fieldName,
mesh.time().timeName(),
mesh,
IOobject::MUST_READ
);
bool found = fieldHeader.typeHeaderOk<fieldType>(true);
if (!found)
// Check the "constant" directory
if (!fieldHeader.typeHeaderOk<fieldType>(true))
{
// Fallback to "constant" directory
fieldHeader = IOobject
(
fieldDesc.name(),
mesh.thisDb().time().constant(),
mesh.thisDb(),
fieldName,
mesh.time().constant(),
mesh,
IOobject::MUST_READ
);
found = fieldHeader.typeHeaderOk<fieldType>(true);
}
// Field exists
if (found)
// Check field exists
if (fieldHeader.typeHeaderOk<fieldType>(true))
{
Info<< " - set boundary values of "
Info<< " Setting patchField values of "
<< fieldHeader.headerClassName()
<< ": " << fieldDesc.name()
<< " = " << fieldValue << endl;
<< " " << fieldName << endl;
fieldType field(fieldHeader, mesh);
const Type value = pTraits<Type>(fieldValueStream);
// Create flat list of selected faces and their value.
Field<Type> allBoundaryValues(mesh.nBoundaryFaces());
forAll(field.boundaryField(), patchi)
@ -358,47 +260,34 @@ bool setFaceFieldType
}
// Override
unsigned hasWarned = 0;
bool hasWarned = false;
labelList nChanged
(
returnReduce(field.boundaryField().size(), maxOp<label>()),
Zero
0
);
for (const label facei : selectedFaces)
forAll(selectedFaces, i)
{
const label bFacei = facei-mesh.nInternalFaces();
if (bFacei < 0)
label facei = selectedFaces[i];
if (mesh.isInternalFace(facei))
{
if (!(hasWarned & 1))
if (!hasWarned)
{
hasWarned |= 1;
hasWarned = true;
WarningInFunction
<< "Ignoring internal face " << facei
<< ". Suppressing further warnings." << endl;
}
}
else if (bFacei >= mesh.nBoundaryFaces())
{
if (!(hasWarned & 2))
{
hasWarned |= 2;
WarningInFunction
<< "Ignoring out-of-range face " << facei
<< ". Suppressing further warnings." << endl;
}
}
else
{
label patchi = mesh.boundaryMesh().patchID()[bFacei];
allBoundaryValues[bFacei] = fieldValue;
++nChanged[patchi];
label bFacei = facei-mesh.nInternalFaces();
allBoundaryValues[bFacei] = value;
nChanged[mesh.boundaryMesh().patchID()[bFacei]]++;
}
}
Pstream::listCombineReduce(nChanged, plusEqOp<label>());
Pstream::listCombineAllGather(nChanged, plusEqOp<label>());
auto& fieldBf = field.boundaryFieldRef();
@ -410,7 +299,6 @@ bool setFaceFieldType
Info<< " On patch "
<< field.boundaryField()[patchi].patch().name()
<< " set " << nChanged[patchi] << " values" << endl;
fieldBf[patchi] == SubField<Type>
(
allBoundaryValues,
@ -424,223 +312,86 @@ bool setFaceFieldType
if (!field.write())
{
FatalErrorInFunction
<< "Failed writing field " << field.name() << endl;
<< "Failed writing field " << field.name() << exit(FatalError);
}
}
else
{
Warning
<< "Field " << fieldDesc.name() << " not found" << endl;
WarningInFunction
<< "Field " << fieldName << " not found" << endl;
// Consume value
(void)pTraits<Type>(fieldValueStream);
}
return true;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Dispatcher for setting volume fields
struct setCellField
class setFaceField
{
autoPtr<setCellField> clone() const { return nullptr; } // placeholder
static bool apply
(
const fieldDescription& fieldDesc,
const fvMesh& m,
const labelList& selectedCells,
Istream& is
)
public:
setFaceField()
{}
autoPtr<setFaceField> clone() const
{
return
(
setCellFieldType<scalar>(fieldDesc, m, selectedCells, is)
|| setCellFieldType<vector>(fieldDesc, m, selectedCells, is)
|| setCellFieldType<sphericalTensor>(fieldDesc, m, selectedCells, is)
|| setCellFieldType<symmTensor>(fieldDesc, m, selectedCells, is)
|| setCellFieldType<tensor>(fieldDesc, m, selectedCells, is)
);
return autoPtr<setFaceField>::New();
}
class iNew
{
const fvMesh& mesh_;
const labelList& selected_;
public:
iNew(const fvMesh& mesh, const labelList& selectedCells)
:
mesh_(mesh),
selected_(selectedCells)
{}
autoPtr<setCellField> operator()(Istream& is) const
{
const fieldDescription fieldDesc(is);
bool ok = setCellField::apply(fieldDesc, mesh_, selected_, is);
if (!ok)
{
ok = consumeUnused(fieldDesc, is);
if (ok)
{
// Not meant for us
Info<< "Skip " << fieldDesc.type()
<< " for finite-volume" << nl;
}
else
{
WarningInFunction
<< "Unsupported field type: "
<< fieldDesc.type() << endl;
}
}
return nullptr; // Irrelevant return value
}
};
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Dispatcher for setting volume boundary fields
struct setFaceField
{
autoPtr<setFaceField> clone() const { return nullptr; } // placeholder
static bool apply
(
const fieldDescription& fieldDesc,
const fvMesh& m,
const labelList& selectedFaces,
Istream& is
)
{
return
(
setFaceFieldType<scalar>(fieldDesc, m, selectedFaces, is)
|| setFaceFieldType<vector>(fieldDesc, m, selectedFaces, is)
|| setFaceFieldType<sphericalTensor>(fieldDesc, m, selectedFaces, is)
|| setFaceFieldType<symmTensor>(fieldDesc, m, selectedFaces, is)
|| setFaceFieldType<tensor>(fieldDesc, m, selectedFaces, is)
);
}
class iNew
{
const fvMesh& mesh_;
const labelList& selected_;
const labelList& selectedFaces_;
public:
iNew(const fvMesh& mesh, const labelList& selectedFaces)
:
mesh_(mesh),
selected_(selectedFaces)
selectedFaces_(selectedFaces)
{}
autoPtr<setFaceField> operator()(Istream& is) const
{
const fieldDescription fieldDesc(is);
bool ok = setFaceField::apply(fieldDesc, mesh_, selected_, is);
if (!ok)
{
ok = consumeUnused(fieldDesc, is);
if (ok)
{
// Not meant for us
Info<< "Skip " << fieldDesc.type()
<< " for finite-volume" << nl;
}
else
{
WarningInFunction
<< "Unsupported field type: "
<< fieldDesc.type() << endl;
}
}
return nullptr; // Irrelevant return value
}
};
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Dispatcher for setting area face fields
struct setAreaField
{
autoPtr<setAreaField> clone() const { return nullptr; } // placeholder
static bool apply
(
const fieldDescription& fieldDesc,
const faMesh& m,
const labelList& selectedFaces,
Istream& is
)
{
return
(
setAreaFieldType<scalar>(fieldDesc, m, selectedFaces, is)
|| setAreaFieldType<vector>(fieldDesc, m, selectedFaces, is)
|| setAreaFieldType<sphericalTensor>(fieldDesc, m, selectedFaces, is)
|| setAreaFieldType<symmTensor>(fieldDesc, m, selectedFaces, is)
|| setAreaFieldType<tensor>(fieldDesc, m, selectedFaces, is)
);
}
class iNew
{
const faMesh& mesh_;
const labelList& selected_;
public:
iNew(const faMesh& mesh, const labelList& selectedFaces)
iNew(const fvMesh& mesh, labelList&& selectedFaces)
:
mesh_(mesh),
selected_(selectedFaces)
selectedFaces_(std::move(selectedFaces))
{}
autoPtr<setAreaField> operator()(Istream& is) const
autoPtr<setFaceField> operator()(Istream& fieldValues) const
{
const fieldDescription fieldDesc(is);
word fieldType(fieldValues);
bool ok = setAreaField::apply(fieldDesc, mesh_, selected_, is);
if (!ok)
if
(
!(
setFaceFieldType<scalar>
(fieldType, mesh_, selectedFaces_, fieldValues)
|| setFaceFieldType<vector>
(fieldType, mesh_, selectedFaces_, fieldValues)
|| setFaceFieldType<sphericalTensor>
(fieldType, mesh_, selectedFaces_, fieldValues)
|| setFaceFieldType<symmTensor>
(fieldType, mesh_, selectedFaces_, fieldValues)
|| setFaceFieldType<tensor>
(fieldType, mesh_, selectedFaces_, fieldValues)
)
)
{
ok = consumeUnused(fieldDesc, is);
if (ok)
{
// Not meant for us
Info<< "Skip " << fieldDesc.type()
<< " for finite-volume" << nl;
}
else
{
WarningInFunction
<< "Unsupported field type: "
<< fieldDesc.type() << endl;
}
WarningInFunction
<< "field type " << fieldType << " not currently supported"
<< endl;
}
return nullptr; // Irrelevant return value
return autoPtr<setFaceField>::New();
}
};
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
@ -652,28 +403,11 @@ int main(int argc, char *argv[])
argList::addOption("dict", "file", "Alternative setFieldsDict");
argList::addBoolOption
(
"no-finite-area",
"Suppress handling of finite-area mesh/fields"
);
#include "addRegionOption.H"
#include "setRootCase.H"
#include "createTime.H"
#include "createNamedMesh.H"
autoPtr<faMesh> faMeshPtr;
if (!args.found("no-finite-area"))
{
faMeshPtr = faMesh::TryNew(mesh);
}
if (faMeshPtr)
{
Info<< "Detected finite-area mesh" << nl;
}
const word dictName("setFieldsDict");
#include "setSystemMeshDictionaryIO.H"
@ -681,144 +415,70 @@ int main(int argc, char *argv[])
IOdictionary setFieldsDict(dictIO);
// Note.
// The PtrList + iNew mechanism is used to trigger the callbacks
// and perform the desired actions. The contents of the PtrList
// itself are actually irrelevant.
// Default field values
if (setFieldsDict.found("defaultFieldValues"))
{
const entry* eptr =
setFieldsDict.findEntry("defaultFieldValues", keyType::LITERAL);
if (eptr)
{
ITstream& is = eptr->stream();
Info<< "Setting volume field default values" << endl;
PtrList<setCellField> defaultFieldValues
(
is,
setCellField::iNew(mesh, labelList::null())
);
if (faMeshPtr)
{
const faMesh& areaMesh = faMeshPtr();
is.rewind();
Info<< "Setting area field default values" << endl;
PtrList<setAreaField> defaultFieldValues
(
is,
setAreaField::iNew(areaMesh, labelList::null())
);
}
Info<< endl;
}
Info<< "Setting field default values" << endl;
PtrList<setCellField> defaultFieldValues
(
setFieldsDict.lookup("defaultFieldValues"),
setCellField::iNew(mesh, labelList(mesh.nCells()))
);
Info<< endl;
}
Info<< "Setting field region values" << nl << endl;
Info<< "Setting field region values" << endl;
PtrList<entry> regions(setFieldsDict.lookup("regions"));
for (const entry& region : regions)
forAll(regions, regionI)
{
const entry& region = regions[regionI];
autoPtr<topoSetSource> source =
topoSetSource::New(region.keyword(), mesh, region.dict());
if (source().setType() == topoSetSource::CELLSET_SOURCE)
{
cellSet subset
cellSet selectedCellSet
(
mesh,
"cellSet",
mesh.nCells()/10+1 // Reasonable size estimate.
);
source->applyToSet(topoSetSource::NEW, subset);
labelList selectedCells(subset.sortedToc());
Info<< " Selected "
<< returnReduce(selectedCells.size(), sumOp<label>())
<< '/'
<< returnReduce(mesh.nCells(), sumOp<label>())
<< " cells" << nl;
ITstream& is = region.dict().lookup("fieldValues");
source->applyToSet
(
topoSetSource::NEW,
selectedCellSet
);
PtrList<setCellField> fieldValues
(
is,
setCellField::iNew(mesh, selectedCells)
region.dict().lookup("fieldValues"),
setCellField::iNew(mesh, selectedCellSet.sortedToc())
);
}
else if (source().setType() == topoSetSource::FACESET_SOURCE)
{
faceSet subset
faceSet selectedFaceSet
(
mesh,
"faceSet",
mesh.nBoundaryFaces()/10+1
);
source->applyToSet(topoSetSource::NEW, subset);
labelList selectedFaces(subset.sortedToc());
Info<< " Selected " << selectedFaces.size()
<< " faces" << nl;
ITstream& is = region.dict().lookup("fieldValues");
source->applyToSet
(
topoSetSource::NEW,
selectedFaceSet
);
PtrList<setFaceField> fieldValues
(
is,
setFaceField::iNew(mesh, selectedFaces)
region.dict().lookup("fieldValues"),
setFaceField::iNew(mesh, selectedFaceSet.sortedToc())
);
if (faMeshPtr)
{
const faMesh& areaMesh = faMeshPtr();
const labelUList& faceLabels = areaMesh.faceLabels();
// Transcribe from mesh faces to finite-area addressing
labelList areaFaces(faceLabels.size());
label nUsed = 0;
forAll(faceLabels, facei)
{
const label meshFacei = faceLabels[facei];
if (subset.test(meshFacei))
{
areaFaces[nUsed] = facei;
++nUsed;
}
}
areaFaces.resize(nUsed);
Info<< " Selected "
<< returnReduce(areaFaces.size(), sumOp<label>())
<< '/'
<< returnReduce(faceLabels.size(), sumOp<label>())
<< " area faces" << nl;
is.rewind();
PtrList<setAreaField> fieldValues
(
is,
setAreaField::iNew(areaMesh, areaFaces)
);
}
}
}

View File

@ -109,7 +109,6 @@ Note
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "turbulentFluidThermoModel.H"
#include "processorFvPatchField.H"
#include "wallFvPatch.H"
#include "fixedValueFvPatchFields.H"
@ -123,40 +122,6 @@ void InfoField(const word& fldName)
}
template<class Type>
void correctProcessorPatches
(
GeometricField<Type, fvPatchField, volMesh>& vf
)
{
if (!Pstream::parRun())
{
return;
}
// Not possible to use correctBoundaryConditions on fields as they may
// use local info as opposed to the constraint values employed here,
// but still need to update processor patches
auto& bf = vf.boundaryFieldRef();
forAll(bf, patchi)
{
if (isA<processorFvPatchField<Type>>(bf[patchi]))
{
bf[patchi].initEvaluate();
}
}
forAll(bf, patchi)
{
if (isA<processorFvPatchField<Type>>(bf[patchi]))
{
bf[patchi].evaluate();
}
}
}
IOobject createIOobject
(
const fvMesh& mesh,
@ -482,26 +447,22 @@ int main(int argc, char *argv[])
// (M:Eq. 9)
const dimensionedScalar maxU(dimVelocity, SMALL);
U *= min(scalar(1), fRei*uTau/max(mag(U), maxU));
correctProcessorPatches<vector>(U);
}
if (tepsilon.valid())
{
tepsilon.ref() = epsilon;
correctProcessorPatches<scalar>(tepsilon.ref());
}
if (tk.valid())
{
tk.ref() = k;
correctProcessorPatches<scalar>(tk.ref());
}
if (tomega.valid())
{
const dimensionedScalar k0(sqr(dimLength/dimTime), SMALL);
tomega.ref() = Cmu*epsilon/(k + k0);
correctProcessorPatches<scalar>(tomega.ref());
}
if (tR.valid())
@ -514,7 +475,6 @@ int main(int argc, char *argv[])
{
R[celli] = Rdiag[celli];
}
correctProcessorPatches<symmTensor>(R);
}

View File

@ -1062,12 +1062,7 @@ int main(int argc, char *argv[])
}
}
const scalar err
(
mag(F2LIij) > ROOTVSMALL
? (F2LIij-oldEToeInt)/F2LIij
: 0
);
scalar err = (F2LIij-oldEToeInt)/F2LIij;
if
(

View File

@ -120,6 +120,7 @@ int main(int argc, char *argv[])
// Less frequently used - reduce some clutter
argList::setAdvanced("decomposeParDict");
argList::setAdvanced("noFunctionObjects");
argList::addArgument("output", "The output surface file");

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2020-2022 OpenCFD Ltd.
Copyright (C) 2020-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -58,7 +58,7 @@ label addPatch(polyMesh& mesh, const word& patchName)
{
const polyBoundaryMesh& patches = mesh.boundaryMesh();
polyPatchList newPatches(patches.size() + 1);
List<polyPatch*> newPatches(patches.size() + 1);
patchi = 0;
@ -67,25 +67,20 @@ label addPatch(polyMesh& mesh, const word& patchName)
{
const polyPatch& pp = patches[i];
newPatches.set
(
patchi,
newPatches[patchi] =
pp.clone
(
patches,
patchi,
pp.size(),
pp.start()
)
);
).ptr();
patchi++;
}
// Add zero-sized patch
newPatches.set
(
patchi,
newPatches[patchi] =
new polyPatch
(
patchName,
@ -94,8 +89,7 @@ label addPatch(polyMesh& mesh, const word& patchName)
patchi,
patches,
polyPatch::typeName
)
);
);
mesh.removeBoundary();
mesh.addPatches(newPatches);

View File

@ -188,18 +188,15 @@ int main(int argc, char *argv[])
);
argList::addBoolOption
(
"auto-centre",
"Use bounding box centre as centre for rotations"
"auto-origin",
"Use bounding box centre as origin for rotations"
);
argList::addOption
(
"centre",
"origin",
"point",
"Use specified <point> as centre for rotations"
"Use specified <point> as origin for rotations"
);
argList::addOptionCompat("auto-centre", {"auto-origin", 2206});
argList::addOptionCompat("centre", {"origin", 2206});
argList::addOption
(
"rotate",
@ -355,18 +352,18 @@ int main(int argc, char *argv[])
points += v;
}
vector rotationCentre;
bool useRotationCentre = args.readIfPresent("centre", rotationCentre);
if (args.found("auto-centre") && !useRotationCentre)
vector origin;
bool useOrigin = args.readIfPresent("origin", origin);
if (args.found("auto-origin") && !useOrigin)
{
useRotationCentre = true;
rotationCentre = boundBox(points).centre();
useOrigin = true;
origin = boundBox(points).centre();
}
if (useRotationCentre)
if (useOrigin)
{
Info<< "Set centre of rotation to " << rotationCentre << endl;
points -= rotationCentre;
Info<< "Set origin for rotations to " << origin << endl;
points -= origin;
}
@ -458,15 +455,15 @@ int main(int argc, char *argv[])
transform(points, rot, points);
}
if (useRotationCentre)
{
Info<< "Unset centre of rotation from " << rotationCentre << endl;
points += rotationCentre;
}
// Output scaling
applyScaling(points, getScalingOpt("write-scale", args));
if (useOrigin)
{
Info<< "Unset origin for rotations from " << origin << endl;
points += origin;
}
surf1.movePoints(points);
surf1.write(exportName, writeFileType);

View File

@ -7,7 +7,7 @@
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2017-2022 OpenCFD Ltd.
# Copyright (C) 2017-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -48,29 +48,26 @@
# - Similarly for c-shell
# eval `foamCleanPath -csh-path dir1:dir2`
#
# For library paths, it is suggested to use -sh-lib, -env=-lib etc.
#
# On Darwin it uses FOAM_LD_LIBRARY_PATH instead of LD_LIBRARY_PATH.
# This should actually be DYLD_LIBRARY_PATH on Darwin, but setting that
# or LD_LIBRARY_PATH via a shell-script is disallowed when SIP is active.
# For library paths, it is suggested to use -sh-lib, or -csh-lib.
# The will use DYLD_LIBRARY_PATH instead of LD_LIBRARY_PATH on Darwin.
#
#------------------------------------------------------------------------------
printHelp() {
cat<<USAGE
Usage: foamCleanPath [OPTION] ENVNAME [filter] .. [filter]
Usage: foamCleanPath [OPTION] ENV [filter] .. [filter]
foamCleanPath [OPTION] -env=name [filter] .. [filter]
options:
-env=NAME Evaluate NAME to obtain initial content,
Accepts "-env=-path", "-env=-lib" shortcuts for PATH
and LD_LIBRARY_PATH (FOAM_LD_LIBRARY_PATH on Darwin)
and LD_LIBRARY_PATH (DYLD_LIBRARY_PATH on Darwin)
-sh=NAME Produce 'NAME=...' output for sh eval
-csh=NAME Produce 'setenv NAME ...' output for csh eval
-sh-env=NAME Same as -sh=NAME -env=NAME
-csh-env=NAME Same as -csh=NAME -env=NAME
-sh-path | -csh-path Same as -[c]sh-env=PATH
-sh-lib | -csh-lib Same as -[c]sh-env=LD_LIBRARY_PATH
(FOAM_LD_LIBRARY_PATH on Darwin)
or DYLD_LIBRARY_PATH on Darwin
-debug Print debug information to stderr
-strip Remove inaccessible directories
-verbose Report some progress (input, output, ...)
@ -84,7 +81,7 @@ Prints its argument (which should be a ':' separated list) cleansed from
Exit status
0 on success
1 general error
2 initial value of ENVNAME is empty
2 initial value of 'path' is empty
USAGE
exit 0 # A clean exit
@ -106,69 +103,63 @@ die()
#-------------------------------------------------------------------------------
# Input and outputs
unset dirList shellFlavour shellOutput
unset dirList shellOutput shellFlavour
unset optDebug optEnvName optStrip optVerbose
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
(-h | -help*)
-h | -help*)
printHelp
;;
(-csh-lib | -csh-path | -sh-lib | -sh-path)
-env=*)
name="${1#*=}"
[ -n "$name" ] || die "Option '$1' missing an ENVNAME"
# Accept aliases
case "$name" in
(-path) name='PATH';;
(-lib)
case "$(uname -s 2>/dev/null)" in
(Darwin) name='DYLD_LIBRARY_PATH';;
(*) name='LD_LIBRARY_PATH';;
esac
;;
esac
optEnvName="$name" # Use for input evaluation
;;
-csh-path | -sh-path)
shellFlavour="$1"
case "$1" in
(*-lib)
name='LD_LIBRARY_PATH'
if [ "$(uname -s 2>/dev/null)" = Darwin ]
then
name='FOAM_LD_LIBRARY_PATH' # Shadow DYLD_LIBRARY_PATH
fi
;;
(*-path)
name='PATH'
;;
name='PATH'
optEnvName="$name" # Use for input evaluation
shellOutput="$name" # Use for output
;;
-csh-lib | -sh-lib)
shellFlavour="$1"
case "$(uname -s 2>/dev/null)" in
(Darwin) name='DYLD_LIBRARY_PATH';;
(*) name='LD_LIBRARY_PATH';;
esac
optEnvName="$name" # Use for input evaluation
shellOutput="$name" # Use for output
;;
(-env=*)
name="${1#*=}"
[ -n "$name" ] || die "Option '$1' missing an ENVNAME"
# Handle (-lib | -path) aliases
case "$1" in
(*=-lib)
name='LD_LIBRARY_PATH'
if [ "$(uname -s 2>/dev/null)" = Darwin ]
then
name='FOAM_LD_LIBRARY_PATH' # Shadow DYLD_LIBRARY_PATH
fi
;;
(*=-path)
name='PATH'
;;
esac
optEnvName="$name" # Use for input evaluation
;;
(-csh=* | -csh-env=* | -sh=* | -sh-env=*)
-csh=* | -sh=* | -csh-env=* | -sh-env=*)
shellFlavour="$1"
name="${1#*=}"
[ -n "$name" ] || die "Option '$1' missing an ENVNAME"
# Handle (-lib | -path) aliases
case "$1" in
(*=-lib)
name='LD_LIBRARY_PATH'
if [ "$(uname -s 2>/dev/null)" = Darwin ]
then
name='FOAM_LD_LIBRARY_PATH' # Shadow DYLD_LIBRARY_PATH
fi
;;
(*=-path)
name='PATH'
# Accept aliases
case "$name" in
(-path) name='PATH';;
(-lib)
case "$(uname -s 2>/dev/null)" in
(Darwin) name='DYLD_LIBRARY_PATH';;
(*) name='LD_LIBRARY_PATH';;
esac
;;
esac
shellOutput="$name" # Use for output
@ -176,16 +167,16 @@ do
case "$1" in (*-env=*) optEnvName="$name";; esac
;;
(-debug)
-debug)
optDebug=true
;;
(-strip)
-strip)
optStrip=true
;;
(-verbose)
-verbose)
optVerbose=true
;;
(*)
*)
break
;;
esac

View File

@ -26,9 +26,9 @@
[ -d "$FOAM_TUTORIALS" ] || echo "No OpenFOAM tutorials? : $FOAM_TUTORIALS" 1>&2
# Darwin workaround - SIP clearing DYLD_LIBRARY_PATH variable
if [ -n "$FOAM_LD_LIBRARY_PATH" ] && [ -z "$DYLD_LIBRARY_PATH" ]
if [ -n "$FOAM_DYLD_LIBRARY_PATH" ] && [ -z "$DYLD_LIBRARY_PATH" ]
then
export DYLD_LIBRARY_PATH="$FOAM_LD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH="$FOAM_DYLD_LIBRARY_PATH"
fi

View File

@ -49,8 +49,8 @@ then
foamClean="$WM_PROJECT_DIR/bin/foamCleanPath"
if [ -x "$foamClean" ]
then
cleaned=$($foamClean -env=PATH "$foamOldDirs") && PATH="$cleaned"
cleaned=$($foamClean -env=LD_LIBRARY_PATH "$foamOldDirs") \
cleaned=$($foamClean "$PATH" "$foamOldDirs") && PATH="$cleaned"
cleaned=$($foamClean "$LD_LIBRARY_PATH" "$foamOldDirs") \
&& LD_LIBRARY_PATH="$cleaned"
fi

View File

@ -5,7 +5,7 @@
# \\ / A nd | www.openfoam.com
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2017-2022 OpenCFD Ltd.
# Copyright (C) 2017-2020 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -49,8 +49,8 @@ then
foamClean="$WM_PROJECT_DIR/bin/foamCleanPath"
if [ -x "$foamClean" ]
then
cleaned=$($foamClean -env=PATH "$foamOldDirs") && PATH="$cleaned"
cleaned=$($foamClean -env=LD_LIBRARY_PATH "$foamOldDirs") \
cleaned=$($foamClean "$PATH" "$foamOldDirs") && PATH="$cleaned"
cleaned=$($foamClean "$LD_LIBRARY_PATH" "$foamOldDirs") \
&& LD_LIBRARY_PATH="$cleaned"
fi

View File

@ -79,7 +79,7 @@ export WM_PRECISION_OPTION=DP
export WM_LABEL_SIZE=32
# [WM_COMPILE_OPTION] - Optimised(default), debug, profiling, other:
# = Opt | Dbg | Debug | Prof
# = Opt | Debug | Prof
export WM_COMPILE_OPTION=Opt
# [WM_COMPILE_CONTROL] - additional control for compiler rules

View File

@ -564,10 +564,7 @@ snapControls
// multiRegionFeatureSnap) have the other points follow these points
// instead of having their own independent movement, i.e. have snapping
// to multi-region edges/points take priority. This might aid snapping
// to sharp edges that are also region edges. The default is false
// since it might also introduce problems - at morphing the patching
// might still be wrong so points get 'released' instead of behaving
// as any other point.
// to sharp edges that are also region edges. The default is false.
//releasePoints true;
//- Walk along feature edges, adding missing ones. Default is true.
//stringFeatures false;

View File

@ -67,14 +67,12 @@ minVolRatio 0.01;
// for Fluent compatibility
minTriangleTwist -1;
//- If >0 : preserve cells with all points on the surface if the
// resulting volume after snapping (by approximation) is larger than
// minVolCollapseRatio times old volume (i.e. not collapsed to flat cell).
// If <0 : delete always.
//minVolCollapseRatio 0.1;
//- Minimum edge length. Set to <0 to disable
minEdgeLength 0.001;
// ************************************************************************* //

View File

@ -22,14 +22,12 @@ functions
#includeEtc "caseDicts/postProcessing/surfaceFieldValue/surfaceRegion.cfg"
operation areaAverage;
fields (p);
$region1;
}
region2
{
#includeEtc "caseDicts/postProcessing/surfaceFieldValue/surfaceRegion.cfg"
operation areaAverage;
fields (p);
$region2;
}
}

View File

@ -6,6 +6,8 @@
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
#includeEtc "caseDicts/postProcessing/pressure/pressureDifference.cfg"
region1
{
regionType patch;
@ -17,6 +19,4 @@ region2
name $patch2;
}
#includeEtc "caseDicts/postProcessing/pressure/pressureDifference.cfg"
// ************************************************************************* //

View File

@ -6,14 +6,16 @@
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
#includeEtc "caseDicts/postProcessing/pressure/pressureDifference.cfg"
region1
{
regionType sampledSurface;
name $triSurface1;
regionType sampledSurface;
sampledSurfaceDict
{
type meshedSurface;
source cells;
regionType cells;
interpolate true;
surface $triSurface1;
}
@ -22,13 +24,10 @@ region1
region2
{
$region1;
name $triSurface2;
sampledSurfaceDict
{
surface $triSurface2;
}
}
#includeEtc "caseDicts/postProcessing/pressure/pressureDifference.cfg"
// ************************************************************************* //

View File

@ -5,7 +5,7 @@
# \\ / A nd | www.openfoam.com
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2018-2022 OpenCFD Ltd.
# Copyright (C) 2018-2020 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -46,10 +46,10 @@ alias _foamAddMan 'setenv MANPATH \!*\:${MANPATH}'
# Special treatment for Darwin
# - DYLD_LIBRARY_PATH instead of LD_LIBRARY_PATH
if ("${_foam_uname_s}" == 'Darwin') then
alias _foamAddLib 'if (-e \!*) setenv DYLD_LIBRARY_PATH \!*\:${DYLD_LIBRARY_PATH}; if (-e \!*) setenv FOAM_LD_LIBRARY_PATH \!*\:${FOAM_LD_LIBRARY_PATH}'
if ("${_foam_uname_s}" == "Darwin") then
alias _foamAddLib 'setenv DYLD_LIBRARY_PATH \!*\:${DYLD_LIBRARY_PATH}'
else
alias _foamAddLib 'setenv LD_LIBRARY_PATH \!*\:${LD_LIBRARY_PATH}'
alias _foamAddLib 'setenv LD_LIBRARY_PATH \!*\:${LD_LIBRARY_PATH}'
endif
# Prefix to LD_LIBRARY_PATH with additional checking

View File

@ -69,13 +69,6 @@ set archDir="$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER"
eval `$WM_PROJECT_DIR/bin/foamCleanPath -csh-path "$ParaView_DIR $archDir/ParaView- $archDir/qt-"`
eval `$WM_PROJECT_DIR/bin/foamCleanPath -csh-lib "$ParaView_DIR $archDir/ParaView- $archDir/qt-"`
# Darwin
switch ("$WM_ARCH")
case darwin*:
setenv DYLD_LIBRARY_PATH "${FOAM_LD_LIBRARY_PATH}"
breaksw
endsw
# Evaluate command-line parameters for ParaView
while ( $#argv > 0 )
switch ($argv[1])
@ -213,11 +206,10 @@ default:
if ( "$pv_libdirs" != "" ) then
switch ("$WM_ARCH")
case darwin*:
setenv FOAM_LD_LIBRARY_PATH "${pv_libdirs}:${FOAM_LD_LIBRARY_PATH}"
setenv DYLD_LIBRARY_PATH "${FOAM_LD_LIBRARY_PATH}"
setenv DYLD_LIBRARY_PATH "${pv_libdirs}:$DYLD_LIBRARY_PATH"
breaksw
default:
setenv LD_LIBRARY_PATH "${pv_libdirs}:${LD_LIBRARY_PATH}"
setenv LD_LIBRARY_PATH "${pv_libdirs}:$LD_LIBRARY_PATH"
breaksw
endsw
endif

View File

@ -148,21 +148,16 @@ endif
# Clean standard environment variables (PATH, MANPATH, [DY]LD_LIBRARY_PATH)
# - avoid local variables shadowing setenv variables
unset PATH MANPATH LD_LIBRARY_PATH DYLD_LIBRARY_PATH FOAM_LD_LIBRARY_PATH
unset PATH MANPATH LD_LIBRARY_PATH DYLD_LIBRARY_PATH
if (! $?MANPATH ) setenv MANPATH
if ("${_foam_uname_s}" == 'Darwin') then
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH
if ("${_foam_uname_s}" == "Darwin" ) then
if (! $?DYLD_LIBRARY_PATH ) setenv DYLD_LIBRARY_PATH
if (! $?FOAM_LD_LIBRARY_PATH ) setenv FOAM_LD_LIBRARY_PATH
else
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH
endif
_foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$foamOldDirs"
_foamClean -lib "$foamOldDirs"
if ("${_foam_uname_s}" == 'Darwin') then
setenv DYLD_LIBRARY_PATH "${FOAM_LD_LIBRARY_PATH}"
endif
#------------------------------------------------------------------------------
@ -218,9 +213,6 @@ endif
_foamClean PATH
_foamClean MANPATH
_foamClean -lib
if ("${_foam_uname_s}" == 'Darwin') then
setenv DYLD_LIBRARY_PATH "${FOAM_LD_LIBRARY_PATH}"
endif
# Add trailing ':' for system manpages
if ( $?MANPATH ) then
@ -232,8 +224,8 @@ if ($?LD_LIBRARY_PATH) then
endif
# Darwin
if ($?FOAM_LD_LIBRARY_PATH) then
if ("${FOAM_LD_LIBRARY_PATH}" == "") unsetenv DYLD_LIBRARY_PATH FOAM_LD_LIBRARY_PATH
if ($?DYLD_LIBRARY_PATH) then
if ("${DYLD_LIBRARY_PATH}" == "") unsetenv DYLD_LIBRARY_PATH
endif

View File

@ -6,7 +6,7 @@
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2016-2022 OpenCFD Ltd.
# Copyright (C) 2016-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -172,10 +172,8 @@ if ( $?foamClean ) then
if ($?LD_LIBRARY_PATH) then
eval `$foamClean -csh-env=LD_LIBRARY_PATH "$foamOldDirs"`
endif
# Darwin
if ($?FOAM_LD_LIBRARY_PATH) then
eval `$foamClean -csh-env=FOAM_LD_LIBRARY_PATH "$foamOldDirs"`
setenv DYLD_LIBRARY_PATH ${FOAM_LD_LIBRARY_PATH}
if ($?DYLD_LIBRARY_PATH) then
eval `$foamClean -csh-env=DYLD_LIBRARY_PATH "$foamOldDirs"`
endif
endif
@ -190,7 +188,7 @@ if ($?DYLD_LIBRARY_PATH) then
endif
# Remove any shadow env variables
unsetenv FOAM_DYLD_LIBRARY_PATH FOAM_LD_LIBRARY_PATH
unsetenv FOAM_DYLD_LIBRARY_PATH
#------------------------------------------------------------------------------
# Cleanup aliases

View File

@ -6,7 +6,7 @@
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2017-2022 OpenCFD Ltd.
# Copyright (C) 2017-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -31,7 +31,7 @@
# _foamEtc : resolve etc files (silent or verbose)
# _foamAddPath : prepend to PATH
# _foamAddMan : prepend to MANPATH
# _foamAddLib : prepend to {DY,FOAM_}LD_LIBRARY_PATH
# _foamAddLib : prepend to [DY]LD_LIBRARY_PATH
# _foamAddLibAuto: prepend to lib64/lib resolved name
#
#------------------------------------------------------------------------------
@ -56,7 +56,7 @@ then
foamVar_name="$1"
shift
eval "$($foamClean -sh-env="$foamVar_name" "$@")"
unset foamVar_name
unset "foamVar_name"
}
# Echo values to stderr when FOAM_VERBOSE is on, no-op otherwise
@ -94,18 +94,14 @@ then
_foamAddLib()
{
case "$1" in (/?*)
if [ -e "$1" ]
then
export FOAM_LD_LIBRARY_PATH="${1}${FOAM_LD_LIBRARY_PATH:+:}${FOAM_LD_LIBRARY_PATH}"
export DYLD_LIBRARY_PATH="$FOAM_LD_LIBRARY_PATH"
fi
export DYLD_LIBRARY_PATH="${1}${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}" ;;
esac
}
else
_foamAddLib()
{
case "$1" in (/?*)
export LD_LIBRARY_PATH="${1}${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH="${1}${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" ;;
esac
}
fi

View File

@ -76,12 +76,6 @@ eval \
"$($WM_PROJECT_DIR/bin/foamCleanPath -sh-lib \
$ParaView_DIR $archDir/ParaView- $archDir/qt-)"
# Darwin
case "$WM_ARCH" in
(darwin*)
export DYLD_LIBRARY_PATH="${FOAM_LD_LIBRARY_PATH}" ;;
esac
# Evaluate command-line parameters for ParaView
for i
do
@ -192,12 +186,8 @@ case "$ParaView_VERSION" in
then
case "$WM_ARCH" in
(darwin*)
export FOAM_LD_LIBRARY_PATH="${pv_libdirs}:${FOAM_LD_LIBRARY_PATH}"
export DYLD_LIBRARY_PATH="${FOAM_LD_LIBRARY_PATH}"
;;
(*)
export LD_LIBRARY_PATH="${pv_libdirs}:${LD_LIBRARY_PATH}"
;;
export DYLD_LIBRARY_PATH="${pv_libdirs}:$DYLD_LIBRARY_PATH" ;;
(*) export LD_LIBRARY_PATH="${pv_libdirs}:$LD_LIBRARY_PATH" ;;
esac
fi

View File

@ -5,7 +5,7 @@
# \\ / A nd | www.openfoam.com
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2019-2022 OpenCFD Ltd.
# Copyright (C) 2019-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -34,12 +34,6 @@ eval \
"$($WM_PROJECT_DIR/bin/foamCleanPath -sh-lib \
$ParaView_DIR $archDir/ParaView-)"
# Darwin
case "$WM_ARCH" in
(darwin*)
export DYLD_LIBRARY_PATH="${FOAM_LD_LIBRARY_PATH}" ;;
esac
#------------------------------------------------------------------------------
ParaView_DIR="$(command -v paraview 2>/dev/null)"

View File

@ -5,7 +5,7 @@
# \\ / A nd | www.openfoam.com
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2018-2022 OpenCFD Ltd.
# Copyright (C) 2018-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -178,23 +178,12 @@ else
fi
# Clean standard environment variables (PATH, MANPATH, [DY]LD_LIBRARY_PATH)
export PATH MANPATH
if [ "${_foam_uname_s}" = Darwin ]
then
export DYLD_LIBRARY_PATH FOAM_LD_LIBRARY_PATH
else
export LD_LIBRARY_PATH
fi
# Clean standard environment variables
export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$foamOldDirs"
_foamClean -lib "$foamOldDirs"
if [ "${_foam_uname_s}" = Darwin ]
then
export DYLD_LIBRARY_PATH="$FOAM_LD_LIBRARY_PATH"
fi
#------------------------------------------------------------------------------
# Base setup (OpenFOAM compilation), MPI and third-party packages
@ -248,21 +237,11 @@ fi
#------------------------------------------------------------------------------
# Remove duplicates from environment paths
export PATH MANPATH
if [ "${_foam_uname_s}" = Darwin ]
then
export DYLD_LIBRARY_PATH FOAM_LD_LIBRARY_PATH
else
export LD_LIBRARY_PATH
fi
export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH
_foamClean MANPATH
_foamClean -lib
if [ "${_foam_uname_s}" = Darwin ]
then
export DYLD_LIBRARY_PATH="$FOAM_LD_LIBRARY_PATH"
fi
# Add trailing ':' for system manpages
if [ -n "$MANPATH" ]

View File

@ -6,7 +6,7 @@
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2011-2016 OpenFOAM Foundation
# Copyright (C) 2016-2022 OpenCFD Ltd.
# Copyright (C) 2016-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
@ -164,9 +164,7 @@ then
eval "$($foamClean -sh-env=PATH $foamOldDirs)"
eval "$($foamClean -sh-env=MANPATH $foamOldDirs)"
eval "$($foamClean -sh-env=LD_LIBRARY_PATH $foamOldDirs)"
# Darwin
eval "$($foamClean -sh-env=FOAM_LD_LIBRARY_PATH $foamOldDirs)"
export DYLD_LIBRARY_PATH="$FOAM_LD_LIBRARY_PATH"
eval "$($foamClean -sh-env=DYLD_LIBRARY_PATH $foamOldDirs)"
fi
[ -n "$MANPATH" ] || unset MANPATH
@ -174,7 +172,7 @@ fi
[ -n "$DYLD_LIBRARY_PATH" ] || unset DYLD_LIBRARY_PATH
# Remove any shadow env variables
unset FOAM_DYLD_LIBRARY_PATH FOAM_LD_LIBRARY_PATH
unset FOAM_DYLD_LIBRARY_PATH
#------------------------------------------------------------------------------
# Cleanup aliases and functions

View File

@ -79,7 +79,7 @@ setenv WM_PRECISION_OPTION DP
setenv WM_LABEL_SIZE 32
# [WM_COMPILE_OPTION] - Optimised(default), debug, profiling, other:
# = Opt | Dbg | Debug | Prof
# = Opt | Debug | Prof
setenv WM_COMPILE_OPTION Opt
# [WM_COMPILE_CONTROL] - additional control for compiler rules

View File

@ -776,7 +776,6 @@ $(Fields)/fieldTypes.C
pointPatchFields = fields/pointPatchFields
$(pointPatchFields)/pointPatchField/pointPatchFieldBase.C
$(pointPatchFields)/pointPatchField/pointPatchFields.C
basicPointPatchFields = $(pointPatchFields)/basic

Some files were not shown because too many files have changed in this diff Show More