Compare commits

..

20 Commits

Author SHA1 Message Date
0a04de8661 CONFIG: bump patch level (240625) 2024-06-26 13:12:55 +02:00
5802d22470 BUG: Nastran reading of free format truncates last field (fixes #3189)
- the old logic relied on the presence/absence of a comma to decide
  whether to parse as fixed or free format. This logic is faulty when
  handling the final (trailing) entry and will generally lead to the
  last field being truncated when read in.
  Now the caller decides on fixed vs free.

FIX: inconsistent Nastran surface output format

- use FREE format by default. Previously had an odd mix of SHORT
  format when created without options and LONG format (as default)
  when created with format options.
2024-06-26 13:12:26 +02:00
1679c5f157 BUG: SlicedGeometricField, slices into field instead of shallow copy (#3080)
- regression introduced by e98acdc4fc

  Affected versions: (v2206, v2212, v2306, v2312)
2024-01-19 20:19:12 +01:00
d5607b2f28 COMP: g++11: suppress optimisation. See #3024 2024-01-19 20:18:28 +01:00
b0ed2a254b BUG: ThermoSurfaceFilm: reintroduce energy to film sources (fixes #2996) 2023-10-11 11:29:50 +01:00
0085b60946 BUG: mapFields: incorrect patches. Fixes #2944. 2023-08-30 16:36:46 +02:00
45e9db3489 BUG: expressions rand() ignores objectRegistry timeIndex (fixes #2923) 2023-06-26 17:55:07 +02:00
68bed4f1dc BUG: UPstream::shutdown misbehaves with external initialisation (fixes #2808)
- freeCommmunicatorComponents needs an additional bounds check.
  When MPI is initialized outside of OpenFOAM, there are no
  UPstream communicator equivalents
2023-06-20 09:23:44 +02:00
fe97c8fee9 Revert "BUG: Fixing ray dAve and omega for 1D and 2D cases"
This reverts commit 5848b0afd5.
2023-05-22 09:41:24 +01:00
324ce9adec BUG: VTK write pointSet fails in parallel (fixes #2773)
- de-referenced autoPtr with () instead of ref() will fail on
  non-master ranks.
2023-05-05 16:08:36 +02:00
a8cba8ba8f COMP: code adjustments for gcc-13 (#2714) 2023-02-28 16:03:12 +01:00
58a5587ca8 BUG: globalIndex gather/scatter fails with multi-world (fixes #2706)
- was using UPstream::procIDs(), which returns the sub-ranks with
  respect to the parent communicator. This is normally just an
  identity list (single-world) but with multi-world the indexing
  is incorrect.  Use UPstream::allProcs() instead.
2023-02-21 12:24:15 +01:00
6d045eabc1 BUG: inconsistent faceArea on processor boundaries (fixes #2683)
- was missing evaluateCoupled on the initial faceAreaNormals field
  (related to #2507)

ENH: simplify/consistent geometry updating
2023-02-21 12:24:01 +01:00
d45b9b4e41 COMP: backslash instead of slash in Make/options 2023-02-20 18:04:13 +01:00
dae13bfae8 BUG: expression field functionObject 'store' keyword ignored 2023-02-20 18:04:13 +01:00
5894f2ed95 BUG: vtk::coordSetWriter produces incorrect VTK legacy format (fixes #2678)
- has a special purpose beginPiece() method, but was missing an update
  on the numberOfPoints, numberOfCells values required by the base class.
2023-01-13 09:39:23 +01:00
d0151570a1 BUG: inconsistent finiteArea proc-boundary contributions (fixes #2672) 2023-01-13 09:38:45 +01:00
8993af73ac CONFIG: bump patch level 2022-11-20 18:16:53 +01:00
a4d235af6b BUG: porousBafflePressure: read fixedJump entries - apply under-relaxation (fixes #2626) 2022-11-09 14:18:06 +00:00
dffac4d887 BUG: distributedTriSurfaceMesh: locally empty surface. Fixes #2612 2022-10-13 11:57:27 +01:00
1173 changed files with 12158 additions and 24390 deletions

View File

@ -5,8 +5,6 @@ It is likely incomplete...
## Contributors (alphabetical by surname)
- Tetsuo Aoyagi
- Akira Azami
- William Bainbridge
- Gabriel Barajas
- Kutalmis Bercin
@ -21,7 +19,6 @@ It is likely incomplete...
- Bernhard Gschaider
- Andrew Heather
- David Hill
- Yoshiaki Inoue
- Mattijs Janssens
- Andrew Jackson
- Hrvoje Jasak

View File

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

View File

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

View File

@ -116,7 +116,7 @@ int main(int argc, char *argv[])
"normalisedGradP",
tmagGradP()/max(tmagGradP())
);
normalisedGradP.writeOpt(IOobject::AUTO_WRITE);
normalisedGradP.writeOpt() = IOobject::AUTO_WRITE;
tmagGradP.clear();
++runTime;

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

@ -9,7 +9,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
-I$(LIB_SRC)/regionFaModels/lnInclude
EXE_LIBS = \
-lfiniteVolume \
@ -26,5 +26,4 @@ EXE_LIBS = \
-ltopoChangerFvMesh \
-lsampling \
-latmosphericModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -7,7 +7,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
-I$(LIB_SRC)/regionFaModels/lnInclude
EXE_LIBS = \
-lfiniteVolume \
@ -21,5 +21,4 @@ EXE_LIBS = \
-lcompressibleTurbulenceModels \
-lthermoTools \
-latmosphericModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -10,7 +10,7 @@ EXE_INC = \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
-I$(LIB_SRC)/regionFaModels/lnInclude
EXE_LIBS = \
-lfiniteVolume \
@ -28,5 +28,4 @@ EXE_LIBS = \
-ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -7,7 +7,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
-I$(LIB_SRC)/regionFaModels/lnInclude
EXE_LIBS = \
-lfiniteVolume \
@ -22,5 +22,4 @@ EXE_LIBS = \
-lcompressibleTurbulenceModels \
-lthermoTools \
-latmosphericModels \
-lregionFaModels \
-lfiniteArea
-lregionFaModels

View File

@ -19,7 +19,7 @@ EXE_INC = \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
-I$(LIB_SRC)/regionFaModels/lnInclude
EXE_LIBS = \
@ -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

@ -8,7 +8,7 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/regionFaModels\lnInclude
-I$(LIB_SRC)/regionFaModels/lnInclude
EXE_LIBS = \
-lfiniteVolume \
@ -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

@ -34,8 +34,8 @@ SourceFiles
\*---------------------------------------------------------------------------*/
#ifndef Foam_DTRMParticle_H
#define Foam_DTRMParticle_H
#ifndef DTRMParticle_H
#define DTRMParticle_H
#include "particle.H"
#include "IOstream.H"
@ -50,13 +50,12 @@ SourceFiles
namespace Foam
{
// Forward Declarations
class DTRMParticle;
Ostream& operator<<(Ostream&, const DTRMParticle&);
using namespace Foam::radiation;
// Forward declaration of friend functions
Ostream& operator<<(Ostream&, const DTRMParticle&);
/*---------------------------------------------------------------------------*\
Class DTRMParticle Declaration
\*---------------------------------------------------------------------------*/
@ -131,7 +130,7 @@ public:
);
// Member Functions
// Member functions
inline const interpolationCell<scalar>& aInterp() const;
inline const interpolationCell<scalar>& eInterp() const;
@ -233,34 +232,37 @@ public:
// Access
//- Return const access to the initial position
const point& p0() const noexcept { return p0_; }
inline const point& p0() const;
//- Return const access to the target position
const point& p1() const noexcept { return p1_; }
inline const point& p1() const;
//- Return const access to the initial intensity
scalar I0() const noexcept { return I0_; }
inline scalar I0() const;
//- Return const access to the current intensity
scalar I() const noexcept { return I_; }
inline scalar I() const;
//- Return const access dA
scalar dA() const noexcept { return dA_; }
inline scalar dA() const;
// Edit
//- Return access to the target position
point& p1() noexcept { return p1_; }
inline point& p1();
//- Return access to the initial intensity
scalar& I0() noexcept { return I0_; }
inline scalar& I0();
//- Return access to the current intensity
scalar& I() noexcept { return I_; }
inline scalar& I();
//- Return access to dA
scalar& dA() noexcept { return dA_; }
inline scalar& dA();
//- Return access to reflectedId
inline label& reflectedId();
// Tracking

View File

@ -107,4 +107,58 @@ inline Foam::scalar& Foam::DTRMParticle::trackingData::Q(label celli)
}
inline const Foam::point& Foam::DTRMParticle::p0() const
{
return p0_;
}
inline const Foam::point& Foam::DTRMParticle::p1() const
{
return p1_;
}
inline Foam::scalar Foam::DTRMParticle::I0() const
{
return I0_;
}
inline Foam::scalar Foam::DTRMParticle::I() const
{
return I_;
}
inline Foam::scalar Foam::DTRMParticle::dA() const
{
return dA_;
}
inline Foam::scalar& Foam::DTRMParticle::dA()
{
return dA_;
}
inline Foam::point& Foam::DTRMParticle::p1()
{
return p1_;
}
inline Foam::scalar& Foam::DTRMParticle::I0()
{
return I0_;
}
inline Foam::scalar& Foam::DTRMParticle::I()
{
return I_;
}
// ************************************************************************* //

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2019 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -59,7 +59,7 @@ Foam::DTRMParticle::DTRMParticle
{
if (readFields)
{
if (is.format() == IOstreamOption::ASCII)
if (is.format() == IOstream::ASCII)
{
is >> p0_ >> p1_ >> I0_ >> I_ >> dA_ >> transmissiveId_;
}
@ -115,7 +115,7 @@ void Foam::DTRMParticle::writeProperties
Foam::Ostream& Foam::operator<<(Ostream& os, const DTRMParticle& p)
{
if (os.format() == IOstreamOption::ASCII)
if (os.format() == IOstream::ASCII)
{
os << static_cast<const particle&>(p)
<< token::SPACE << p.p0_

View File

@ -699,7 +699,7 @@ void Foam::radiation::laserDTRM::calculate()
for (label pointi = 0; pointi < lines.size(); pointi += 2)
{
os.writeLine(lines[pointi], lines[pointi+1]);
os.write(linePointRef(lines[pointi], lines[pointi+1]));
}
}

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2020-2022 OpenCFD Ltd.
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -49,8 +49,8 @@ int main(int argc, char *argv[])
#include "setRootCase.H"
#include "createTime.H"
IOstreamOption streamOpt(IOstreamOption::BINARY);
// IOstreamOption streamOpt(IOstreamOption::ASCII);
IOstream::streamFormat format = IOstream::BINARY;
// IOstream::streamFormat format = IOstream::ASCII;
const label size = 20000000;
@ -85,7 +85,11 @@ int main(int argc, char *argv[])
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
faces2.writeObject(streamOpt, true);
faces2.writeObject
(
IOstreamOption(format),
true
);
Info<< "Written old format faceList in = "
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
@ -141,7 +145,11 @@ int main(int argc, char *argv[])
<< runTime.cpuTimeIncrement() << " s" << nl << endl;
faces2.writeObject(streamOpt, true);
faces2.writeObject
(
IOstreamOption(format),
true
);
Info<< "Written new format faceList in = "
<< runTime.cpuTimeIncrement() << " s" << nl << endl;

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

@ -146,7 +146,7 @@ int main(int argc, char *argv[])
{
Info<<"Writing output to " << binaryOutput << endl;
OFstream os(binaryOutput, IOstreamOption::BINARY);
OFstream os(binaryOutput, IOstream::BINARY);
os.writeEntry("idl1", idl1);
os.writeEntry("idl2", idl2);

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

@ -28,14 +28,15 @@ Description
\*---------------------------------------------------------------------------*/
#include "scalar.H"
using namespace Foam;
#include "floatScalar.H"
#include "doubleScalar.H"
#include "complex.H"
#include "Matrix.H"
#include "Random.H"
#include <chrono>
using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Total number of unit tests

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

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

View File

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

View File

@ -1,93 +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-barycentric
Description
Some simple tests for barycentric coordinates and transforms
\*---------------------------------------------------------------------------*/
#include "barycentricTensor.H"
#include "tetrahedron.H"
#include "vectorField.H"
#include "IOstreams.H"
using namespace Foam;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int main(int argc, char *argv[])
{
// Tets to test
tetPoints tetA
(
point(0, 0, 0),
point(1, 0, 0),
point(1, 1, 0),
point(1, 1, 1)
);
const barycentricTensor baryT(tetA[0], tetA[1], tetA[2], tetA[3]);
Info<< nl << "Tet: " << tetA << nl;
Info<< "tens:" << baryT << nl;
for
(
const barycentric& bary :
List<barycentric>
({
{0.25, 0.25, 0.25, 0.25},
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1},
{0, 0, 0, 0} // Not really valid
})
)
{
vector v(tetA.tet().barycentricToPoint(bary));
barycentric b(tetA.tet().pointToBarycentric(v));
Info<< nl
<< "bary: " << bary << nl
<< "vec: " << v << nl
// << "Vec: " << baryT.inner(bary) << nl
<< "Vec: " << (baryT & bary) << nl
<< "bary: " << b << nl
// This won't work (needs a differently defined tensor)
// << "Bary: " << (v & baryT) << nl
;
}
Info<< "\nEnd\n" << nl;
return 0;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -78,8 +78,8 @@ int main(int argc, char *argv[])
OFstream os
(
objPath,
IOstreamOption::BINARY,
IOstreamOption::currentVersion,
IOstream::BINARY,
IOstream::currentVersion,
runTime.writeCompression()
);
if (!os.good())

View File

@ -42,7 +42,7 @@ namespace Foam
// Something like an internal state field. Probably only dimensionless
typedef DimensionedField<uint8_t, volMesh> dimUint8Field;
defineTemplateTypeNameAndDebug(dimUint8Field, 0);
defineTemplate2TypeNameAndDebug(dimUint8Field, 0);
} // End namespace Foam
#endif

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

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -82,7 +82,8 @@ int main(int argc, char *argv[])
Info<< nl << "hash-like functionality" << nl;
e4.clear();
// doesn't work e4 = -1;
e4.start() = e4.end() = -1;
printInfo(e4);
for (label i : {2, -1, 2, 1, 4, 1, 2, 3})
@ -92,24 +93,24 @@ int main(int argc, char *argv[])
printInfo(e4);
}
e4.clear();
e4.start() = e4.end() = -1;
Info<< "insert from list\n";
labelHashSet newIndices({2, -1, 2, 1, 4, 1, 2, 3});
e4.insert(newIndices.toc());
printInfo(e4);
e4.clear();
e4.start() = e4.end() = -1;
Info<< "insert from list\n";
e4.insert({0, 5, 2, -1, 2, 1, 4, 1, 2, 3});
printInfo(e4);
FixedList<label, 8> otherIndices{12, 2, -1, 1, 4, 1, 2, 3};
e4.clear();
e4.start() = e4.end() = -1;
Info<< "insert from list: " << otherIndices << nl;
e4.insert(otherIndices);
printInfo(e4);
e4.a() = e4.b();
e4.start() = e4.end();
Info<< "erase from list: " << otherIndices << nl;
Info<< "removed " << e4.erase(otherIndices) << " values" << nl;
printInfo(e4);

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

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -56,7 +56,7 @@ int main(int argc, char *argv[])
// No. of Nodes = nCells
// No. of Edges connecting Nodes = nInternalFaces
OFstream os(args.caseName() + ".graph", IOstreamOption::ASCII);
OFstream os(args.caseName() + ".graph", IOstream::ASCII);
os << "%% metis graph file, of an OpenFOAM mesh %%" << nl
<< "%% nCells=" << mesh.nCells()

View File

@ -39,7 +39,7 @@ namespace Foam
{
typedef GeometricField<vector2D, fvPatchField, volMesh> volVector2DField;
defineTemplateTypeNameAndDebug(volVector2DField::Internal, 0);
defineTemplate2TypeNameAndDebug(volVector2DField::Internal, 0);
defineTemplateTypeNameAndDebug(volVector2DField, 0);
typedef fvPatchField<vector2D> fvPatchVector2DField;

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2018-2022 OpenCFD Ltd.
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -30,31 +30,11 @@ Description
#include "argList.H"
#include "instant.H"
#include "Pair.H"
#include "fileNameInstant.H"
#include "DynamicList.H"
using namespace Foam;
template<class T>
Ostream& printInstant(const UList<T>& times, const label i)
{
if (i >= 0 && i < times.size())
{
Info<< " (" << times[i] << ")";
}
return Info;
}
template<class T>
Ostream& printInstant(const UList<T>& times, const Pair<label>& range)
{
printInstant(times, range.first());
printInstant(times, range.second());
return Info;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
@ -68,7 +48,6 @@ int main(int argc, char *argv[])
times.append({300.456, "def"});
times.append({454.456, "xyz"});
times.append({10, "ten"});
times.append({15, "fifteen"});
{
word timeName("twenty");
@ -82,19 +61,6 @@ int main(int argc, char *argv[])
sort(times);
Info<< "Sorted:" << times << nl;
for (const scalar val : { -0.5, 5.0, 18.0, 25.0, 450.0, 480.0 })
{
label start = instant::findStart(times, val);
Pair<label> range = instant::findRange(times, val);
Info<< nl
<< "time:" << val << nl;
Info<< " start:" << start;
printInstant(times, start) << nl;
Info<< " range:" << range;
printInstant(times, range) << nl;
}
DynamicList<fileNameInstant> files;
files.append(fileNameInstant{});

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2018-2022 OpenCFD Ltd.
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -24,11 +24,10 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Description
Print some numerical limits.
Print max limits.
\*---------------------------------------------------------------------------*/
#include <cmath>
#include <limits>
#include "int.H"
#include "uint.H"
@ -38,63 +37,21 @@ Description
using namespace Foam;
std::ostream& print(const char* tag, float val)
{
std::cout
<< tag << val
<< " 0x" << std::hex << *reinterpret_cast<const uint32_t*>(&val);
return std::cout;
}
std::ostream& print(const char* tag, double val)
{
std::cout
<< tag << val
<< " 0x" << std::hex << *reinterpret_cast<const uint64_t*>(&val);
return std::cout;
}
// Have (float|double)Scalar(GREAT|SMALL|..)
#define PrintFloatLimits(FloatType, NanFunction) \
{ \
print("max:", std::numeric_limits<FloatType>::max()); \
print(" VGREAT:", FloatType##ScalarVGREAT); \
print(" ROOTVGREAT:", FloatType##ScalarROOTVGREAT) << nl; \
\
print("min:", std::numeric_limits<FloatType>::min()); \
print(" VSMALL:", FloatType##ScalarVSMALL); \
print(" ROOTVSMALL:", FloatType##ScalarROOTVSMALL) << nl; \
\
print("epsilon:", std::numeric_limits<FloatType>::epsilon()); \
print(" SMALL:", FloatType##ScalarSMALL); \
print(" ROOTSMALL:", FloatType##ScalarROOTSMALL) << nl; \
\
print("1/epsilon:", 1/std::numeric_limits<FloatType>::epsilon()); \
print(" GREAT:", FloatType##ScalarGREAT); \
print(" ROOTGREAT:", FloatType##ScalarROOTGREAT) << nl; \
\
print("nan:", std::NanFunction("nan")) << nl; \
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int main(int argc, char *argv[])
{
//NONE cout<<"int16:" << pTraits<int16_t>::max << nl;
cout<< "=max=" << nl;
cout<< "uint8:" << pTraits<uint8_t>::max << nl;
cout<< "int16:" << std::numeric_limits<int16_t>::max() << nl;
cout<< "int32:" << pTraits<int32_t>::max << nl;
cout<< "uint32:" << pTraits<uint32_t>::max << nl;
cout<< "int64:" << pTraits<int64_t>::max << nl;
cout<< "uint64:" << pTraits<uint64_t>::max << nl;
//NONE Info<<"int16:" << pTraits<int16_t>::max << nl;
Info<< "=max=" << nl;
Info<< "uint8:" << pTraits<uint8_t>::max << nl;
Info<< "int16:" << std::numeric_limits<int16_t>::max() << nl;
Info<< "int32:" << pTraits<int32_t>::max << nl;
Info<< "uint32:" << pTraits<uint32_t>::max << nl;
Info<< "int64:" << pTraits<int64_t>::max << nl;
Info<< "uint64:" << pTraits<uint64_t>::max << nl;
cout<< nl;
Info<< nl;
cout<< "int16:" << std::numeric_limits<int16_t>::max() << nl;
cout<< "int32:" << pTraits<int32_t>::max << nl;
@ -102,7 +59,7 @@ int main(int argc, char *argv[])
cout<< "int64:" << pTraits<int64_t>::max << nl;
cout<< "uint64:" << pTraits<uint64_t>::max << nl;
cout<< nl << "=digits=" << nl;
Info<< nl << "=digits=" << nl;
cout<< "int16:" << std::numeric_limits<int16_t>::digits << nl;
cout<< "int32:" << std::numeric_limits<int32_t>::digits << nl;
@ -113,15 +70,29 @@ int main(int argc, char *argv[])
cout<< "double:" << std::numeric_limits<double>::digits << nl;
cout<< "long double:" << std::numeric_limits<long double>::digits << nl;
// std::nanl (long double)
cout<< nl;
cout<< nl << "=float=" << nl;
PrintFloatLimits(float, nanf);
Info<< nl << "=float=" << nl;
cout<< nl << "=double=" << nl;
PrintFloatLimits(double, nan);
cout<< "max:" << std::numeric_limits<float>::max()
<< " VGREAT:" << floatScalarVGREAT << nl;
cout<< "min:" << std::numeric_limits<float>::min()
<< " VSMALL:" << floatScalarVSMALL << nl;
cout<< "epsilon:" << std::numeric_limits<float>::epsilon()
<< " SMALL:" << floatScalarSMALL << nl;
cout<< "1/epsilon:" << 1.0f/std::numeric_limits<float>::epsilon()
<< " GREAT:" << floatScalarGREAT << nl;
cout<< "---\nEnd\n" << std::endl;
Info<< nl << "=double=" << nl;
cout<< "max:" << std::numeric_limits<double>::max()
<< " VGREAT:" << doubleScalarVGREAT << nl;
cout<< "min:" << std::numeric_limits<double>::min()
<< " VSMALL:" << doubleScalarVSMALL << nl;
cout<< "epsilon:" << std::numeric_limits<double>::epsilon()
<< " SMALL:" << doubleScalarSMALL << nl;
cout<< "1/epsilon:" << 1.0f/std::numeric_limits<double>::epsilon()
<< " GREAT:" << doubleScalarGREAT << nl;
Info << "---\nEnd\n" << endl;
return 0;
}

View File

@ -38,7 +38,8 @@ Description
#include "DiagonalMatrix.H"
#include "RectangularMatrix.H"
#include "scalar.H"
#include "floatScalar.H"
#include "doubleScalar.H"
#include "complex.H"
#include "TestTools.H"

View File

@ -44,7 +44,8 @@ Note
#include "RectangularMatrix.H"
#include "SquareMatrix.H"
#include "scalar.H"
#include "floatScalar.H"
#include "doubleScalar.H"
#include "complex.H"
#include "IOmanip.H"
#include "TestTools.H"

View File

@ -45,7 +45,8 @@ Note
#include "scalarMatrices.H"
#include "RectangularMatrix.H"
#include "SquareMatrix.H"
#include "scalar.H"
#include "floatScalar.H"
#include "doubleScalar.H"
#include "complex.H"
#include "IOmanip.H"
#include "TestTools.H"

View File

@ -46,7 +46,8 @@ Note
#include "RectangularMatrix.H"
#include "SquareMatrix.H"
#include "SymmetricSquareMatrix.H"
#include "scalar.H"
#include "floatScalar.H"
#include "doubleScalar.H"
#include "complex.H"
#include "IOmanip.H"
#include "Random.H"

View File

@ -38,7 +38,7 @@ Description
#include "polyMesh.H"
#include "ListOps.H"
#include "face.H"
#include "tetrahedron.H"
#include "tetPointRef.H"
#include "triFaceList.H"
#include "OFstream.H"
#include "meshTools.H"

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) 2017-2022 OpenCFD Ltd.
Copyright (C) 2017-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -334,7 +334,7 @@ int main(int argc, char *argv[])
DynamicList<char> buf;
OListStream os(std::move(buf), IOstreamOption::BINARY);
OListStream os(std::move(buf), IOstream::BINARY);
os << srcList;
os.swap(buf); // Recover buffer
@ -342,7 +342,7 @@ int main(int argc, char *argv[])
// Read back
List<scalar> dstList;
UIListStream is(buf, IOstreamOption::BINARY);
UIListStream is(buf, IOstream::BINARY);
is.setScalarByteSize(sizeof(otherType));
Info<< "Stream scalar-size ("

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

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2017 OpenFOAM Foundation
Copyright (C) 2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -32,7 +31,7 @@ Description
\*---------------------------------------------------------------------------*/
#include "tetrahedron.H"
#include "tetPointRef.H"
#include "OFstream.H"
#include "meshTools.H"
#include "cut.H"
@ -45,12 +44,12 @@ void writeOBJ
(
Ostream& os,
label& vertI,
const tetPoints& tet
const FixedList<point, 4>& tet
)
{
for (const point& p : tet)
forAll(tet, fp)
{
meshTools::writeOBJ(os, p);
meshTools::writeOBJ(os, tet[fp]);
}
os << "l " << vertI+1 << ' ' << vertI+2 << nl
<< "l " << vertI+1 << ' ' << vertI+3 << nl
@ -62,27 +61,33 @@ void writeOBJ
}
tetPointRef makeTetPointRef(const FixedList<point, 4>& p)
{
return tetPointRef(p[0], p[1], p[2], p[3]);
}
int main(int argc, char *argv[])
{
// Tets to test
tetPoints tetA
(
FixedList<point, 4> tetA
({
point(0, 0, 0),
point(1, 0, 0),
point(1, 1, 0),
point(1, 1, 1)
);
tetPoints tetB
(
});
FixedList<point, 4> tetB
({
point(0.1, 0.1, 0.1),
point(1.1, 0.1, 0.1),
point(1.1, 1.1, 0.1),
point(1.1, 1.1, 1.1)
);
});
// Do intersection
typedef DynamicList<tetPoints> tetList;
typedef DynamicList<FixedList<point, 4>> tetList;
tetList tetsIn1, tetsIn2, tetsOut;
cut::appendOp<tetList> tetOpIn1(tetsIn1);
cut::appendOp<tetList> tetOpIn2(tetsIn2);
@ -150,25 +155,25 @@ int main(int argc, char *argv[])
// Check the volumes
Info<< "Vol A: " << tetA.tet().mag() << endl;
Info<< "Vol A: " << makeTetPointRef(tetA).mag() << endl;
scalar volIn = 0;
for (const auto& t : tetsIn)
forAll(tetsIn, i)
{
volIn += t.tet().mag();
volIn += makeTetPointRef(tetsIn[i]).mag();
}
Info<< "Vol A inside B: " << volIn << endl;
scalar volOut = 0;
for (const auto& t : tetsOut)
forAll(tetsOut, i)
{
volOut += t.tet().mag();
volOut += makeTetPointRef(tetsOut[i]).mag();
}
Info<< "Vol A outside B: " << volOut << endl;
Info<< "Sum inside and outside: " << volIn + volOut << endl;
if (mag(volIn + volOut - tetA.tet().mag()) > SMALL)
if (mag(volIn + volOut - makeTetPointRef(tetA).mag()) > SMALL)
{
FatalErrorInFunction
<< "Tet volumes do not sum up to input tet."

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

@ -42,7 +42,7 @@ namespace Foam
// - still needs some basic boundary conditions!!
typedef GeometricField<uint8_t, fvPatchField, volMesh> volUint8Field;
defineTemplateTypeNameAndDebug(volUint8Field, 0);
defineTemplate2TypeNameAndDebug(volUint8Field, 0);
} // End namespace Foam
#endif

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

@ -1397,20 +1397,26 @@ void extrudeGeometricProperties
{
Pout<< "Model :" << faceCentres[facei] << endl
<< "regionMesh:" << regionMesh.faceCentres()[facei] << endl;
faceStr.writeLine
faceStr.write
(
faceCentres[facei],
regionMesh.faceCentres()[facei]
linePointRef
(
faceCentres[facei],
regionMesh.faceCentres()[facei]
)
);
}
forAll(cellCentres, celli)
{
Pout<< "Model :" << cellCentres[celli] << endl
<< "regionMesh:" << regionMesh.cellCentres()[celli] << endl;
cellStr.writeLine
cellStr.write
(
cellCentres[celli],
regionMesh.cellCentres()[celli]
linePointRef
(
cellCentres[celli],
regionMesh.cellCentres()[celli]
)
);
}
}

View File

@ -152,7 +152,7 @@ void Foam::PrintTable<KeyType, DataType>::print
os << endl;
const List<KeyType> sortedTable(combinedTable.sortedToc());
const List<KeyType>& sortedTable = combinedTable.sortedToc();
forAll(sortedTable, keyI)
{

View File

@ -31,7 +31,7 @@ License
#include "pointIOField.H"
#include "scalarIOField.H"
#include "triadIOField.H"
#include "tetrahedron.H"
#include "tetPointRef.H"
#include "plane.H"
#include "transform.H"
#include "meshTools.H"

View File

@ -27,6 +27,7 @@ License
#include "fileControl.H"
#include "addToRunTimeSelectionTable.H"
#include "tetPointRef.H"
#include "scalarList.H"
#include "vectorTools.H"
#include "pointIOField.H"
@ -49,6 +50,9 @@ addToRunTimeSelectionTable
}
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::fileControl::fileControl

View File

@ -31,6 +31,7 @@ License
#include "cellSizeFunction.H"
#include "triSurfaceMesh.H"
#include "searchableBox.H"
#include "tetPointRef.H"
#include "vectorTools.H"
#include "quaternion.H"

View File

@ -1687,7 +1687,7 @@ void Foam::conformalVoronoiMesh::move()
)
)
{
multipleIntersections.writeLine(ptA, ptB);
multipleIntersections.write(linePointRef(ptA, ptB));
}
}
}

View File

@ -83,7 +83,7 @@ SourceFiles
namespace Foam
{
// Forward Declarations
// Forward declaration of classes
class initialPointsMethod;
class relaxationModel;
class faceAreaWeightModel;

View File

@ -1433,15 +1433,18 @@ void Foam::conformalVoronoiMesh::indexDualVertices
// && (mag(snapDir & norm[0]) > 0.5)
// )
// {
// snapping1.writeLine
// snapping1.write
// (
// dual,
// nearestPointOnTet
// linePointRef(dual, nearestPointOnTet)
// );
// snapping2.writeLine
//
// snapping2.write
// (
// nearestPointOnTet,
// hitInfo.hitPoint()
// linePointRef
// (
// nearestPointOnTet,
// hitInfo.hitPoint()
// )
// );
//
// pts[cit->cellIndex()] = hitInfo.hitPoint();
@ -1761,10 +1764,9 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
if ((*vcit)->real())
{
featurePointDualsStr.writeLine
featurePointDualsStr.write
(
topoint(vit->point()),
(*vcit)->dual()
linePointRef(topoint(vit->point()), (*vcit)->dual())
);
}
}
@ -1865,7 +1867,7 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
<< " " << vc2->dual()
<< endl;
startCellStr.writeLine(vc1->dual(), vc2->dual());
startCellStr.write(linePointRef(vc1->dual(), vc2->dual()));
// Get patch by getting face between cells and the two
// points on the face that are not the feature vertex

View File

@ -1395,7 +1395,10 @@ void Foam::conformalVoronoiMesh::writePointPairs
if (ptPairs_.isPointPair(vA, vB))
{
os.writeLine(topoint(vA->point()), topoint(vB->point()));
os.write
(
linePointRef(topoint(vA->point()), topoint(vB->point()))
);
}
}
}

View File

@ -26,7 +26,7 @@ License
\*---------------------------------------------------------------------------*/
#include "plane.H"
#include "tetrahedron.H"
#include "tetPointRef.H"
#include "pointConversion.H"
#include "CGALTriangulation3DKernel.H"

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2016 OpenFOAM Foundation
Copyright (C) 2016-2022 OpenCFD Ltd.
Copyright (C) 2016-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -73,7 +73,7 @@ scalar getMergeDistance
Info<< "Merge tolerance : " << mergeTol << nl
<< "Write tolerance : " << writeTol << endl;
if (runTime.writeFormat() == IOstreamOption::ASCII && mergeTol < writeTol)
if (runTime.writeFormat() == IOstream::ASCII && mergeTol < writeTol)
{
FatalErrorInFunction
<< "Your current settings specify ASCII writing with "

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

@ -616,7 +616,7 @@ scalar getMergeDistance
<< endl;
// check writing tolerance
if (mesh.time().writeFormat() == IOstreamOption::ASCII && !dryRun)
if (mesh.time().writeFormat() == IOstream::ASCII && !dryRun)
{
const scalar writeTol = std::pow
(
@ -1342,17 +1342,6 @@ int main(int argc, char *argv[])
const snapParameters snapParams(snapDict, dryRun);
Info<< "Setting refinement level of surface to be consistent"
<< " with curvature." << endl;
surfaces.setCurvatureMinLevelFields
(
refineParams.curvature(),
meshRefiner.meshCutter().level0EdgeLength()
);
Info<< "Checked curvature refinement in = "
<< mesh.time().cpuTimeIncrement() << " s" << nl << endl;
// Add all the cellZones and faceZones
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

@ -4,7 +4,7 @@
#include "polyMeshTools.H"
#include "zeroGradientFvPatchFields.H"
#include "syncTools.H"
#include "tetrahedron.H"
#include "tetPointRef.H"
#include "regionSplit.H"
#include "wallDist.H"
#include "cellAspectRatio.H"

View File

@ -606,7 +606,7 @@ void syncPoints
pointField nbrPatchInfo(procPatch.nPoints());
{
// We do not know the number of points on the other side
// so cannot use UIPstream::read
// so cannot use Pstream::read.
IPstream fromNbr
(
Pstream::commsTypes::blocking,

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

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2020-2022 OpenCFD Ltd.
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -55,30 +55,17 @@ int main(int argc, char *argv[])
(
"deltaT",
"time",
"Override deltaT (eg, for accelerated motion)"
);
argList::addOption
(
"endTime",
"time",
"Override endTime (eg, for shorter tests)"
"Override deltaT for accelerated motion"
);
#include "setRootCase.H"
#include "createTime.H"
#include "createNamedMesh.H"
scalar timeVal = 0;
if (args.readIfPresent("deltaT", timeVal))
scalar deltaT = 0;
if (args.readIfPresent("deltaT", deltaT))
{
runTime.setDeltaT(timeVal);
}
if (args.readIfPresent("endTime", timeVal))
{
runTime.stopAt(Time::stopAtControls::saEndTime);
runTime.setEndTime(timeVal);
runTime.setDeltaT(deltaT);
}
autoPtr<motionSolver> motionPtr = motionSolver::New(mesh);

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,

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