Compare commits
127 Commits
feature-po
...
feature-co
| Author | SHA1 | Date | |
|---|---|---|---|
| 54dcde5f9a | |||
| 7dc9ccdcaa | |||
| b2bbc15463 | |||
| 7b38b148fa | |||
| 7f355ba343 | |||
| e1d45ec26e | |||
| 690d02f9e8 | |||
| 31b74cd627 | |||
| f04ccef588 | |||
| 8a8b5db977 | |||
| 5fb1181bb2 | |||
| 411ac5fcfa | |||
| 880215e8e6 | |||
| 3874c1312e | |||
| 09377471a3 | |||
| 2889dc7248 | |||
| d75c60d8ae | |||
| 582b613d5f | |||
| 6cce1cdc8b | |||
| b6203a7de5 | |||
| 701c916764 | |||
| d1c4a225a2 | |||
| 4cfa2ea304 | |||
| b5435cc83e | |||
| 1d5b95b5fe | |||
| 31aadc5c4d | |||
| a803516b16 | |||
| 1b212789e5 | |||
| 688fd5f3f1 | |||
| 75e19c3116 | |||
| 16dd92b38e | |||
| 92c329a8a9 | |||
| 6546dd3f5b | |||
| 752ab418c9 | |||
| d578d48a4f | |||
| 85771c8985 | |||
| 68c5d90ad0 | |||
| 0dcc53ab03 | |||
| 6ac572a179 | |||
| 7fd962926d | |||
| bca093d89c | |||
| 0ef981adbc | |||
| 2d61127606 | |||
| e099e98b8b | |||
| 2ff67f8ce4 | |||
| 13f66313d1 | |||
| 483075b4aa | |||
| 1668519996 | |||
| 5091c79e96 | |||
| 6bd1486a38 | |||
| 93f6cae46a | |||
| 68e36946fd | |||
| c6ecf3113a | |||
| 46e1b00c34 | |||
| a431e0fe9a | |||
| 6d69506294 | |||
| 77ec7ab679 | |||
| 6692ecfbbc | |||
| 3ef892b980 | |||
| a7d6f2720f | |||
| 4a0a63999e | |||
| b1eb3e8746 | |||
| bc03a538cf | |||
| f639538600 | |||
| 3973cf7a83 | |||
| 28e212030d | |||
| cff9c7b60c | |||
| ef47662131 | |||
| 0c84e50583 | |||
| 618faa0ab6 | |||
| 5680ce1ee2 | |||
| f6825c7952 | |||
| d89ecc74be | |||
| 27aa7e4e91 | |||
| 43c0c3989b | |||
| 05194796ef | |||
| 61aaacd088 | |||
| e7f0628d79 | |||
| 7006056eae | |||
| b98f53ceca | |||
| 5a70be0846 | |||
| 78fc102df1 | |||
| fa2aeec45b | |||
| d03a225061 | |||
| abfe30454a | |||
| 3535d7890d | |||
| 47232ccf66 | |||
| cd8bc891f0 | |||
| 1cbbcf15d3 | |||
| b393d6eca1 | |||
| 9de77857a6 | |||
| 46e0ef92d3 | |||
| 8b793f8866 | |||
| 337e672d53 | |||
| 04d880e2ce | |||
| 4f43f0302d | |||
| f7cdd3ef63 | |||
| fac940e1cc | |||
| 7891960bd1 | |||
| 6e2bdb0613 | |||
| 05e4001cf2 | |||
| b6eb300718 | |||
| b4d7a31913 | |||
| 90e9a070a7 | |||
| 3b966afb9c | |||
| 613959c52b | |||
| 25551b23bf | |||
| 73b6ddd760 | |||
| 8b73d06898 | |||
| ec2b1be8c5 | |||
| c138f89c1f | |||
| d9483f5080 | |||
| 7bf0aaf99c | |||
| 51f150d84c | |||
| 71d4a23ec0 | |||
| 995a9705e2 | |||
| 33f20edbb1 | |||
| 710eb5c142 | |||
| 092db087c9 | |||
| 21196d8c0b | |||
| ac574a6ccb | |||
| 87eed74e42 | |||
| 119dd84327 | |||
| 08df023808 | |||
| a9b451b3e4 | |||
| 852f66fc11 | |||
| 08c23685c3 |
@ -1,2 +1,2 @@
|
||||
api=2312
|
||||
patch=0
|
||||
api=2402
|
||||
patch=240220
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -93,24 +94,14 @@ Foam::PDRDragModels::basic::~basic()
|
||||
|
||||
Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basic::Dcu() const
|
||||
{
|
||||
tmp<volSymmTensorField> tDragDcu
|
||||
auto tDragDcu = volSymmTensorField::New
|
||||
(
|
||||
new volSymmTensorField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"tDragDcu",
|
||||
U_.mesh().time().constant(),
|
||||
U_.mesh(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
U_.mesh(),
|
||||
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero)
|
||||
)
|
||||
"tDragDcu",
|
||||
IOobject::NO_REGISTER,
|
||||
U_.mesh(),
|
||||
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero)
|
||||
);
|
||||
|
||||
volSymmTensorField& DragDcu = tDragDcu.ref();
|
||||
auto& DragDcu = tDragDcu.ref();
|
||||
|
||||
if (on_)
|
||||
{
|
||||
@ -127,24 +118,14 @@ Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basic::Dcu() const
|
||||
|
||||
Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basic::Gk() const
|
||||
{
|
||||
tmp<volScalarField> tGk
|
||||
auto tGk = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"tGk",
|
||||
U_.mesh().time().constant(),
|
||||
U_.mesh(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
U_.mesh(),
|
||||
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
|
||||
)
|
||||
"tGk",
|
||||
IOobject::NO_REGISTER,
|
||||
U_.mesh(),
|
||||
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
|
||||
);
|
||||
|
||||
volScalarField& Gk = tGk.ref();
|
||||
auto& Gk = tGk.ref();
|
||||
|
||||
if (on_)
|
||||
{
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -93,23 +94,14 @@ Foam::tmp<Foam::volScalarField> Foam::XiEqModels::SCOPEXiEq::XiEq() const
|
||||
volScalarField K(0.157*upBySu/sqrt(Rl));
|
||||
volScalarField Ma(MaModel.Ma());
|
||||
|
||||
tmp<volScalarField> tXiEq
|
||||
auto tXiEq = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"XiEq",
|
||||
epsilon.time().timeName(),
|
||||
epsilon.db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
epsilon.mesh(),
|
||||
dimensionedScalar(dimless, Zero)
|
||||
)
|
||||
"XiEq",
|
||||
IOobject::NO_REGISTER,
|
||||
epsilon.mesh(),
|
||||
dimensionedScalar(dimless, Zero)
|
||||
);
|
||||
volScalarField& xieq = tXiEq.ref();
|
||||
auto& xieq = tXiEq.ref();
|
||||
|
||||
forAll(xieq, celli)
|
||||
{
|
||||
|
||||
@ -78,11 +78,10 @@ bool Foam::XiEqModel::read(const dictionary& XiEqProperties)
|
||||
void Foam::XiEqModel::writeFields() const
|
||||
{
|
||||
//***HGW It is not clear why B is written here
|
||||
if (Su_.mesh().foundObject<volSymmTensorField>("B"))
|
||||
const auto* B = Su_.mesh().cfindObject<volSymmTensorField>("B");
|
||||
if (B)
|
||||
{
|
||||
const volSymmTensorField& B =
|
||||
Su_.mesh().lookupObject<volSymmTensorField>("B");
|
||||
B.write();
|
||||
B->write();
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,39 +97,26 @@ Foam::XiEqModel::calculateSchelkinEffect(const scalar uPrimeCoef) const
|
||||
const volSymmTensorField& nsv =
|
||||
mesh.lookupObject<volSymmTensorField>("nsv");
|
||||
|
||||
tmp<volScalarField> tN
|
||||
auto tN = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"tN",
|
||||
mesh.time().timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
IOobject::NO_REGISTER
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar(Nv.dimensions(), Zero)
|
||||
)
|
||||
"tN",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh,
|
||||
dimensionedScalar(Nv.dimensions(), Zero)
|
||||
);
|
||||
volScalarField& N = tN.ref();
|
||||
auto& N = tN.ref();
|
||||
|
||||
N.primitiveFieldRef() = Nv.primitiveField()*pow(mesh.V(), 2.0/3.0);
|
||||
|
||||
volSymmTensorField ns
|
||||
auto tns = volSymmTensorField::New
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"tns",
|
||||
mesh.time().timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
"tns",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh,
|
||||
dimensionedSymmTensor(nsv.dimensions(), Zero)
|
||||
);
|
||||
auto& ns = tns.ref();
|
||||
|
||||
ns.primitiveFieldRef() = nsv.primitiveField()*pow(mesh.V(), 2.0/3.0);
|
||||
|
||||
const volVectorField Uhat
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -255,24 +256,14 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
|
||||
scalar phi
|
||||
) const
|
||||
{
|
||||
tmp<volScalarField> tSu0
|
||||
auto tSu0 = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Su0",
|
||||
p.time().timeName(),
|
||||
p.db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
p.mesh(),
|
||||
dimensionedScalar(dimVelocity, Zero)
|
||||
)
|
||||
"Su0",
|
||||
IOobject::NO_REGISTER,
|
||||
p.mesh(),
|
||||
dimensionedScalar(dimVelocity, Zero)
|
||||
);
|
||||
|
||||
volScalarField& Su0 = tSu0.ref();
|
||||
auto& Su0 = tSu0.ref();
|
||||
|
||||
forAll(Su0, celli)
|
||||
{
|
||||
@ -304,24 +295,14 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
|
||||
const volScalarField& phi
|
||||
) const
|
||||
{
|
||||
tmp<volScalarField> tSu0
|
||||
auto tSu0 = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Su0",
|
||||
p.time().timeName(),
|
||||
p.db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
p.mesh(),
|
||||
dimensionedScalar(dimVelocity, Zero)
|
||||
)
|
||||
"Su0",
|
||||
IOobject::NO_REGISTER,
|
||||
p.mesh(),
|
||||
dimensionedScalar(dimVelocity, Zero)
|
||||
);
|
||||
|
||||
volScalarField& Su0 = tSu0.ref();
|
||||
auto& Su0 = tSu0.ref();
|
||||
|
||||
forAll(Su0, celli)
|
||||
{
|
||||
@ -358,24 +339,14 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Ma
|
||||
const volScalarField& phi
|
||||
) const
|
||||
{
|
||||
tmp<volScalarField> tMa
|
||||
auto tMa = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Ma",
|
||||
phi.time().timeName(),
|
||||
phi.db(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
phi.mesh(),
|
||||
dimensionedScalar(dimless, Zero)
|
||||
)
|
||||
"Ma",
|
||||
IOobject::NO_REGISTER,
|
||||
phi.mesh(),
|
||||
dimensionedScalar(dimless, Zero)
|
||||
);
|
||||
|
||||
volScalarField& ma = tMa.ref();
|
||||
auto& ma = tMa.ref();
|
||||
|
||||
forAll(ma, celli)
|
||||
{
|
||||
@ -418,21 +389,12 @@ Foam::laminarFlameSpeedModels::SCOPE::Ma() const
|
||||
{
|
||||
const fvMesh& mesh = psiuReactionThermo_.p().mesh();
|
||||
|
||||
return tmp<volScalarField>
|
||||
return volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Ma",
|
||||
mesh.time().timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar("Ma", dimless, Ma(equivalenceRatio_))
|
||||
)
|
||||
"Ma",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh,
|
||||
dimensionedScalar("Ma", dimless, Ma(equivalenceRatio_))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,8 @@ if (pimple.dict().getOrDefault("hydrostaticInitialization", false))
|
||||
"0",
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE
|
||||
IOobject::NO_WRITE,
|
||||
IOobject::REGISTER
|
||||
),
|
||||
mesh
|
||||
)
|
||||
|
||||
@ -3,12 +3,7 @@ if (nAlphaSubCycles > 1)
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -3,12 +3,7 @@ if (nAlphaSubCycles > 1)
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -7,7 +7,6 @@ wclean libso surfaceTensionModels
|
||||
wclean libso VoFphaseCompressibleTurbulenceModels
|
||||
|
||||
wclean
|
||||
wclean compressibleInterDyMFoam
|
||||
wclean compressibleInterFilmFoam
|
||||
wclean compressibleInterIsoFoam
|
||||
|
||||
|
||||
@ -8,7 +8,6 @@ wmake $targetType surfaceTensionModels
|
||||
wmake $targetType VoFphaseCompressibleTurbulenceModels
|
||||
|
||||
wmake $targetType
|
||||
wmake $targetType compressibleInterDyMFoam
|
||||
wmake $targetType compressibleInterFilmFoam
|
||||
wmake $targetType compressibleInterIsoFoam
|
||||
wmake $targetType overCompressibleInterDyMFoam
|
||||
|
||||
@ -1,21 +1,25 @@
|
||||
EXE_INC = \
|
||||
-I../VoF \
|
||||
-ItwoPhaseMixtureThermo \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-IVoFphaseCompressibleTurbulenceModels/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
|
||||
-IVoFphaseCompressibleTurbulenceModels/lnInclude
|
||||
-I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteVolume \
|
||||
-lfvOptions \
|
||||
-lmeshTools \
|
||||
-ldynamicMesh \
|
||||
-ldynamicFvMesh \
|
||||
-ltwoPhaseMixtureThermo \
|
||||
-ltwoPhaseSurfaceTension \
|
||||
-lcompressibleTransportModels \
|
||||
|
||||
@ -4,26 +4,19 @@ if (nAlphaSubCycles > 1)
|
||||
{
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
|
||||
talphaPhi1 = new surfaceScalarField
|
||||
talphaPhi1.reset
|
||||
(
|
||||
IOobject
|
||||
new surfaceScalarField
|
||||
(
|
||||
"alphaPhi1",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar(alphaPhi10.dimensions(), Zero)
|
||||
mesh.newIOobject("alphaPhi1"),
|
||||
mesh,
|
||||
dimensionedScalar(alphaPhi10.dimensions(), Zero)
|
||||
)
|
||||
);
|
||||
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
compressibleInterDyMFoam.C
|
||||
|
||||
EXE = $(FOAM_APPBIN)/compressibleInterDyMFoam
|
||||
@ -1,35 +0,0 @@
|
||||
EXE_INC = \
|
||||
-I.. \
|
||||
-I../../VoF \
|
||||
-I../twoPhaseMixtureThermo \
|
||||
-I../VoFphaseCompressibleTurbulenceModels/lnInclude \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteVolume \
|
||||
-lfvOptions \
|
||||
-lmeshTools \
|
||||
-ltwoPhaseMixtureThermo \
|
||||
-ltwoPhaseSurfaceTension \
|
||||
-lcompressibleTransportModels \
|
||||
-lfluidThermophysicalModels \
|
||||
-lspecie \
|
||||
-ltwoPhaseMixture \
|
||||
-ltwoPhaseProperties \
|
||||
-linterfaceProperties \
|
||||
-lturbulenceModels \
|
||||
-lcompressibleTurbulenceModels \
|
||||
-lthermoTools \
|
||||
-lVoFphaseCompressibleTurbulenceModels \
|
||||
-ldynamicMesh \
|
||||
-ldynamicFvMesh
|
||||
@ -1,43 +0,0 @@
|
||||
volScalarField::Internal Sp
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Sp",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar(dgdt.dimensions(), Zero)
|
||||
);
|
||||
|
||||
volScalarField::Internal Su
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Su",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar(dgdt.dimensions(), Zero)
|
||||
);
|
||||
|
||||
forAll(dgdt, celli)
|
||||
{
|
||||
if (dgdt[celli] > 0.0 && alpha1[celli] > 0.0)
|
||||
{
|
||||
Sp[celli] -= dgdt[celli]*alpha1[celli];
|
||||
Su[celli] += dgdt[celli]*alpha1[celli];
|
||||
}
|
||||
else if (dgdt[celli] < 0.0 && alpha1[celli] < 1.0)
|
||||
{
|
||||
Sp[celli] += dgdt[celli]*(1.0 - alpha1[celli]);
|
||||
}
|
||||
}
|
||||
|
||||
volScalarField::Internal divU
|
||||
(
|
||||
mesh.moving()
|
||||
? fvc::div(phiCN() + mesh.phi())
|
||||
: fvc::div(phiCN())
|
||||
);
|
||||
@ -1,190 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Application
|
||||
compressibleInterDyMFoam
|
||||
|
||||
Description
|
||||
Solver for two compressible, non-isothermal immiscible fluids using a VOF
|
||||
(volume of fluid) phase-fraction based interface capturing approach,
|
||||
with optional mesh motion and mesh topology changes including adaptive
|
||||
re-meshing.
|
||||
|
||||
The momentum and other fluid properties are of the "mixture" and a single
|
||||
momentum equation is solved.
|
||||
|
||||
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvCFD.H"
|
||||
#include "dynamicFvMesh.H"
|
||||
#include "CMULES.H"
|
||||
#include "EulerDdtScheme.H"
|
||||
#include "localEulerDdtScheme.H"
|
||||
#include "CrankNicolsonDdtScheme.H"
|
||||
#include "subCycle.H"
|
||||
#include "compressibleInterPhaseTransportModel.H"
|
||||
#include "pimpleControl.H"
|
||||
#include "fvOptions.H"
|
||||
#include "CorrectPhi.H"
|
||||
#include "fvcSmooth.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
argList::addNote
|
||||
(
|
||||
"Solver for two compressible, non-isothermal immiscible fluids"
|
||||
" using VOF phase-fraction based interface capturing.\n"
|
||||
"With optional mesh motion and mesh topology changes including"
|
||||
" adaptive re-meshing."
|
||||
);
|
||||
|
||||
#include "postProcess.H"
|
||||
|
||||
#include "setRootCaseLists.H"
|
||||
#include "createTime.H"
|
||||
#include "createDynamicFvMesh.H"
|
||||
#include "initContinuityErrs.H"
|
||||
#include "createDyMControls.H"
|
||||
#include "createFields.H"
|
||||
#include "createUf.H"
|
||||
#include "CourantNo.H"
|
||||
#include "setInitialDeltaT.H"
|
||||
|
||||
volScalarField& p = mixture.p();
|
||||
volScalarField& T = mixture.T();
|
||||
const volScalarField& psi1 = mixture.thermo1().psi();
|
||||
const volScalarField& psi2 = mixture.thermo2().psi();
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
|
||||
while (runTime.run())
|
||||
{
|
||||
#include "readDyMControls.H"
|
||||
|
||||
// Store divU and divUp from the previous mesh so that it can be mapped
|
||||
// and used in correctPhi to ensure the corrected phi has the
|
||||
// same divergence
|
||||
volScalarField divU("divU0", fvc::div(fvc::absolute(phi, U)));
|
||||
volScalarField divUp("divUp", fvc::div(fvc::absolute(phi, U), p));
|
||||
|
||||
if (LTS)
|
||||
{
|
||||
#include "setRDeltaT.H"
|
||||
}
|
||||
else
|
||||
{
|
||||
#include "CourantNo.H"
|
||||
#include "alphaCourantNo.H"
|
||||
#include "setDeltaT.H"
|
||||
}
|
||||
|
||||
++runTime;
|
||||
|
||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
||||
|
||||
// --- Pressure-velocity PIMPLE corrector loop
|
||||
while (pimple.loop())
|
||||
{
|
||||
if (pimple.firstIter() || moveMeshOuterCorrectors)
|
||||
{
|
||||
scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
|
||||
|
||||
mesh.update();
|
||||
|
||||
if (mesh.changing())
|
||||
{
|
||||
MRF.update();
|
||||
|
||||
Info<< "Execution time for mesh.update() = "
|
||||
<< runTime.elapsedCpuTime() - timeBeforeMeshUpdate
|
||||
<< " s" << endl;
|
||||
|
||||
gh = (g & mesh.C()) - ghRef;
|
||||
ghf = (g & mesh.Cf()) - ghRef;
|
||||
}
|
||||
|
||||
if ((mesh.changing() && correctPhi))
|
||||
{
|
||||
// Calculate absolute flux from the mapped surface velocity
|
||||
phi = mesh.Sf() & Uf;
|
||||
|
||||
#include "correctPhi.H"
|
||||
|
||||
// Make the fluxes relative to the mesh motion
|
||||
fvc::makeRelative(phi, U);
|
||||
|
||||
mixture.correct();
|
||||
}
|
||||
|
||||
if (mesh.changing() && checkMeshCourantNo)
|
||||
{
|
||||
#include "meshCourantNo.H"
|
||||
}
|
||||
}
|
||||
|
||||
#include "alphaControls.H"
|
||||
#include "compressibleAlphaEqnSubCycle.H"
|
||||
|
||||
turbulence.correctPhasePhi();
|
||||
|
||||
#include "UEqn.H"
|
||||
#include "TEqn.H"
|
||||
|
||||
// --- Pressure corrector loop
|
||||
while (pimple.correct())
|
||||
{
|
||||
#include "pEqn.H"
|
||||
}
|
||||
|
||||
if (pimple.turbCorr())
|
||||
{
|
||||
turbulence.correct();
|
||||
}
|
||||
}
|
||||
|
||||
rho = alpha1*rho1 + alpha2*rho2;
|
||||
|
||||
// Correct p_rgh for consistency with p and the updated densities
|
||||
p_rgh = p - rho*gh;
|
||||
p_rgh.correctBoundaryConditions();
|
||||
|
||||
runTime.write();
|
||||
|
||||
runTime.printExecutionTime(Info);
|
||||
}
|
||||
|
||||
Info<< "End\n" << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,145 +0,0 @@
|
||||
{
|
||||
volScalarField rAU("rAU", 1.0/UEqn.A());
|
||||
surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU));
|
||||
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh));
|
||||
surfaceScalarField phiHbyA
|
||||
(
|
||||
"phiHbyA",
|
||||
fvc::flux(HbyA)
|
||||
+ MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, Uf))
|
||||
);
|
||||
MRF.makeRelative(phiHbyA);
|
||||
|
||||
surfaceScalarField phig
|
||||
(
|
||||
(
|
||||
mixture.surfaceTensionForce()
|
||||
- ghf*fvc::snGrad(rho)
|
||||
)*rAUf*mesh.magSf()
|
||||
);
|
||||
|
||||
phiHbyA += phig;
|
||||
|
||||
// Update the pressure BCs to ensure flux consistency
|
||||
constrainPressure(p_rgh, U, phiHbyA, rAUf, MRF);
|
||||
|
||||
// Make the fluxes relative to the mesh motion
|
||||
fvc::makeRelative(phiHbyA, U);
|
||||
|
||||
tmp<fvScalarMatrix> p_rghEqnComp1;
|
||||
tmp<fvScalarMatrix> p_rghEqnComp2;
|
||||
|
||||
if (pimple.transonic())
|
||||
{
|
||||
#include "rhofs.H"
|
||||
|
||||
surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi);
|
||||
surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi);
|
||||
|
||||
p_rghEqnComp1 =
|
||||
pos(alpha1)
|
||||
*(
|
||||
(
|
||||
fvc::ddt(alpha1, rho1) + fvc::div(alphaPhi1*rho1f)
|
||||
- (fvOptions(alpha1, mixture.thermo1().rho())&rho1)
|
||||
)/rho1
|
||||
- fvc::ddt(alpha1) - fvc::div(alphaPhi1)
|
||||
+ (alpha1/rho1)
|
||||
*correction
|
||||
(
|
||||
psi1*fvm::ddt(p_rgh)
|
||||
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
|
||||
)
|
||||
);
|
||||
p_rghEqnComp1.ref().relax();
|
||||
|
||||
p_rghEqnComp2 =
|
||||
pos(alpha2)
|
||||
*(
|
||||
(
|
||||
fvc::ddt(alpha2, rho2) + fvc::div(alphaPhi2*rho2f)
|
||||
- (fvOptions(alpha2, mixture.thermo2().rho())&rho2)
|
||||
)/rho2
|
||||
- fvc::ddt(alpha2) - fvc::div(alphaPhi2)
|
||||
+ (alpha2/rho2)
|
||||
*correction
|
||||
(
|
||||
psi2*fvm::ddt(p_rgh)
|
||||
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
|
||||
)
|
||||
);
|
||||
p_rghEqnComp2.ref().relax();
|
||||
}
|
||||
else
|
||||
{
|
||||
p_rghEqnComp1 =
|
||||
fvc::ddt(rho1) + psi1*correction(fvm::ddt(p_rgh))
|
||||
+ fvc::div(phi, rho1) - fvc::Sp(fvc::div(phi), rho1);
|
||||
|
||||
p_rghEqnComp2 =
|
||||
fvc::ddt(rho2) + psi2*correction(fvm::ddt(p_rgh))
|
||||
+ fvc::div(phi, rho2) - fvc::Sp(fvc::div(phi), rho2);
|
||||
}
|
||||
|
||||
// Cache p_rgh prior to solve for density update
|
||||
volScalarField p_rgh_0(p_rgh);
|
||||
|
||||
while (pimple.correctNonOrthogonal())
|
||||
{
|
||||
fvScalarMatrix p_rghEqnIncomp
|
||||
(
|
||||
fvc::div(phiHbyA)
|
||||
- fvm::laplacian(rAUf, p_rgh)
|
||||
);
|
||||
|
||||
solve
|
||||
(
|
||||
(
|
||||
(max(alpha1, scalar(0))/rho1)*p_rghEqnComp1()
|
||||
+ (max(alpha2, scalar(0))/rho2)*p_rghEqnComp2()
|
||||
)
|
||||
+ p_rghEqnIncomp,
|
||||
p_rgh.select(pimple.finalInnerIter())
|
||||
);
|
||||
|
||||
if (pimple.finalNonOrthogonalIter())
|
||||
{
|
||||
p = max(p_rgh + (alpha1*rho1 + alpha2*rho2)*gh, pMin);
|
||||
p_rgh = p - (alpha1*rho1 + alpha2*rho2)*gh;
|
||||
|
||||
dgdt =
|
||||
(
|
||||
pos(alpha2)*(p_rghEqnComp2 & p_rgh)/rho2
|
||||
- pos(alpha1)*(p_rghEqnComp1 & p_rgh)/rho1
|
||||
);
|
||||
|
||||
phi = phiHbyA + p_rghEqnIncomp.flux();
|
||||
|
||||
U = HbyA
|
||||
+ rAU*fvc::reconstruct((phig + p_rghEqnIncomp.flux())/rAUf);
|
||||
U.correctBoundaryConditions();
|
||||
fvOptions.correct(U);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Uf = fvc::interpolate(U);
|
||||
surfaceVectorField n(mesh.Sf()/mesh.magSf());
|
||||
Uf += n*(fvc::absolute(phi, U)/mesh.magSf() - (n & Uf));
|
||||
}
|
||||
|
||||
// Update densities from change in p_rgh
|
||||
mixture.thermo1().correctRho(psi1*(p_rgh - p_rgh_0));
|
||||
mixture.thermo2().correctRho(psi2*(p_rgh - p_rgh_0));
|
||||
|
||||
rho = alpha1*rho1 + alpha2*rho2;
|
||||
|
||||
// Correct p_rgh for consistency with p and the updated densities
|
||||
p = max(p_rgh + rho*gh, pMin);
|
||||
p_rgh = p - rho*gh;
|
||||
p_rgh.correctBoundaryConditions();
|
||||
|
||||
|
||||
|
||||
K = 0.5*magSqr(U);
|
||||
}
|
||||
@ -5,8 +5,8 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) OpenCFD OpenCFD Ltd.
|
||||
Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||
Copyright (C) 2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -32,7 +32,9 @@ Group
|
||||
|
||||
Description
|
||||
Solver for two compressible, non-isothermal immiscible fluids using a VOF
|
||||
(volume of fluid) phase-fraction based interface capturing approach.
|
||||
(volume of fluid) phase-fraction based interface capturing approach,
|
||||
with optional mesh motion and mesh topology changes including adaptive
|
||||
re-meshing.
|
||||
|
||||
The momentum and other fluid properties are of the "mixture" and a single
|
||||
momentum equation is solved.
|
||||
@ -45,6 +47,7 @@ Description
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvCFD.H"
|
||||
#include "dynamicFvMesh.H"
|
||||
#include "CMULES.H"
|
||||
#include "EulerDdtScheme.H"
|
||||
#include "localEulerDdtScheme.H"
|
||||
@ -53,6 +56,7 @@ Description
|
||||
#include "compressibleInterPhaseTransportModel.H"
|
||||
#include "pimpleControl.H"
|
||||
#include "fvOptions.H"
|
||||
#include "CorrectPhi.H"
|
||||
#include "fvcSmooth.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -70,30 +74,31 @@ int main(int argc, char *argv[])
|
||||
#include "addCheckCaseOptions.H"
|
||||
#include "setRootCaseLists.H"
|
||||
#include "createTime.H"
|
||||
#include "createMesh.H"
|
||||
#include "createControl.H"
|
||||
#include "createTimeControls.H"
|
||||
#include "createDynamicFvMesh.H"
|
||||
#include "initContinuityErrs.H"
|
||||
#include "createDyMControls.H"
|
||||
#include "createFields.H"
|
||||
#include "CourantNo.H"
|
||||
#include "setInitialDeltaT.H"
|
||||
#include "createUfIfPresent.H"
|
||||
|
||||
volScalarField& p = mixture.p();
|
||||
volScalarField& T = mixture.T();
|
||||
const volScalarField& psi1 = mixture.thermo1().psi();
|
||||
const volScalarField& psi2 = mixture.thermo2().psi();
|
||||
|
||||
if (!LTS)
|
||||
{
|
||||
#include "readTimeControls.H"
|
||||
#include "CourantNo.H"
|
||||
#include "setInitialDeltaT.H"
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
|
||||
while (runTime.run())
|
||||
{
|
||||
#include "readTimeControls.H"
|
||||
#include "readDyMControls.H"
|
||||
|
||||
// Store divU from the previous mesh so that it can be mapped
|
||||
// and used in correctPhi to ensure the corrected phi has the
|
||||
// same divergence
|
||||
volScalarField divU("divU0", fvc::div(fvc::absolute(phi, U)));
|
||||
|
||||
if (LTS)
|
||||
{
|
||||
@ -113,6 +118,44 @@ int main(int argc, char *argv[])
|
||||
// --- Pressure-velocity PIMPLE corrector loop
|
||||
while (pimple.loop())
|
||||
{
|
||||
if (pimple.firstIter() || moveMeshOuterCorrectors)
|
||||
{
|
||||
scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
|
||||
|
||||
mesh.update();
|
||||
|
||||
if (mesh.changing())
|
||||
{
|
||||
MRF.update();
|
||||
|
||||
Info<< "Execution time for mesh.update() = "
|
||||
<< runTime.elapsedCpuTime() - timeBeforeMeshUpdate
|
||||
<< " s" << endl;
|
||||
|
||||
gh = (g & mesh.C()) - ghRef;
|
||||
ghf = (g & mesh.Cf()) - ghRef;
|
||||
|
||||
if (correctPhi)
|
||||
{
|
||||
// Calculate absolute flux
|
||||
// from the mapped surface velocity
|
||||
phi = mesh.Sf() & Uf();
|
||||
|
||||
#include "correctPhi.H"
|
||||
|
||||
// Make the fluxes relative to the mesh motion
|
||||
fvc::makeRelative(phi, U);
|
||||
|
||||
mixture.correct();
|
||||
}
|
||||
|
||||
if (checkMeshCourantNo)
|
||||
{
|
||||
#include "meshCourantNo.H"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#include "alphaControls.H"
|
||||
#include "compressibleAlphaEqnSubCycle.H"
|
||||
|
||||
|
||||
@ -13,26 +13,19 @@ if (nAlphaSubCycles > 1)
|
||||
{
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
|
||||
talphaPhi1 = new surfaceScalarField
|
||||
talphaPhi1.reset
|
||||
(
|
||||
IOobject
|
||||
new surfaceScalarField
|
||||
(
|
||||
"alphaPhi1",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar(alphaPhi10.dimensions(), Zero)
|
||||
mesh.newIOobject("alphaPhi1"),
|
||||
mesh,
|
||||
dimensionedScalar(alphaPhi10.dimensions(), Zero)
|
||||
)
|
||||
);
|
||||
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -8,6 +8,4 @@ CorrectPhi
|
||||
pimple
|
||||
);
|
||||
|
||||
//***HGW phi.oldTime() = phi;
|
||||
|
||||
#include "continuityErrs.H"
|
||||
@ -6,7 +6,7 @@
|
||||
(
|
||||
"phiHbyA",
|
||||
fvc::flux(HbyA)
|
||||
+ MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi))
|
||||
+ MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi, Uf))
|
||||
);
|
||||
MRF.makeRelative(phiHbyA);
|
||||
|
||||
@ -23,6 +23,9 @@
|
||||
// Update the pressure BCs to ensure flux consistency
|
||||
constrainPressure(p_rgh, U, phiHbyA, rAUf, MRF);
|
||||
|
||||
// Make the fluxes relative to the mesh motion
|
||||
fvc::makeRelative(phiHbyA, U);
|
||||
|
||||
tmp<fvScalarMatrix> p_rghEqnComp1;
|
||||
tmp<fvScalarMatrix> p_rghEqnComp2;
|
||||
|
||||
@ -34,8 +37,7 @@
|
||||
surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi);
|
||||
|
||||
p_rghEqnComp1 =
|
||||
pos(alpha1)
|
||||
*(
|
||||
(
|
||||
(
|
||||
fvc::ddt(alpha1, rho1) + fvc::div(alphaPhi1*rho1f)
|
||||
- (fvOptions(alpha1, mixture.thermo1().rho())&rho1)
|
||||
@ -48,11 +50,9 @@
|
||||
+ fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
|
||||
)
|
||||
);
|
||||
p_rghEqnComp1.ref().relax();
|
||||
|
||||
p_rghEqnComp2 =
|
||||
pos(alpha2)
|
||||
*(
|
||||
(
|
||||
(
|
||||
fvc::ddt(alpha2, rho2) + fvc::div(alphaPhi2*rho2f)
|
||||
- (fvOptions(alpha2, mixture.thermo2().rho())&rho2)
|
||||
@ -65,7 +65,6 @@
|
||||
+ fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
|
||||
)
|
||||
);
|
||||
p_rghEqnComp2.ref().relax();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -94,6 +93,21 @@
|
||||
);
|
||||
}
|
||||
|
||||
if (mesh.moving())
|
||||
{
|
||||
p_rghEqnComp1.ref() += fvc::div(mesh.phi())*alpha1;
|
||||
p_rghEqnComp2.ref() += fvc::div(mesh.phi())*alpha2;
|
||||
}
|
||||
|
||||
p_rghEqnComp1.ref() *= pos(alpha1);
|
||||
p_rghEqnComp2.ref() *= pos(alpha2);
|
||||
|
||||
if (pimple.transonic())
|
||||
{
|
||||
p_rghEqnComp1.ref().relax();
|
||||
p_rghEqnComp2.ref().relax();
|
||||
}
|
||||
|
||||
// Cache p_rgh prior to solve for density update
|
||||
volScalarField p_rgh_0(p_rgh);
|
||||
|
||||
@ -131,6 +145,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Correct Uf if the mesh is moving
|
||||
fvc::correctUf(Uf, U, fvc::absolute(phi, U));
|
||||
|
||||
// Update densities from change in p_rgh
|
||||
mixture.thermo1().correctRho(psi1*(p_rgh - p_rgh_0));
|
||||
mixture.thermo2().correctRho(psi2*(p_rgh - p_rgh_0));
|
||||
|
||||
@ -99,7 +99,8 @@ Foam::multiphaseMixtureThermo::multiphaseMixtureThermo
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
IOobject::AUTO_WRITE,
|
||||
IOobject::REGISTER
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
@ -998,19 +999,12 @@ Foam::tmp<Foam::volScalarField> Foam::multiphaseMixtureThermo::K
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::multiphaseMixtureThermo::nearInterface() const
|
||||
{
|
||||
tmp<volScalarField> tnearInt
|
||||
auto tnearInt = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"nearInterface",
|
||||
mesh_.time().timeName(),
|
||||
mesh_
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
)
|
||||
"nearInterface",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
);
|
||||
|
||||
for (const phaseModel& phase : phases_)
|
||||
|
||||
@ -18,12 +18,7 @@
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
surfaceScalarField alphaPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"alphaPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("alphaPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(phi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -158,13 +158,11 @@ Foam::tmp<Foam::volSymmTensorField> Foam::relativeVelocityModel::tauDm() const
|
||||
// Calculate the relative velocity of the continuous phase w.r.t the mean
|
||||
volVectorField Ucm(betad*Udm_/betac);
|
||||
|
||||
return tmp<volSymmTensorField>
|
||||
return volSymmTensorField::New
|
||||
(
|
||||
new volSymmTensorField
|
||||
(
|
||||
"tauDm",
|
||||
betad*sqr(Udm_) + betac*sqr(Ucm)
|
||||
)
|
||||
"tauDm",
|
||||
IOobject::NO_REGISTER,
|
||||
betad*sqr(Udm_) + betac*sqr(Ucm)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2017-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2017-2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -407,7 +407,8 @@ Foam::radiation::laserDTRM::laserDTRM(const volScalarField& T)
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
IOobject::AUTO_WRITE,
|
||||
IOobject::REGISTER
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimPower/dimVolume, Zero)
|
||||
@ -504,7 +505,8 @@ Foam::radiation::laserDTRM::laserDTRM
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
IOobject::AUTO_WRITE,
|
||||
IOobject::REGISTER
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimPower/pow3(dimLength), Zero)
|
||||
@ -535,42 +537,23 @@ Foam::label Foam::radiation::laserDTRM::nBands() const
|
||||
|
||||
void Foam::radiation::laserDTRM::calculate()
|
||||
{
|
||||
tmp<volScalarField> treflectingCells
|
||||
auto treflectingCells = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"reflectingCellsVol",
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar("zero", dimless, -1)
|
||||
)
|
||||
"reflectingCellsVol",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedScalar("zero", dimless, -1)
|
||||
);
|
||||
volScalarField& reflectingCellsVol = treflectingCells.ref();
|
||||
auto& reflectingCellsVol = treflectingCells.ref();
|
||||
|
||||
|
||||
tmp<volVectorField> tnHat
|
||||
auto tnHat = volVectorField::New
|
||||
(
|
||||
new volVectorField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"nHat",
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh_,
|
||||
dimensionedVector(dimless, Zero)
|
||||
)
|
||||
"nHat",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedVector(dimless, Zero)
|
||||
);
|
||||
volVectorField& nHat = tnHat.ref();
|
||||
auto& nHat = tnHat.ref();
|
||||
|
||||
|
||||
// Reset the field
|
||||
@ -686,9 +669,9 @@ void Foam::radiation::laserDTRM::calculate()
|
||||
|
||||
globalIndex::gatherInplaceOp(lines);
|
||||
|
||||
if (Pstream::master())
|
||||
if (UPstream::master())
|
||||
{
|
||||
OBJstream os(type() + ":particlePath.obj");
|
||||
OBJstream os(type() + "-particlePath.obj");
|
||||
|
||||
for (label pointi = 0; pointi < lines.size(); pointi += 2)
|
||||
{
|
||||
|
||||
@ -88,25 +88,14 @@ Foam::radiation::localDensityAbsorptionEmission::localDensityAbsorptionEmission
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::radiation::localDensityAbsorptionEmission::aCont(const label bandI) const
|
||||
{
|
||||
tmp<volScalarField> ta
|
||||
auto ta = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"a",
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
IOobject::NO_REGISTER
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(inv(dimLength), Zero)
|
||||
)
|
||||
"a",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedScalar(inv(dimLength), Zero)
|
||||
);
|
||||
|
||||
volScalarField& a = ta.ref();
|
||||
auto& a = ta.ref();
|
||||
|
||||
forAll(alphaNames_, i)
|
||||
{
|
||||
@ -121,25 +110,14 @@ Foam::radiation::localDensityAbsorptionEmission::aCont(const label bandI) const
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::radiation::localDensityAbsorptionEmission::eCont(const label bandI) const
|
||||
{
|
||||
tmp<volScalarField> te
|
||||
auto te = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"e",
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
IOobject::NO_REGISTER
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(inv(dimLength), Zero)
|
||||
)
|
||||
"e",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedScalar(inv(dimLength), Zero)
|
||||
);
|
||||
|
||||
volScalarField& e = te.ref();
|
||||
auto& e = te.ref();
|
||||
|
||||
forAll(alphaNames_, i)
|
||||
{
|
||||
@ -154,22 +132,12 @@ Foam::radiation::localDensityAbsorptionEmission::eCont(const label bandI) const
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::radiation::localDensityAbsorptionEmission::ECont(const label bandI) const
|
||||
{
|
||||
tmp<volScalarField> tE
|
||||
auto tE = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"E",
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
IOobject::NO_REGISTER
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
|
||||
)
|
||||
"E",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
|
||||
);
|
||||
|
||||
scalarField& E = tE.ref().primitiveFieldRef();
|
||||
|
||||
@ -171,16 +171,8 @@ Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::TSource() const
|
||||
|
||||
const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
|
||||
|
||||
tmp<fvScalarMatrix> tTSource
|
||||
(
|
||||
new fvScalarMatrix
|
||||
(
|
||||
T,
|
||||
dimEnergy/dimTime
|
||||
)
|
||||
);
|
||||
|
||||
fvScalarMatrix& TSource = tTSource.ref();
|
||||
auto tTSource = tmp<fvScalarMatrix>::New(T, dimEnergy/dimTime);
|
||||
auto& TSource = tTSource.ref();
|
||||
|
||||
const twoPhaseMixtureEThermo& thermo =
|
||||
refCast<const twoPhaseMixtureEThermo>
|
||||
|
||||
@ -382,7 +382,7 @@ Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::kappaEff
|
||||
const volScalarField& kappat
|
||||
) const
|
||||
{
|
||||
tmp<Foam::volScalarField> kappaEff(kappa() + kappat);
|
||||
tmp<volScalarField> kappaEff(kappa() + kappat);
|
||||
kappaEff.ref().rename("kappaEff");
|
||||
return kappaEff;
|
||||
}
|
||||
|
||||
@ -3,12 +3,7 @@ if (nAlphaSubCycles > 1)
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -32,12 +32,7 @@ if (nAlphaSubCycles > 1)
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -21,12 +21,7 @@
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -50,7 +50,8 @@
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
IOobject::AUTO_WRITE,
|
||||
IOobject::REGISTER
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar(dimVelocity*dimArea, Zero)
|
||||
|
||||
@ -68,8 +68,9 @@ Foam::multiphaseMixture::multiphaseMixture
|
||||
"transportProperties",
|
||||
U.time().constant(),
|
||||
U.db(),
|
||||
IOobject::MUST_READ_IF_MODIFIED,
|
||||
IOobject::NO_WRITE
|
||||
IOobject::READ_MODIFIED,
|
||||
IOobject::NO_WRITE,
|
||||
IOobject::REGISTER
|
||||
)
|
||||
),
|
||||
|
||||
@ -85,9 +86,7 @@ Foam::multiphaseMixture::multiphaseMixture
|
||||
(
|
||||
"rhoPhi",
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
mesh_
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimMass/dimTime, Zero)
|
||||
@ -101,7 +100,8 @@ Foam::multiphaseMixture::multiphaseMixture
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
IOobject::AUTO_WRITE,
|
||||
IOobject::REGISTER
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
@ -257,19 +257,12 @@ Foam::multiphaseMixture::nuf() const
|
||||
Foam::tmp<Foam::surfaceScalarField>
|
||||
Foam::multiphaseMixture::surfaceTensionForce() const
|
||||
{
|
||||
tmp<surfaceScalarField> tstf
|
||||
auto tstf = surfaceScalarField::New
|
||||
(
|
||||
new surfaceScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"surfaceTensionForce",
|
||||
mesh_.time().timeName(),
|
||||
mesh_
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimensionSet(1, -2, -2, 0, 0), Zero)
|
||||
)
|
||||
"surfaceTensionForce",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedScalar(dimensionSet(1, -2, -2, 0, 0), Zero)
|
||||
);
|
||||
|
||||
surfaceScalarField& stf = tstf.ref();
|
||||
@ -324,12 +317,7 @@ void Foam::multiphaseMixture::solve()
|
||||
{
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh_
|
||||
),
|
||||
mesh_.newIOobject("rhoPhiSum"),
|
||||
mesh_,
|
||||
dimensionedScalar(rhoPhi_.dimensions(), Zero)
|
||||
);
|
||||
@ -552,19 +540,12 @@ Foam::tmp<Foam::volScalarField> Foam::multiphaseMixture::K
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::multiphaseMixture::nearInterface() const
|
||||
{
|
||||
tmp<volScalarField> tnearInt
|
||||
auto tnearInt = volScalarField::New
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"nearInterface",
|
||||
mesh_.time().timeName(),
|
||||
mesh_
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
)
|
||||
"nearInterface",
|
||||
IOobject::NO_REGISTER,
|
||||
mesh_,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
);
|
||||
|
||||
for (const phase& ph : phases_)
|
||||
@ -649,12 +630,7 @@ void Foam::multiphaseMixture::solveAlphas
|
||||
|
||||
volScalarField sumAlpha
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"sumAlpha",
|
||||
mesh_.time().timeName(),
|
||||
mesh_
|
||||
),
|
||||
mesh_.newIOobject("sumAlpha"),
|
||||
mesh_,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
);
|
||||
|
||||
@ -272,10 +272,7 @@ while (pimple.correct())
|
||||
).ptr()
|
||||
);
|
||||
|
||||
deleteDemandDrivenData
|
||||
(
|
||||
pEqnComps[phasei].faceFluxCorrectionPtr()
|
||||
);
|
||||
pEqnComps[phasei].faceFluxCorrectionPtr(nullptr);
|
||||
|
||||
pEqnComps[phasei].relax();
|
||||
}
|
||||
|
||||
@ -5,12 +5,7 @@ if (nAlphaSubCycles > 1)
|
||||
dimensionedScalar totalDeltaT = runTime.deltaT();
|
||||
surfaceScalarField rhoPhiSum
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhoPhiSum",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh.newIOobject("rhoPhiSum"),
|
||||
mesh,
|
||||
dimensionedScalar(rhoPhi.dimensions(), Zero)
|
||||
);
|
||||
|
||||
@ -70,7 +70,10 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
|
||||
labelList cellToCoarse(identity(mesh.nCells()));
|
||||
labelListList coarseToCell(invertOneToMany(mesh.nCells(), cellToCoarse));
|
||||
CompactListList<label> coarseToCell
|
||||
(
|
||||
invertOneToManyCompact(mesh.nCells(), cellToCoarse)
|
||||
);
|
||||
|
||||
++runTime;
|
||||
|
||||
@ -78,16 +81,11 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
volScalarField scalarAgglomeration
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"agglomeration",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh.thisDb().newIOobject("agglomeration"),
|
||||
mesh,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
Foam::zero{},
|
||||
dimless,
|
||||
fvPatchFieldBase::zeroGradientType()
|
||||
);
|
||||
scalarField& fld = scalarAgglomeration.primitiveFieldRef();
|
||||
forAll(fld, celli)
|
||||
@ -142,31 +140,23 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
forAll(addr, fineI)
|
||||
forAll(addr, finei)
|
||||
{
|
||||
const labelList& cellLabels = coarseToCell[fineI];
|
||||
forAll(cellLabels, i)
|
||||
{
|
||||
cellToCoarse[cellLabels[i]] = addr[fineI];
|
||||
}
|
||||
labelUIndList(cellToCoarse, coarseToCell[finei]) = addr[finei];
|
||||
}
|
||||
coarseToCell = invertOneToMany(coarseSize, cellToCoarse);
|
||||
coarseToCell = invertOneToManyCompact(coarseSize, cellToCoarse);
|
||||
|
||||
// Write agglomeration
|
||||
{
|
||||
volScalarField scalarAgglomeration
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"agglomeration",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh.thisDb().newIOobject("agglomeration"),
|
||||
mesh,
|
||||
dimensionedScalar(dimless, Zero)
|
||||
Foam::zero{},
|
||||
dimless,
|
||||
fvPatchFieldBase::zeroGradientType()
|
||||
);
|
||||
|
||||
scalarField& fld = scalarAgglomeration.primitiveFieldRef();
|
||||
forAll(fld, celli)
|
||||
{
|
||||
@ -193,9 +183,9 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
// Determine coarse cc
|
||||
forAll(coarseToCell, coarseI)
|
||||
forAll(coarseToCell, coarsei)
|
||||
{
|
||||
const labelList& cellLabels = coarseToCell[coarseI];
|
||||
const auto& cellLabels = coarseToCell[coarsei];
|
||||
|
||||
point coarseCc = average
|
||||
(
|
||||
@ -204,10 +194,8 @@ int main(int argc, char *argv[])
|
||||
meshTools::writeOBJ(str, coarseCc);
|
||||
vertI++;
|
||||
|
||||
forAll(cellLabels, i)
|
||||
for (label celli : cellLabels)
|
||||
{
|
||||
label celli = cellLabels[i];
|
||||
|
||||
str << "l " << celli+1 << ' ' << vertI << nl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,11 +124,11 @@ int main(int argc, char *argv[])
|
||||
<< "toc: " << flatOutput(table0.toc()) << nl;
|
||||
|
||||
HashTable<label, label, Hash<label>> table2
|
||||
({
|
||||
{3, 10},
|
||||
{5, 12},
|
||||
{7, 16}
|
||||
});
|
||||
(
|
||||
// From key/value pairs
|
||||
labelList({3, 5, 7}),
|
||||
labelList({10, 12, 16})
|
||||
);
|
||||
|
||||
Info<< "table2: " << table2 << nl
|
||||
<< "toc: " << flatOutput(table2.toc()) << nl;
|
||||
|
||||
@ -206,7 +206,7 @@ int main(int argc, char *argv[])
|
||||
#endif
|
||||
|
||||
loopInsert(map, nElem);
|
||||
(void)timer.cpuTimeIncrement();
|
||||
timer.resetCpuTimeIncrement();
|
||||
|
||||
unsigned long sum = 0;
|
||||
for (label loopi = 0; loopi < nFind*nLoops; ++loopi)
|
||||
@ -268,7 +268,7 @@ int main(int argc, char *argv[])
|
||||
HashSet<label, Hash<label>> map(32);
|
||||
|
||||
loopInsert(map, nElem);
|
||||
(void)timer.cpuTimeIncrement();
|
||||
timer.resetCpuTimeIncrement();
|
||||
|
||||
unsigned long sum = 0;
|
||||
for (label loopi = 0; loopi < nFind*nLoops; ++loopi)
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011 OpenFOAM Foundation
|
||||
Copyright (C) 2017-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2017-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -156,29 +156,24 @@ int main(int argc, char *argv[])
|
||||
os.writeEntry("idl3", idl3);
|
||||
}
|
||||
|
||||
if (Pstream::parRun())
|
||||
if (UPstream::parRun())
|
||||
{
|
||||
if (Pstream::master())
|
||||
if (UPstream::master())
|
||||
{
|
||||
Pout<< "full: " << flatOutput(idl3.values()) << nl
|
||||
<< "send: " << flatOutput(idl3) << endl;
|
||||
|
||||
for (const int proci : Pstream::subProcs())
|
||||
for (const int proci : UPstream::subProcs())
|
||||
{
|
||||
OPstream toSlave(Pstream::commsTypes::scheduled, proci);
|
||||
toSlave << idl3;
|
||||
OPstream::send(idl3, proci);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// From master
|
||||
IPstream fromMaster
|
||||
(
|
||||
Pstream::commsTypes::scheduled,
|
||||
Pstream::masterNo()
|
||||
);
|
||||
List<label> recv;
|
||||
|
||||
List<label> recv(fromMaster);
|
||||
IPstream::recv(recv, UPstream::masterNo());
|
||||
|
||||
Pout<<"recv: " << flatOutput(recv) << endl;
|
||||
}
|
||||
|
||||
@ -67,8 +67,8 @@ using namespace Foam;
|
||||
// // (note:without calculating pointNormals
|
||||
// // to avoid them being stored)
|
||||
//
|
||||
// tmp<pointField> textrudeN(new pointField(p.nPoints(), Zero));
|
||||
// pointField& extrudeN = textrudeN();
|
||||
// auto textrudeN = tmp<pointField>::New(p.nPoints(), Zero);
|
||||
// auto& extrudeN = textrudeN.ref();
|
||||
// {
|
||||
// const faceList& localFaces = p.localFaces();
|
||||
// const vectorField& faceAreas = mesh.faceAreas();
|
||||
|
||||
@ -53,46 +53,37 @@ int main(int argc, char *argv[])
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
|
||||
fileName coherentInst;
|
||||
word coherentInst;
|
||||
coherentInst =
|
||||
(
|
||||
runTime.findInstance
|
||||
(
|
||||
polyMesh::meshSubDir,
|
||||
"coherent",
|
||||
IOobject::READ_IF_PRESENT
|
||||
IOobject::READ_IF_PRESENT,
|
||||
word::null, // No stop instance
|
||||
false // No "constant" fallback (word::null instead)
|
||||
)
|
||||
);
|
||||
|
||||
// Unfortunately with READ_IF_PRESENT, cannot tell if the file
|
||||
// was actually found or not
|
||||
|
||||
Info<< "check: " << (coherentInst/polyMesh::meshSubDir/"coherent") << nl;
|
||||
|
||||
if (!Foam::isFile(coherentInst/polyMesh::meshSubDir/"coherent"))
|
||||
{
|
||||
coherentInst.clear();
|
||||
}
|
||||
|
||||
Info<< "found coherent: " << coherentInst << nl;
|
||||
Info<< "Found coherent \"" << coherentInst << '"' << nl;
|
||||
|
||||
PtrList<entry> entries;
|
||||
|
||||
if (!coherentInst.empty())
|
||||
{
|
||||
IOdictionary coherent
|
||||
(
|
||||
IOobject
|
||||
dictionary coherent =
|
||||
IOdictionary::readContents
|
||||
(
|
||||
"coherent",
|
||||
coherentInst,
|
||||
polyMesh::meshSubDir,
|
||||
runTime,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE,
|
||||
IOobject::NO_REGISTER
|
||||
)
|
||||
);
|
||||
IOobject
|
||||
(
|
||||
"coherent",
|
||||
coherentInst,
|
||||
polyMesh::meshSubDir,
|
||||
runTime,
|
||||
IOobject::MUST_READ
|
||||
)
|
||||
);
|
||||
|
||||
ITstream& is = coherent.lookup("boundary");
|
||||
is >> entries;
|
||||
@ -105,7 +96,7 @@ int main(int argc, char *argv[])
|
||||
Info<< "size: " << polyBoundaryMeshEntries::patchSizes(entries) << nl;
|
||||
Info<< nl;
|
||||
|
||||
fileName boundaryInst;
|
||||
word boundaryInst;
|
||||
boundaryInst =
|
||||
(
|
||||
runTime.findInstance
|
||||
@ -116,7 +107,7 @@ int main(int argc, char *argv[])
|
||||
)
|
||||
);
|
||||
|
||||
Info<< "found boundary: " << boundaryInst << nl;
|
||||
Info<< "Found boundary: \"" << boundaryInst << '"' << nl;
|
||||
|
||||
polyBoundaryMeshEntries pbm
|
||||
(
|
||||
|
||||
@ -123,15 +123,9 @@ int main(int argc, char *argv[])
|
||||
|
||||
const label nDomains = max(cellToProc) + 1;
|
||||
|
||||
// Local mesh connectivity
|
||||
CompactListList<label> cellCells;
|
||||
globalMeshData::calcCellCells
|
||||
(
|
||||
mesh,
|
||||
identity(mesh.nCells()),
|
||||
mesh.nCells(),
|
||||
false,
|
||||
cellCells
|
||||
);
|
||||
globalMeshData::calcCellCells(mesh, cellCells);
|
||||
|
||||
decompositionInformation info
|
||||
(
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
Test-cstring.C
|
||||
Test-cstring.cxx
|
||||
|
||||
EXE = $(FOAM_USER_APPBIN)/Test-cstring
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2016-2017 OpenCFD Ltd.
|
||||
Copyright (C) 2016-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -81,8 +81,7 @@ int print(char *argv[])
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
DynamicList<string> dynlst;
|
||||
dynlst.reserve(16);
|
||||
DynamicList<string> dynlst(16);
|
||||
|
||||
dynlst.push_back("string1 with content");
|
||||
dynlst.push_back("string2 other content");
|
||||
@ -104,6 +103,18 @@ int main(int argc, char *argv[])
|
||||
Info<< nl;
|
||||
}
|
||||
|
||||
{
|
||||
CStringList inC({ "string1", "string2", "string3", "end" });
|
||||
|
||||
Info<< "null-terminated string list from " << nl;
|
||||
print(inC.strings());
|
||||
|
||||
Info<< "sublist: starting at " << inC.size()/2 << nl;
|
||||
print(inC.strings(inC.size()/2));
|
||||
|
||||
Info<< nl;
|
||||
}
|
||||
|
||||
{
|
||||
string testInput
|
||||
(
|
||||
@ -124,7 +135,7 @@ int main(int argc, char *argv[])
|
||||
Info<< nl;
|
||||
}
|
||||
|
||||
Info<<"command-line with " << CStringList::count(argv) << " items"<< endl;
|
||||
Info<< "command-line with " << CStringList::count(argv) << " items" << nl;
|
||||
|
||||
print(argc, argv);
|
||||
|
||||
3
applications/test/faMesh-try/Make/files
Normal file
3
applications/test/faMesh-try/Make/files
Normal file
@ -0,0 +1,3 @@
|
||||
Test-faMesh-try.cxx
|
||||
|
||||
EXE = $(FOAM_USER_APPBIN)/Test-faMesh-try
|
||||
7
applications/test/faMesh-try/Make/options
Normal file
7
applications/test/faMesh-try/Make/options
Normal file
@ -0,0 +1,7 @@
|
||||
EXE_INC = \
|
||||
-I$(LIB_SRC)/finiteArea/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteArea \
|
||||
-lmeshTools
|
||||
63
applications/test/faMesh-try/Test-faMesh-try.cxx
Normal file
63
applications/test/faMesh-try/Test-faMesh-try.cxx
Normal file
@ -0,0 +1,63 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2023 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-faMesh-try
|
||||
|
||||
Description
|
||||
Test for loading of faMesh
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "argList.H"
|
||||
#include "faMesh.H"
|
||||
#include "polyMesh.H"
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#include "addRegionOption.H"
|
||||
#include "addFaRegionOption.H"
|
||||
#include "setRootCase.H"
|
||||
|
||||
#include "createTime.H"
|
||||
#include "createNamedPolyMesh.H"
|
||||
|
||||
#include "getFaRegionOption.H"
|
||||
|
||||
autoPtr<faMesh> aMeshPtr = faMesh::TryNew(areaRegionName, mesh);
|
||||
|
||||
Info<< "area-mesh: " << Switch::name(aMeshPtr) << nl;
|
||||
|
||||
Info<< "\nEnd\n" << nl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
3
applications/test/faMeshesRegistry/Make/files
Normal file
3
applications/test/faMeshesRegistry/Make/files
Normal file
@ -0,0 +1,3 @@
|
||||
Test-faMeshesRegistry.cxx
|
||||
|
||||
EXE = $(FOAM_USER_APPBIN)/Test-faMeshesRegistry
|
||||
7
applications/test/faMeshesRegistry/Make/options
Normal file
7
applications/test/faMeshesRegistry/Make/options
Normal file
@ -0,0 +1,7 @@
|
||||
EXE_INC = \
|
||||
-I$(LIB_SRC)/finiteArea/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteArea \
|
||||
-lmeshTools
|
||||
68
applications/test/faMeshesRegistry/Test-faMeshesRegistry.cxx
Normal file
68
applications/test/faMeshesRegistry/Test-faMeshesRegistry.cxx
Normal file
@ -0,0 +1,68 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2023 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-faMeshesRegistry
|
||||
|
||||
Description
|
||||
Basic tests for faMeshesRegistry
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "argList.H"
|
||||
#include "faMesh.H"
|
||||
#include "faMeshesRegistry.H"
|
||||
#include "polyMesh.H"
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#include "setRootCase.H"
|
||||
|
||||
#include "createTime.H"
|
||||
#include "createPolyMesh.H"
|
||||
|
||||
Info<< "mesh 0: " << mesh.sortedNames() << nl;
|
||||
|
||||
faMeshesRegistry& reg =
|
||||
const_cast<faMeshesRegistry&>(faMeshesRegistry::New(mesh));
|
||||
|
||||
// faMeshesRegistry faReg = faMeshesRegistry(mesh);
|
||||
|
||||
faMesh mesh1(mesh, Foam::zero{});
|
||||
faMesh mesh2("mesh2", mesh, Foam::zero{});
|
||||
|
||||
reg.write();
|
||||
|
||||
Info<< "\nEnd\n" << nl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2023 OpenCFD Ltd.
|
||||
Copyright (C) 2023-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -50,6 +50,9 @@ void printInfo(const meshObjects::gravity& g)
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
argList::addBoolOption("checkout", "Test checkout with release");
|
||||
argList::addBoolOption("release", "Test release instead of delete");
|
||||
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
|
||||
@ -70,14 +73,81 @@ int main(int argc, char *argv[])
|
||||
printInfo(g);
|
||||
}
|
||||
|
||||
Pout<< "registered:" << flatOutput(runTime.sortedToc()) << nl << endl;
|
||||
Pout<< "registered:"
|
||||
<< flatOutput(runTime.sortedToc()) << nl << endl;
|
||||
}
|
||||
|
||||
meshObjects::gravity::Delete("g", runTime);
|
||||
meshObjects::gravity::Delete("something-not-in-registry", runTime);
|
||||
std::unique_ptr<meshObjects::gravity> release1;
|
||||
std::unique_ptr<meshObjects::gravity> release2;
|
||||
|
||||
Info<< "after Delete" << nl;
|
||||
Pout<< "registered:" << flatOutput(runTime.sortedToc()) << endl;
|
||||
if (args.found("release"))
|
||||
{
|
||||
// Ugly!
|
||||
typedef
|
||||
MeshObject<Time, TopologicalMeshObject, meshObjects::gravity>
|
||||
parent_type;
|
||||
|
||||
release1 = meshObjects::gravity::Release("g", runTime);
|
||||
release2 = meshObjects::gravity::Release("#none#", runTime);
|
||||
|
||||
Info<< "release: " << Switch::name(bool(release1))
|
||||
<< ", " << Switch::name(bool(release2)) << nl;
|
||||
|
||||
Info<< "after Release: "
|
||||
<< flatOutput(runTime.sortedToc()) << endl;
|
||||
|
||||
// Do checkout by hand (ugly)
|
||||
if (args.found("checkout"))
|
||||
{
|
||||
if (release1)
|
||||
{
|
||||
release1->parent_type::checkOut();
|
||||
}
|
||||
|
||||
if (release2)
|
||||
{
|
||||
release2->parent_type::checkOut();
|
||||
}
|
||||
|
||||
Info<< "after checkout: "
|
||||
<< flatOutput(runTime.sortedToc()) << endl;
|
||||
}
|
||||
}
|
||||
else if (args.found("checkout"))
|
||||
{
|
||||
// Do checkout as part of release
|
||||
release1 = meshObjects::gravity::Release("g", runTime, true);
|
||||
release2 = meshObjects::gravity::Release("#none#", runTime, true);
|
||||
|
||||
Info<< "release: " << Switch::name(bool(release1))
|
||||
<< ", " << Switch::name(bool(release2)) << nl;
|
||||
|
||||
Info<< "after Release/Checkout(true) : "
|
||||
<< flatOutput(runTime.sortedToc()) << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
meshObjects::gravity::Delete("g", runTime);
|
||||
meshObjects::gravity::Delete("#none#", runTime);
|
||||
|
||||
Info<< "after Delete: "
|
||||
<< flatOutput(runTime.sortedToc()) << endl;
|
||||
}
|
||||
|
||||
|
||||
if (meshObjects::gravity::Store(std::move(release1)))
|
||||
{
|
||||
Info<< "Store pointer" << endl;
|
||||
}
|
||||
|
||||
if (release2)
|
||||
{
|
||||
release2.reset();
|
||||
Info<< "Clear pointer" << endl;
|
||||
}
|
||||
|
||||
Info<< "Before exit: "
|
||||
<< flatOutput(runTime.sortedToc()) << endl;
|
||||
|
||||
Info<< "\nEnd\n" << endl;
|
||||
|
||||
|
||||
@ -1,112 +0,0 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v2312 |
|
||||
| \\ / A nd | Website: www.openfoam.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
note "mesh renumbering dictionary";
|
||||
object renumberMeshDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Write maps from renumbered back to original mesh
|
||||
writeMaps true;
|
||||
|
||||
// Optional entry: sort cells on coupled boundaries to last for use with
|
||||
// e.g. nonBlockingGaussSeidel.
|
||||
sortCoupledFaceCells false;
|
||||
|
||||
// Optional entry: renumber on a block-by-block basis. It uses a
|
||||
// blockCoeffs dictionary to construct a decompositionMethod to do
|
||||
// a block subdivision) and then applies the renumberMethod to each
|
||||
// block in turn. This can be used in large cases to keep the blocks
|
||||
// fitting in cache with all the cache misses bunched at the end.
|
||||
// This number is the approximate size of the blocks - this gets converted
|
||||
// to a number of blocks that is the input to the decomposition method.
|
||||
//blockSize 1000;
|
||||
|
||||
// Optional entry: sort points into internal and boundary points
|
||||
//orderPoints false;
|
||||
|
||||
// Optional: suppress renumbering cellSets,faceSets,pointSets
|
||||
//renumberSets false;
|
||||
|
||||
|
||||
//method CuthillMcKee;
|
||||
//method Sloan;
|
||||
//method manual;
|
||||
method random;
|
||||
//method structured;
|
||||
//method spring;
|
||||
//method zoltan; // only if compiled with zoltan support
|
||||
|
||||
//CuthillMcKeeCoeffs
|
||||
//{
|
||||
// // Reverse CuthillMcKee (RCM) or plain
|
||||
// reverse true;
|
||||
//}
|
||||
|
||||
manualCoeffs
|
||||
{
|
||||
// In system directory: new-to-original (i.e. order) labelIOList
|
||||
dataFile "cellMap";
|
||||
}
|
||||
|
||||
|
||||
// For extruded (i.e. structured in one direction) meshes
|
||||
structuredCoeffs
|
||||
{
|
||||
// Patches that mesh was extruded from. These determine the starting
|
||||
// layer of cells
|
||||
patches (movingWall);
|
||||
// Method to renumber the starting layer of cells
|
||||
method random;
|
||||
|
||||
// Renumber in columns (depthFirst) or in layers
|
||||
depthFirst true;
|
||||
|
||||
// Reverse ordering
|
||||
reverse false;
|
||||
}
|
||||
|
||||
|
||||
springCoeffs
|
||||
{
|
||||
// Maximum jump of cell indices. Is fraction of number of cells
|
||||
maxCo 0.01;
|
||||
|
||||
// Limit the amount of movement; the fraction maxCo gets decreased
|
||||
// with every iteration
|
||||
freezeFraction 0.999;
|
||||
|
||||
// Maximum number of iterations
|
||||
maxIter 1000;
|
||||
}
|
||||
|
||||
|
||||
blockCoeffs
|
||||
{
|
||||
method scotch;
|
||||
//method hierarchical;
|
||||
//hierarchicalCoeffs
|
||||
//{
|
||||
// n (1 2 1);
|
||||
// delta 0.001;
|
||||
// order xyz;
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
zoltanCoeffs
|
||||
{
|
||||
ORDER_METHOD LOCAL_HSFC;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,3 +1,3 @@
|
||||
Test-nullObject.C
|
||||
Test-nullObject.cxx
|
||||
|
||||
EXE = $(FOAM_USER_APPBIN)/Test-nullObject
|
||||
|
||||
@ -37,6 +37,7 @@ Description
|
||||
#include "HashSet.H"
|
||||
#include "faceList.H"
|
||||
#include "pointField.H"
|
||||
#include "globalIndex.H"
|
||||
#include "IOstreams.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -150,6 +151,18 @@ int main()
|
||||
NullObject::nullObject = "hello world";
|
||||
NullObject::nullObject = Foam::identity(5);
|
||||
|
||||
|
||||
{
|
||||
const auto& gi = globalIndex::null();
|
||||
Info<< "globalIndex::null() => "
|
||||
<< " empty: " << gi.empty()
|
||||
<< " nProcs: " << gi.nProcs()
|
||||
<< " total-size: " << gi.totalSize() << nl;
|
||||
|
||||
// Even this works
|
||||
Info<< " offsets: " << gi.offsets() << nl;
|
||||
}
|
||||
|
||||
Info<< nl;
|
||||
|
||||
return 0;
|
||||
@ -62,7 +62,7 @@ scalar sumReduce
|
||||
scalar procValue;
|
||||
UIPstream::read
|
||||
(
|
||||
UPstream::commsTypes::blocking,
|
||||
UPstream::commsTypes::buffered,
|
||||
proci,
|
||||
reinterpret_cast<char*>(&procValue),
|
||||
sizeof(scalar),
|
||||
@ -79,7 +79,7 @@ scalar sumReduce
|
||||
{
|
||||
UOPstream::write
|
||||
(
|
||||
UPstream::commsTypes::blocking,
|
||||
UPstream::commsTypes::buffered,
|
||||
proci,
|
||||
reinterpret_cast<const char*>(&sum),
|
||||
sizeof(scalar),
|
||||
@ -93,7 +93,7 @@ scalar sumReduce
|
||||
{
|
||||
UOPstream::write
|
||||
(
|
||||
UPstream::commsTypes::blocking,
|
||||
UPstream::commsTypes::buffered,
|
||||
UPstream::masterNo(),
|
||||
reinterpret_cast<const char*>(&localValue),
|
||||
sizeof(scalar),
|
||||
@ -105,7 +105,7 @@ scalar sumReduce
|
||||
{
|
||||
UIPstream::read
|
||||
(
|
||||
UPstream::commsTypes::blocking,
|
||||
UPstream::commsTypes::buffered,
|
||||
UPstream::masterNo(),
|
||||
reinterpret_cast<char*>(&sum),
|
||||
sizeof(scalar),
|
||||
|
||||
@ -41,14 +41,7 @@ Description
|
||||
#include "PstreamReduceOps.H"
|
||||
#include "SHA1.H"
|
||||
|
||||
// Include MPI without any C++ bindings
|
||||
#ifndef MPICH_SKIP_MPICXX
|
||||
#define MPICH_SKIP_MPICXX
|
||||
#endif
|
||||
#ifndef OMPI_SKIP_MPICXX
|
||||
#define OMPI_SKIP_MPICXX
|
||||
#endif
|
||||
#include <mpi.h>
|
||||
#include "openfoam_mpi.H"
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
|
||||
@ -41,14 +41,7 @@ Description
|
||||
#include "StringStream.H"
|
||||
#include "Random.H"
|
||||
|
||||
// Include MPI without any C++ bindings
|
||||
#ifndef MPICH_SKIP_MPICXX
|
||||
#define MPICH_SKIP_MPICXX
|
||||
#endif
|
||||
#ifndef OMPI_SKIP_MPICXX
|
||||
#define OMPI_SKIP_MPICXX
|
||||
#endif
|
||||
#include <mpi.h>
|
||||
#include "openfoam_mpi.H"
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
|
||||
@ -40,14 +40,7 @@ Description
|
||||
#include "Pstream.H"
|
||||
#include <iostream>
|
||||
|
||||
// Include MPI without any C++ bindings
|
||||
#ifndef MPICH_SKIP_MPICXX
|
||||
#define MPICH_SKIP_MPICXX
|
||||
#endif
|
||||
#ifndef OMPI_SKIP_MPICXX
|
||||
#define OMPI_SKIP_MPICXX
|
||||
#endif
|
||||
#include <mpi.h>
|
||||
#include "openfoam_mpi.H"
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
|
||||
@ -139,7 +139,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
recvBufs(proci).resize_nocopy(count);
|
||||
|
||||
// Non-blocking read
|
||||
// Non-blocking read - MPI_Irecv()
|
||||
UIPstream::read
|
||||
(
|
||||
recvRequests.emplace_back(),
|
||||
@ -155,9 +155,9 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
IPstream is
|
||||
(
|
||||
UPstream::commsTypes::scheduled,
|
||||
probed.first,
|
||||
probed.second,
|
||||
UPstream::commsTypes::scheduled, // ie, MPI_Recv()
|
||||
proci,
|
||||
count, // bufSize
|
||||
tag,
|
||||
comm
|
||||
);
|
||||
|
||||
@ -66,7 +66,7 @@ int main(int argc, char *argv[])
|
||||
Pstream::myProcNo()
|
||||
);
|
||||
|
||||
PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
|
||||
PstreamBuffers pBufs;
|
||||
|
||||
if (!Pstream::master())
|
||||
{
|
||||
@ -150,7 +150,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Do a non-blocking send inbetween
|
||||
{
|
||||
PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
|
||||
PstreamBuffers pBufs;
|
||||
|
||||
for (const int proci : Pstream::allProcs())
|
||||
{
|
||||
|
||||
@ -131,13 +131,17 @@ void testTransfer(const T& input)
|
||||
for (const int proci : UPstream::subProcs())
|
||||
{
|
||||
Perr<< "master sending to proc:" << proci << endl;
|
||||
OPstream::bsend(data, proci);
|
||||
OPstream os(UPstream::commsTypes::buffered, proci);
|
||||
os << data;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Perr<< "proc sending to master" << endl;
|
||||
OPstream::bsend(data, UPstream::masterNo());
|
||||
{
|
||||
Perr<< "proc sending to master" << endl;
|
||||
OPstream os(UPstream::commsTypes::buffered, UPstream::masterNo());
|
||||
os << data;
|
||||
}
|
||||
|
||||
Perr<< "proc receiving from master" << endl;
|
||||
IPstream::recv(data, UPstream::masterNo());
|
||||
@ -165,13 +169,17 @@ void testTokenized(const T& data)
|
||||
for (const int proci : UPstream::subProcs())
|
||||
{
|
||||
Perr<< "master sending to proc:" << proci << endl;
|
||||
OPstream::bsend(tok, proci);
|
||||
OPstream os(UPstream::commsTypes::buffered, proci);
|
||||
os << tok;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Perr<< "proc sending to master" << endl;
|
||||
OPstream::bsend(tok, UPstream::masterNo());
|
||||
{
|
||||
Perr<< "proc sending to master" << endl;
|
||||
OPstream os(UPstream::commsTypes::buffered, UPstream::masterNo());
|
||||
os << tok;
|
||||
}
|
||||
|
||||
Perr<< "proc receiving from master" << endl;
|
||||
IPstream::recv(tok, UPstream::masterNo());
|
||||
|
||||
@ -34,14 +34,7 @@ Description
|
||||
#include "globalMeshData.H"
|
||||
#include "OFstream.H"
|
||||
|
||||
// Include MPI without any C++ bindings
|
||||
#ifndef MPICH_SKIP_MPICXX
|
||||
#define MPICH_SKIP_MPICXX
|
||||
#endif
|
||||
#ifndef OMPI_SKIP_MPICXX
|
||||
#define OMPI_SKIP_MPICXX
|
||||
#endif
|
||||
#include <mpi.h>
|
||||
#include "openfoam_mpi.H"
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2023 OpenCFD Ltd.
|
||||
Copyright (C) 2023-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -29,219 +29,12 @@ Description
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "argList.H"
|
||||
#include "OSspecific.H" // For fileSize()
|
||||
#include "Fstream.H"
|
||||
#include "Pstream.H"
|
||||
#include "SpanStream.H"
|
||||
#include <limits>
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
|
||||
|
||||
bool optUseSeek = false;
|
||||
bool optVerbose = false;
|
||||
|
||||
// Get file contents. Usually master-only and broadcast
|
||||
static List<char> slurpFile
|
||||
(
|
||||
const fileName& pathname,
|
||||
const bool parallel = UPstream::parRun(),
|
||||
const bool masterOnly = true
|
||||
)
|
||||
{
|
||||
Info<< "slurp master-only:" << masterOnly
|
||||
<< " broadcast:" << (masterOnly && parallel)
|
||||
<< " seek:" << optUseSeek
|
||||
<< " file: " << pathname << nl;
|
||||
|
||||
if (optUseSeek)
|
||||
{
|
||||
Info<< "Rewinding gzstream does not work..." << nl;
|
||||
}
|
||||
|
||||
// -------------------------
|
||||
|
||||
List<char> buffer;
|
||||
|
||||
ifstreamPointer ifp;
|
||||
|
||||
if (UPstream::master() || !masterOnly)
|
||||
{
|
||||
ifp.open(pathname);
|
||||
}
|
||||
|
||||
if (ifp && ifp->good())
|
||||
{
|
||||
Info<< "compressed:"
|
||||
<< (IOstreamOption::COMPRESSED == ifp.whichCompression()) << nl;
|
||||
|
||||
#if 0
|
||||
uint64_t inputSize = Foam::fileSize(pathname);
|
||||
|
||||
if (IOstreamOption::COMPRESSED == ifp.whichCompression())
|
||||
{
|
||||
ifp->ignore(std::numeric_limits<std::streamsize>::max());
|
||||
|
||||
const std::streamsize nread = ifp->gcount();
|
||||
|
||||
if (nread == std::numeric_limits<std::streamsize>::max())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Failed call to ignore()" << nl
|
||||
<< exit(FatalError);
|
||||
}
|
||||
inputSize = ifp->gcount();
|
||||
|
||||
if (optUseSeek)
|
||||
{
|
||||
// Rewinding gzstream does not really work...
|
||||
ifp->rdbuf()->pubseekpos(0, std::ios_base::in);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Open it again - gzstream rewinding is unreliable...
|
||||
ifp.open(pathname);
|
||||
}
|
||||
}
|
||||
|
||||
buffer.resize(label(inputSize));
|
||||
ifp->read(buffer.data(), buffer.size_bytes());
|
||||
|
||||
const std::streamsize nread = ifp->gcount();
|
||||
|
||||
if (nread == std::numeric_limits<std::streamsize>::max())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Failed call to read()" << nl
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
buffer.resize(label(nread)); // Extra safety (paranoid)
|
||||
|
||||
#else
|
||||
|
||||
if (IOstreamOption::COMPRESSED == ifp.whichCompression())
|
||||
{
|
||||
// For compressed files we do not have any idea how large
|
||||
// the result will be. So read chunk-wise.
|
||||
// Using the compressed size for the chunk size:
|
||||
// 50% compression = 2 iterations
|
||||
// 66% compression = 3 iterations
|
||||
// ...
|
||||
|
||||
const auto inputSize = Foam::fileSize(pathname + ".gz");
|
||||
|
||||
const uint64_t chunkSize =
|
||||
(
|
||||
(inputSize <= 1024)
|
||||
? uint64_t(4096)
|
||||
: uint64_t(2*inputSize)
|
||||
);
|
||||
|
||||
uint64_t beg = 0;
|
||||
|
||||
bool normalExit = false;
|
||||
|
||||
for (int iter = 1; iter < 100000; ++iter)
|
||||
{
|
||||
if (optVerbose)
|
||||
{
|
||||
Info<< "iter " << iter << nl;
|
||||
Info<< "chunk " << label(chunkSize) << nl;
|
||||
Info<< "size " << label(iter * chunkSize) << nl;
|
||||
}
|
||||
|
||||
buffer.resize(label(iter * chunkSize));
|
||||
ifp->read(buffer.data() + beg, chunkSize);
|
||||
|
||||
const std::streamsize nread = ifp->gcount();
|
||||
|
||||
if (optVerbose)
|
||||
{
|
||||
Info<< "nread: " << nread << nl;
|
||||
}
|
||||
|
||||
if
|
||||
(
|
||||
nread < 0
|
||||
|| nread == std::numeric_limits<std::streamsize>::max()
|
||||
)
|
||||
{
|
||||
if (iter == 0)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Failed call to read()" << nl
|
||||
<< exit(FatalError);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
beg += uint64_t(nread);
|
||||
if (nread >= 0 && uint64_t(nread) < chunkSize)
|
||||
{
|
||||
normalExit = true;
|
||||
if (optVerbose)
|
||||
{
|
||||
Info<< "stopped after "
|
||||
<< iter << " iterations" << nl;
|
||||
}
|
||||
buffer.resize(label(beg));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!normalExit)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Abnormal exit" << nl
|
||||
<< exit(FatalError);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto inputSize = Foam::fileSize(pathname);
|
||||
|
||||
if (inputSize >= 0)
|
||||
{
|
||||
buffer.resize(label(inputSize));
|
||||
ifp->read(buffer.data(), buffer.size_bytes());
|
||||
|
||||
const std::streamsize nread = ifp->gcount();
|
||||
|
||||
if
|
||||
(
|
||||
nread < 0
|
||||
|| nread == std::numeric_limits<std::streamsize>::max()
|
||||
)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Failed call to read()" << nl
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
buffer.resize(label(nread)); // Extra safety (paranoid)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Done with input file
|
||||
ifp.reset(nullptr);
|
||||
|
||||
if (parallel && masterOnly)
|
||||
{
|
||||
// On the assumption of larger files,
|
||||
// prefer two broadcasts instead of serialization
|
||||
Pstream::broadcastList(buffer);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
// Main program:
|
||||
|
||||
@ -250,9 +43,8 @@ int main(int argc, char *argv[])
|
||||
argList::noBanner();
|
||||
argList::noFunctionObjects();
|
||||
argList::noCheckProcessorDirectories();
|
||||
argList::addBoolOption("seek", "seek with gzstream (fails!)");
|
||||
argList::addVerboseOption("addition information");
|
||||
argList::addBoolOption("seek", "seek with gzstream");
|
||||
argList::addVerboseOption("additional information");
|
||||
argList::addBoolOption("fail", "fail if file cannot be opened");
|
||||
argList::addBoolOption("no-broadcast", "suppress broadcast contents");
|
||||
|
||||
argList::addNote("Test master-only reading (with broadcast)");
|
||||
@ -262,8 +54,7 @@ int main(int argc, char *argv[])
|
||||
#include "setRootCase.H"
|
||||
|
||||
const bool syncPar = (UPstream::parRun() && !args.found("no-broadcast"));
|
||||
optUseSeek = args.found("seek");
|
||||
optVerbose = args.verbose();
|
||||
const bool optFail = args.found("fail");
|
||||
|
||||
auto srcName = args.get<fileName>(1);
|
||||
|
||||
@ -276,7 +67,33 @@ int main(int argc, char *argv[])
|
||||
ICharStream is;
|
||||
|
||||
{
|
||||
List<char> buffer(slurpFile(srcName, syncPar));
|
||||
DynamicList<char> buffer;
|
||||
if (UPstream::master() || !syncPar)
|
||||
{
|
||||
if (optFail)
|
||||
{
|
||||
IFstream ifs(srcName, IOstreamOption::BINARY);
|
||||
|
||||
if (!ifs.good())
|
||||
{
|
||||
FatalIOErrorInFunction(srcName)
|
||||
<< "Cannot open file " << srcName
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
|
||||
buffer = IFstream::readContents(ifs);
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer = IFstream::readContents(srcName);
|
||||
}
|
||||
}
|
||||
|
||||
if (syncPar)
|
||||
{
|
||||
// Prefer two broadcasts instead of serialize/de-serialize
|
||||
Pstream::broadcastList(buffer);
|
||||
}
|
||||
|
||||
is.swap(buffer);
|
||||
}
|
||||
|
||||
@ -30,16 +30,15 @@ Description
|
||||
Gather data from all processors onto all processors.
|
||||
|
||||
SourceFiles
|
||||
Gather.C
|
||||
Gather.txx
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef Gather_H
|
||||
#define Gather_H
|
||||
#ifndef Foam_TestGather_H
|
||||
#define Foam_TestGather_H
|
||||
|
||||
#include "List.H"
|
||||
#include "labelList.H"
|
||||
#include "GatherBase.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -50,34 +49,34 @@ namespace Foam
|
||||
Class Gather Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class T0>
|
||||
template<class Type>
|
||||
class Gather
|
||||
:
|
||||
public GatherBase,
|
||||
public List<T0>
|
||||
public List<Type>
|
||||
{
|
||||
// Private data
|
||||
// Private Data
|
||||
|
||||
//- Number of processors (1 for sequential)
|
||||
label nProcs_;
|
||||
|
||||
//- Storage of type 0
|
||||
//List<T0> data0_;
|
||||
//- Storage
|
||||
//List<Type> list_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from containers across processors
|
||||
Gather(const T0&, const bool redistribute=true);
|
||||
Gather(const Type& localData, const bool redistribute=true);
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// const List<T0>& data0() const
|
||||
// {
|
||||
// return data0_;
|
||||
// }
|
||||
List<Type>& list() noexcept { return *this; }
|
||||
const List<Type>& list() const noexcept { return *this; }
|
||||
// List<Type>& list() noexcept { return list_; }
|
||||
// const List<Type>& list() const noexcept { return list_; }
|
||||
};
|
||||
|
||||
|
||||
@ -30,96 +30,71 @@ License
|
||||
#include "IPstream.H"
|
||||
#include "OPstream.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
// Construct from component
|
||||
template<class T0>
|
||||
Gather<T0>::Gather(const T0& localData, const bool redistribute)
|
||||
template<class Type>
|
||||
Foam::Gather<Type>::Gather(const Type& localData, const bool redistribute)
|
||||
:
|
||||
List<T0>(0),
|
||||
nProcs_(max(1, Pstream::nProcs()))
|
||||
nProcs_(Foam::max(1, UPstream::nProcs()))
|
||||
{
|
||||
this->setSize(nProcs_);
|
||||
this->list().resize(nProcs_);
|
||||
|
||||
//
|
||||
// Collect sizes on all processor
|
||||
//
|
||||
|
||||
if (Pstream::parRun())
|
||||
if (UPstream::parRun())
|
||||
{
|
||||
if (Pstream::master())
|
||||
if (UPstream::master())
|
||||
{
|
||||
auto outIter = this->begin();
|
||||
*outIter = localData;
|
||||
auto iter = this->list().begin();
|
||||
*iter = localData;
|
||||
|
||||
// Receive data
|
||||
for (const int proci : Pstream::subProcs())
|
||||
for (const int proci : UPstream::subProcs())
|
||||
{
|
||||
IPstream fromSlave(Pstream::commsTypes::scheduled, proci);
|
||||
fromSlave >> *(++outIter);
|
||||
++iter;
|
||||
IPstream::recv(*iter, proci);
|
||||
}
|
||||
|
||||
// Send data
|
||||
for (const int proci : Pstream::subProcs())
|
||||
for (const int proci : UPstream::subProcs())
|
||||
{
|
||||
OPstream toSlave(Pstream::commsTypes::scheduled, proci);
|
||||
|
||||
if (redistribute)
|
||||
{
|
||||
toSlave << *this;
|
||||
OPstream::send(*this, proci);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Dummy send just to balance sends/receives
|
||||
toSlave << 0;
|
||||
// Dummy send (to balance sends/receives)
|
||||
OPstream::send(label(0), proci);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Slave: send my local data to master
|
||||
{
|
||||
OPstream toMaster
|
||||
(
|
||||
Pstream::commsTypes::scheduled,
|
||||
Pstream::masterNo()
|
||||
);
|
||||
toMaster << localData;
|
||||
}
|
||||
// Send my local data to master
|
||||
OPstream::send(localData, UPstream::masterNo());
|
||||
|
||||
// Receive data from master
|
||||
if (redistribute)
|
||||
{
|
||||
IPstream fromMaster
|
||||
(
|
||||
Pstream::commsTypes::scheduled,
|
||||
Pstream::masterNo()
|
||||
);
|
||||
if (redistribute)
|
||||
{
|
||||
fromMaster >> *this;
|
||||
}
|
||||
else
|
||||
{
|
||||
label dummy;
|
||||
fromMaster >> dummy;
|
||||
}
|
||||
IPstream::recv(*this, UPstream::masterNo());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Dummy receive
|
||||
label dummy;
|
||||
IPstream::recv(dummy, UPstream::masterNo());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this->operator[](0) = localData;
|
||||
this->list().resize(1);
|
||||
this->list()[0] = localData;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,102 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
-------------------------------------------------------------------------------
|
||||
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/>.
|
||||
|
||||
Class
|
||||
Foam::GatherBase
|
||||
|
||||
Description
|
||||
|
||||
SourceFiles
|
||||
GatherBase.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef GatherBase_H
|
||||
#define GatherBase_H
|
||||
|
||||
#include "List.H"
|
||||
#include "labelList.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class GatherBase Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class GatherBase
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//- Flatten: appends all elements of list into one single list.
|
||||
// Used to collapse 'Gathered' data.
|
||||
template<class T>
|
||||
static T flatten(const List<T>);
|
||||
|
||||
//- Flatten and offset 'Gathered' indices (into value) so they
|
||||
// remain valid with respect to values (after they have been flattened)
|
||||
template<class DataType, class IndexType, class AddOp>
|
||||
static IndexType offset
|
||||
(
|
||||
const List<DataType>& values,
|
||||
const List<IndexType>& indices,
|
||||
AddOp aop
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
template<class T>
|
||||
class AddOp
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
T operator()
|
||||
(
|
||||
const T& x,
|
||||
const label offset
|
||||
) const
|
||||
{
|
||||
return x + offset;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "GatherBase.txx"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -44,7 +44,7 @@ Description
|
||||
Format options:
|
||||
\table
|
||||
Property | Description | Required | Default
|
||||
commsType | blocking/nonBlocking/scheduled | no | scheduled
|
||||
commsType | scheduled/nonBlocking/buffered | no | scheduled
|
||||
merge | Enable geometry/field merging | no | true
|
||||
write | Write file(s) | no | false
|
||||
narrow | Communicate with narrowed values | no | false
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2017-2023 OpenCFD Ltd.
|
||||
Copyright (C) 2017-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -35,6 +35,9 @@ Description
|
||||
#include "labelList.H"
|
||||
#include "scalarList.H"
|
||||
#include "DynamicList.H"
|
||||
#include "labelField.H"
|
||||
#include "scalarField.H"
|
||||
#include "SubField.H"
|
||||
#include "SpanStream.H"
|
||||
#include "formattingEntry.H"
|
||||
|
||||
@ -90,7 +93,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
// This also works, but not actually using the autoPtr directly
|
||||
|
||||
autoPtr<token::Compound<labelList>> ptr
|
||||
autoPtr<token::compound> ptr
|
||||
(
|
||||
new token::Compound<labelList>(identity(10, -9))
|
||||
);
|
||||
@ -131,44 +134,50 @@ int main(int argc, char *argv[])
|
||||
Info<< "resized: "
|
||||
<< ctok1.info() << nl << ctok1 << endl;
|
||||
|
||||
const scalarList* listptr = ctok1.compoundToken().isA<scalarList>();
|
||||
if (listptr)
|
||||
{
|
||||
for (scalar& val : const_cast<scalarList&>(*listptr))
|
||||
// Using isA<> on compoundToken()
|
||||
const auto* listptr = ctok1.compoundToken().isA<scalarList>();
|
||||
if (listptr)
|
||||
{
|
||||
val *= 5;
|
||||
}
|
||||
// sneaky, SubField bypasses const!
|
||||
scalarField::subField fld(*listptr);
|
||||
fld *= 5;
|
||||
|
||||
Info<< "multiplied List<scalar>: "
|
||||
<< ctok1.info() << nl << ctok1 << endl;
|
||||
Info<< "multiplied List<scalar>: "
|
||||
<< ctok1.info() << nl << ctok1 << endl;
|
||||
}
|
||||
}
|
||||
|
||||
listptr = ctok1.isCompound<scalarList>();
|
||||
if (listptr)
|
||||
{
|
||||
for (scalar& val : const_cast<scalarList&>(*listptr))
|
||||
{
|
||||
val /= 2;
|
||||
}
|
||||
// Using isCompound<...> - combined check
|
||||
|
||||
Info<< "divided List<scalar>: "
|
||||
<< ctok1.info() << nl << ctok1 << endl;
|
||||
const auto* listptr = ctok1.isCompound<scalarList>();
|
||||
if (listptr)
|
||||
{
|
||||
scalarField::subField fld(*listptr);
|
||||
fld /= 2;
|
||||
|
||||
Info<< "divided List<scalar>: "
|
||||
<< ctok1.info() << nl << ctok1 << endl;
|
||||
}
|
||||
}
|
||||
|
||||
const labelList* listptr2 = ctok1.isCompound<labelList>();
|
||||
if (listptr2)
|
||||
{
|
||||
for (label& val : const_cast<labelList&>(*listptr2))
|
||||
{
|
||||
val /= 2;
|
||||
}
|
||||
// Using isCompound<...> - combined check
|
||||
|
||||
Info<< "divided List<label>: "
|
||||
<< ctok1.info() << nl << ctok1 << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< "compound is not List<label>" << nl;
|
||||
const auto* listptr = ctok1.isCompound<labelList>();
|
||||
if (listptr)
|
||||
{
|
||||
labelField::subField fld(*listptr);
|
||||
fld /= 2;
|
||||
|
||||
Info<< "divided List<label>: "
|
||||
<< ctok1.info() << nl << ctok1 << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< "compound is not List<label>" << nl;
|
||||
}
|
||||
}
|
||||
|
||||
Info<< "Before fill_zero: " << ctok1 << endl;
|
||||
@ -183,57 +192,33 @@ int main(int argc, char *argv[])
|
||||
auto& ct = ctok1.refCompoundToken();
|
||||
|
||||
ct.resize(20);
|
||||
bool handled = true;
|
||||
bool handled = false;
|
||||
|
||||
switch (ct.typeCode())
|
||||
{
|
||||
case token::tokenType::BOOL :
|
||||
{
|
||||
UList<bool> cmpts
|
||||
(
|
||||
reinterpret_cast<bool*>(ct.data_bytes()),
|
||||
label(ct.size_bytes() / sizeof(bool))
|
||||
);
|
||||
cmpts = false;
|
||||
#undef doLocalCode
|
||||
#define doLocalCode(TokenType, cmptType, cmptValue) \
|
||||
\
|
||||
case TokenType : \
|
||||
{ \
|
||||
UList<cmptType> cmpts \
|
||||
( \
|
||||
reinterpret_cast<cmptType*>(ct.data_bytes()), \
|
||||
label(ct.size_bytes() / sizeof(cmptType)) \
|
||||
); \
|
||||
cmpts = cmptValue; \
|
||||
handled = true; \
|
||||
break; \
|
||||
}
|
||||
break;
|
||||
|
||||
case token::tokenType::LABEL :
|
||||
{
|
||||
UList<label> cmpts
|
||||
(
|
||||
reinterpret_cast<label*>(ct.data_bytes()),
|
||||
label(ct.size_bytes() / sizeof(label))
|
||||
);
|
||||
cmpts = 123;
|
||||
}
|
||||
break;
|
||||
doLocalCode(token::tokenType::BOOL, bool, false);
|
||||
doLocalCode(token::tokenType::LABEL, label, 123);
|
||||
doLocalCode(token::tokenType::FLOAT, float, 2.7);
|
||||
doLocalCode(token::tokenType::DOUBLE, double, 3.1415);
|
||||
|
||||
case token::tokenType::FLOAT :
|
||||
{
|
||||
UList<float> cmpts
|
||||
(
|
||||
reinterpret_cast<float*>(ct.data_bytes()),
|
||||
label(ct.size_bytes() / sizeof(float))
|
||||
);
|
||||
cmpts = 2.7;
|
||||
}
|
||||
break;
|
||||
#undef doLocalCode
|
||||
|
||||
case token::tokenType::DOUBLE :
|
||||
{
|
||||
UList<double> cmpts
|
||||
(
|
||||
reinterpret_cast<double*>(ct.data_bytes()),
|
||||
label(ct.size_bytes() / sizeof(double))
|
||||
);
|
||||
cmpts = 3.1415;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
handled = false;
|
||||
break;
|
||||
default : break;
|
||||
}
|
||||
|
||||
|
||||
@ -241,6 +226,10 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
Info<< "assigned: " << ctok1 << nl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< "Warning: not handled!" << nl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -327,6 +316,65 @@ int main(int argc, char *argv[])
|
||||
Info<< "content" << nl << entry3 << nl;
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
primitiveEntry entry0("entry");
|
||||
|
||||
Info<< "empty: " << entry0 << nl;
|
||||
|
||||
// populate
|
||||
{
|
||||
tokenList& toks = entry0.stream();
|
||||
toks.resize(2);
|
||||
toks[0] = word("nonuniform");
|
||||
toks[1] = token::Compound<scalarList>::New(10, scalar(1));
|
||||
}
|
||||
|
||||
Info<< entry0 << nl;
|
||||
|
||||
// Modify contents
|
||||
for (auto& tok : entry0.stream())
|
||||
{
|
||||
if (tok.isCompound<scalarList>())
|
||||
{
|
||||
tok.refCompoundToken<scalarList>() = 2;
|
||||
}
|
||||
}
|
||||
|
||||
Info<< entry0 << nl;
|
||||
|
||||
|
||||
// Find and 'capture' contents
|
||||
|
||||
{
|
||||
typedef List<scalar> ListType;
|
||||
|
||||
auto* inputDataPtr =
|
||||
const_cast<ListType*>(entry0.stream().findCompound<ListType>());
|
||||
|
||||
if (inputDataPtr)
|
||||
{
|
||||
Info<< "found input data" << nl;
|
||||
Info<< entry0 << nl;
|
||||
|
||||
ListType inputData(std::move(*inputDataPtr));
|
||||
|
||||
Info<< "input data, after move" << nl;
|
||||
Info<< entry0 << nl;
|
||||
|
||||
ListType replaceData(5, scalar(3.145));
|
||||
|
||||
// some manipulation
|
||||
replaceData.back() = scalar(1.414);
|
||||
|
||||
inputDataPtr->swap(replaceData);
|
||||
Info<< "with replaced values" << nl;
|
||||
}
|
||||
}
|
||||
|
||||
Info<< entry0 << nl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -206,8 +206,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
for (const int proci : UPstream::subProcs())
|
||||
{
|
||||
IPstream fromProc(UPstream::commsTypes::scheduled, proci);
|
||||
labelList below(fromProc);
|
||||
labelList below;
|
||||
IPstream::recv(below, proci);
|
||||
|
||||
printConnection(os, proci, below);
|
||||
}
|
||||
@ -222,13 +222,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
OPstream toMaster
|
||||
(
|
||||
Pstream::commsTypes::scheduled,
|
||||
Pstream::masterNo()
|
||||
);
|
||||
|
||||
toMaster << myComm.below();
|
||||
OPstream::send(myComm.below(), UPstream::masterNo());
|
||||
// Pout<< flatOutput(myComm.allBelow()) << nl;
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2016-2017 Wikki Ltd
|
||||
Copyright (C) 2021-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2021-2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -77,6 +77,7 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
|
||||
#include "addRegionOption.H"
|
||||
#include "addFaRegionOption.H"
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createNamedPolyMesh.H"
|
||||
@ -90,8 +91,7 @@ int main(int argc, char *argv[])
|
||||
faMesh::geometryOrder(geometryOrder);
|
||||
}
|
||||
|
||||
// Create
|
||||
faMesh aMesh(mesh);
|
||||
#include "createNamedFaMesh.H"
|
||||
|
||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ do
|
||||
|
||||
bitSet haveMeshOnProc;
|
||||
std::unique_ptr<faMeshSubset> subsetter;
|
||||
IOobjectList objects(0);
|
||||
IOobjectList objects;
|
||||
|
||||
refPtr<fileOperation> newHandler(fileOperation::NewUncollated());
|
||||
|
||||
@ -70,7 +70,13 @@ do
|
||||
|
||||
const bool oldParRun = UPstream::parRun(false);
|
||||
|
||||
objects = IOobjectList(serialMesh.time(), runTime.timeName());
|
||||
objects = IOobjectList
|
||||
(
|
||||
serialMesh.time(),
|
||||
runTime.timeName(),
|
||||
serialMesh.dbDir(),
|
||||
IOobjectOption::NO_REGISTER
|
||||
);
|
||||
|
||||
UPstream::parRun(oldParRun);
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2021-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2021-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
@ -18,7 +18,8 @@ Required Classes
|
||||
- Foam::IOdictionary
|
||||
|
||||
Required Variables
|
||||
- regionName [word]
|
||||
- regionName [word] (the polyMesh region)
|
||||
- areaRegionName [word] (the areaMesh region)
|
||||
- args [argList]
|
||||
- runTime [Time]
|
||||
|
||||
@ -35,6 +36,7 @@ autoPtr<IOdictionary> meshDictPtr;
|
||||
{
|
||||
fileName dictPath;
|
||||
const word& regionDir = Foam::polyMesh::regionName(regionName);
|
||||
const word& areaRegionDir = Foam::polyMesh::regionName(areaRegionName);
|
||||
|
||||
if (args.readIfPresent("dict", dictPath))
|
||||
{
|
||||
@ -47,38 +49,30 @@ autoPtr<IOdictionary> meshDictPtr;
|
||||
}
|
||||
else if
|
||||
(
|
||||
// Check global location
|
||||
exists
|
||||
// Dictionary under system/faMeshDefinition ?
|
||||
// (v2312 and earlier)
|
||||
|
||||
areaRegionDir.empty()
|
||||
&& exists
|
||||
(
|
||||
runTime.path()/runTime.caseConstant()
|
||||
runTime.path()/runTime.caseSystem()
|
||||
/ regionDir/faMesh::meshSubDir/dictName
|
||||
)
|
||||
)
|
||||
{
|
||||
// Dictionary present in constant faMesh directory (old-style)
|
||||
// Dictionary present directly in system/ (v2312 and earlier)
|
||||
|
||||
dictPath =
|
||||
(
|
||||
runTime.constant()
|
||||
/ regionDir/faMesh::meshSubDir/dictName
|
||||
);
|
||||
|
||||
// Warn that constant/faMesh/faMeshDefinition was used
|
||||
// instead of system/faMeshDefinition
|
||||
#if 0
|
||||
WarningIn(args.executable())
|
||||
<< "Using the old faMeshDefinition location: "
|
||||
<< dictPath << nl
|
||||
<< " instead of default location: "
|
||||
<< runTime.system()/regionDir/dictName << nl
|
||||
<< endl;
|
||||
#endif
|
||||
dictPath = runTime.system()/regionDir/dictName;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Assume dictionary is in the system directory
|
||||
// Use system/finite-area/ directory, with region qualifications
|
||||
|
||||
dictPath = runTime.system()/regionDir/dictName;
|
||||
dictPath =
|
||||
(
|
||||
runTime.system()/regionDir
|
||||
/ faMesh::prefix()/areaRegionDir/dictName
|
||||
);
|
||||
}
|
||||
|
||||
IOobject meshDictIO
|
||||
|
||||
@ -104,10 +104,13 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
|
||||
#include "addRegionOption.H"
|
||||
#include "addFaRegionOption.H"
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createNamedPolyMesh.H"
|
||||
|
||||
#include "getFaRegionOption.H"
|
||||
|
||||
const bool doDecompose = !args.found("no-decompose");
|
||||
const bool doDecompFields = !args.found("no-fields");
|
||||
|
||||
@ -133,8 +136,15 @@ int main(int argc, char *argv[])
|
||||
// Preliminary checks
|
||||
#include "checkPatchTopology.H"
|
||||
|
||||
Info << "Create areaMesh";
|
||||
if (!Foam::polyMesh::regionName(areaRegionName).empty())
|
||||
{
|
||||
Foam::Info << ' ' << areaRegionName;
|
||||
}
|
||||
Info << " for polyMesh at time = " << runTime.timeName() << nl;
|
||||
|
||||
// Create
|
||||
faMesh aMesh(mesh, meshDefDict);
|
||||
faMesh aMesh(areaRegionName, mesh, meshDefDict);
|
||||
|
||||
// Mesh information (less verbose)
|
||||
faMeshTools::printMeshChecks(aMesh, 0);
|
||||
@ -155,8 +165,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(10);
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< nl << "Write finite area mesh." << nl;
|
||||
aMesh.write();
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2018-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2018-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -551,9 +551,13 @@ void subsetMesh
|
||||
Info<< "Writing refined mesh to time " << runTime.timeName() << nl
|
||||
<< endl;
|
||||
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
const auto oldPrec = IOstream::minPrecision(10);
|
||||
|
||||
mesh.write();
|
||||
refLevel.write();
|
||||
|
||||
IOstream::defaultPrecision(oldPrec);
|
||||
}
|
||||
|
||||
// Update cutCells for removed cells.
|
||||
@ -922,9 +926,13 @@ int main(int argc, char *argv[])
|
||||
Info<< " Writing refined mesh to time " << runTime.timeName()
|
||||
<< nl << endl;
|
||||
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
const auto oldPrec = IOstream::minPrecision(10);
|
||||
|
||||
mesh.write();
|
||||
refLevel.write();
|
||||
|
||||
IOstream::defaultPrecision(oldPrec);
|
||||
}
|
||||
|
||||
// Update mesh edge stats.
|
||||
@ -993,20 +1001,29 @@ int main(int argc, char *argv[])
|
||||
<< endl;
|
||||
|
||||
// Write final mesh
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
|
||||
// More precision (for points data)
|
||||
const auto oldPrec = IOstream::minPrecision(10);
|
||||
|
||||
mesh.write();
|
||||
refLevel.write();
|
||||
|
||||
IOstream::defaultPrecision(oldPrec);
|
||||
}
|
||||
else if (!writeMesh)
|
||||
{
|
||||
// Write final mesh. (will have been written already if writeMesh=true)
|
||||
|
||||
Info<< "Writing refined mesh to time " << runTime.timeName() << nl
|
||||
<< endl;
|
||||
|
||||
// Write final mesh. (will have been written already if writeMesh=true)
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
const auto oldPrec = IOstream::minPrecision(10);
|
||||
|
||||
mesh.write();
|
||||
refLevel.write();
|
||||
|
||||
IOstream::defaultPrecision(oldPrec);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2019-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -704,8 +704,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing polyMesh" << endl;
|
||||
pShapeMesh.removeFiles();
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2016-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2016-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -198,8 +198,8 @@ int main(int argc, char *argv[])
|
||||
: IOstreamOption::BINARY
|
||||
);
|
||||
|
||||
// Increase the precision of the points data
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
|
||||
// Read control options
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2020-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -756,8 +756,8 @@ int main(int argc, char *argv[])
|
||||
defaultFacesType
|
||||
);
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing polyMesh" << endl;
|
||||
pShapeMesh.removeFiles();
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2022 OpenCFD Ltd.
|
||||
Copyright (C) 2022-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -90,8 +90,8 @@ int main(int argc, char *argv[])
|
||||
argList args(argc, argv);
|
||||
Time runTime(args.rootPath(), args.caseName());
|
||||
|
||||
// Increase the precision of the points data
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
const fileName geomFile(args.get<fileName>(1));
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2016-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2016-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -97,8 +97,8 @@ int main(int argc, char *argv[])
|
||||
: IOstreamOption::BINARY
|
||||
);
|
||||
|
||||
// increase the precision of the points data
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
|
||||
fileFormats::FIREMeshReader reader
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016,2022 OpenFOAM Foundation
|
||||
Copyright (C) 2021 OpenCFD Ltd.
|
||||
Copyright (C) 2021-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -1430,8 +1430,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
mesh.setInstance(runTime.constant());
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< nl << "Writing mesh to " << mesh.objectPath() << endl;
|
||||
mesh.write();
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2020-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -1550,8 +1550,8 @@ int main(int argc, char *argv[])
|
||||
repatcher.repatch();
|
||||
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
|
||||
// Re-do face matching to write sets
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2020-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -868,8 +868,8 @@ int main(int argc, char *argv[])
|
||||
defaultFacesType
|
||||
);
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing polyMesh" << endl;
|
||||
pShapeMesh.removeFiles();
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2020-2023 OpenCFD Ltd.
|
||||
Copyright (C) 2020-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -98,19 +98,6 @@ bool skipSection(IFstream& inFile)
|
||||
}
|
||||
|
||||
|
||||
void renumber
|
||||
(
|
||||
const Map<label>& mshToFoam,
|
||||
labelList& labels
|
||||
)
|
||||
{
|
||||
forAll(labels, labelI)
|
||||
{
|
||||
labels[labelI] = mshToFoam[labels[labelI]];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Find face in pp which uses all vertices in meshF (in mesh point labels)
|
||||
label findFace(const primitivePatch& pp, const labelList& meshF)
|
||||
{
|
||||
@ -587,7 +574,7 @@ void readCellsLegacy
|
||||
{
|
||||
lineStr >> triPoints[0] >> triPoints[1] >> triPoints[2];
|
||||
|
||||
renumber(mshToFoam, triPoints);
|
||||
inplaceRenumber(mshToFoam, triPoints);
|
||||
|
||||
const auto regFnd = physToPatch.cfind(regPhys);
|
||||
|
||||
@ -620,7 +607,7 @@ void readCellsLegacy
|
||||
>> quadPoints[0] >> quadPoints[1] >> quadPoints[2]
|
||||
>> quadPoints[3];
|
||||
|
||||
renumber(mshToFoam, quadPoints);
|
||||
inplaceRenumber(mshToFoam, quadPoints);
|
||||
|
||||
const auto regFnd = physToPatch.cfind(regPhys);
|
||||
|
||||
@ -662,7 +649,7 @@ void readCellsLegacy
|
||||
>> tetPoints[0] >> tetPoints[1] >> tetPoints[2]
|
||||
>> tetPoints[3];
|
||||
|
||||
renumber(mshToFoam, tetPoints);
|
||||
inplaceRenumber(mshToFoam, tetPoints);
|
||||
|
||||
cells[celli++].reset(tet, tetPoints);
|
||||
|
||||
@ -683,7 +670,7 @@ void readCellsLegacy
|
||||
>> pyrPoints[0] >> pyrPoints[1] >> pyrPoints[2]
|
||||
>> pyrPoints[3] >> pyrPoints[4];
|
||||
|
||||
renumber(mshToFoam, pyrPoints);
|
||||
inplaceRenumber(mshToFoam, pyrPoints);
|
||||
|
||||
cells[celli++].reset(pyr, pyrPoints);
|
||||
|
||||
@ -704,7 +691,7 @@ void readCellsLegacy
|
||||
>> prismPoints[0] >> prismPoints[1] >> prismPoints[2]
|
||||
>> prismPoints[3] >> prismPoints[4] >> prismPoints[5];
|
||||
|
||||
renumber(mshToFoam, prismPoints);
|
||||
inplaceRenumber(mshToFoam, prismPoints);
|
||||
|
||||
cells[celli].reset(prism, prismPoints);
|
||||
|
||||
@ -745,7 +732,7 @@ void readCellsLegacy
|
||||
>> hexPoints[4] >> hexPoints[5]
|
||||
>> hexPoints[6] >> hexPoints[7];
|
||||
|
||||
renumber(mshToFoam, hexPoints);
|
||||
inplaceRenumber(mshToFoam, hexPoints);
|
||||
|
||||
cells[celli].reset(hex, hexPoints);
|
||||
|
||||
@ -929,7 +916,7 @@ void readCells
|
||||
IStringStream lineStr(line);
|
||||
lineStr >> elemID >> triPoints[0] >> triPoints[1] >> triPoints[2];
|
||||
|
||||
renumber(mshToFoam, triPoints);
|
||||
inplaceRenumber(mshToFoam, triPoints);
|
||||
|
||||
const auto regFnd = physToPatch.cfind(regPhys);
|
||||
|
||||
@ -967,7 +954,7 @@ void readCells
|
||||
>> quadPoints[0] >> quadPoints[1] >> quadPoints[2]
|
||||
>> quadPoints[3];
|
||||
|
||||
renumber(mshToFoam, quadPoints);
|
||||
inplaceRenumber(mshToFoam, quadPoints);
|
||||
|
||||
const auto regFnd = physToPatch.cfind(regPhys);
|
||||
|
||||
@ -1017,7 +1004,7 @@ void readCells
|
||||
>> tetPoints[0] >> tetPoints[1] >> tetPoints[2]
|
||||
>> tetPoints[3];
|
||||
|
||||
renumber(mshToFoam, tetPoints);
|
||||
inplaceRenumber(mshToFoam, tetPoints);
|
||||
|
||||
cells[celli++].reset(tet, tetPoints);
|
||||
}
|
||||
@ -1044,7 +1031,7 @@ void readCells
|
||||
>> pyrPoints[0] >> pyrPoints[1] >> pyrPoints[2]
|
||||
>> pyrPoints[3] >> pyrPoints[4];
|
||||
|
||||
renumber(mshToFoam, pyrPoints);
|
||||
inplaceRenumber(mshToFoam, pyrPoints);
|
||||
|
||||
cells[celli++].reset(pyr, pyrPoints);
|
||||
}
|
||||
@ -1071,7 +1058,7 @@ void readCells
|
||||
>> prismPoints[0] >> prismPoints[1] >> prismPoints[2]
|
||||
>> prismPoints[3] >> prismPoints[4] >> prismPoints[5];
|
||||
|
||||
renumber(mshToFoam, prismPoints);
|
||||
inplaceRenumber(mshToFoam, prismPoints);
|
||||
|
||||
cells[celli].reset(prism, prismPoints);
|
||||
|
||||
@ -1118,7 +1105,7 @@ void readCells
|
||||
>> hexPoints[4] >> hexPoints[5]
|
||||
>> hexPoints[6] >> hexPoints[7];
|
||||
|
||||
renumber(mshToFoam, hexPoints);
|
||||
inplaceRenumber(mshToFoam, hexPoints);
|
||||
|
||||
cells[celli].reset(hex, hexPoints);
|
||||
|
||||
@ -1704,8 +1691,8 @@ int main(int argc, char *argv[])
|
||||
repatcher.changePatches(newPatches);
|
||||
}
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
mesh.write();
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2021 OpenCFD Ltd.
|
||||
Copyright (C) 2021-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -219,14 +219,14 @@ void readPoints
|
||||
<< endl;
|
||||
}
|
||||
|
||||
point pt;
|
||||
is.getLine(line);
|
||||
pt[0] = readUnvScalar(line.substr(0, 25));
|
||||
pt[1] = readUnvScalar(line.substr(25, 25));
|
||||
pt[2] = readUnvScalar(line.substr(50, 25));
|
||||
|
||||
unvPointID.append(pointi);
|
||||
points.append(pt);
|
||||
unvPointID.push_back(pointi);
|
||||
point& p = points.emplace_back();
|
||||
|
||||
p.x() = readUnvScalar(line.substr(0, 25));
|
||||
p.y() = readUnvScalar(line.substr(25, 25));
|
||||
p.z() = readUnvScalar(line.substr(50, 25));
|
||||
}
|
||||
|
||||
points.shrink();
|
||||
@ -847,7 +847,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
labelList own(boundaryFaces.size(), -1);
|
||||
labelList nei(boundaryFaces.size(), -1);
|
||||
Map<label> faceToCell[2];
|
||||
Pair<Map<label>> faceToCell;
|
||||
|
||||
{
|
||||
// Can use face::symmHasher or use sorted indices instead
|
||||
@ -996,12 +996,7 @@ int main(int argc, char *argv[])
|
||||
labelHashSet alreadyOnBoundary;
|
||||
|
||||
// Construct map from boundaryFaceIndices
|
||||
Map<label> boundaryFaceToIndex(boundaryFaceIndices.size());
|
||||
|
||||
forAll(boundaryFaceIndices, i)
|
||||
{
|
||||
boundaryFaceToIndex.insert(boundaryFaceIndices[i], i);
|
||||
}
|
||||
Map<label> boundaryFaceToIndex(invertToMap(boundaryFaceIndices));
|
||||
|
||||
forAll(patchFaceVerts, patchi)
|
||||
{
|
||||
@ -1216,20 +1211,13 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
const label old = oldIndizes[i];
|
||||
label noveau = -1;
|
||||
label c1 = -1, c2 = -1;
|
||||
if (faceToCell[0].found(old))
|
||||
{
|
||||
c1 = faceToCell[0][old];
|
||||
}
|
||||
if (faceToCell[1].found(old))
|
||||
{
|
||||
c2 = faceToCell[1][old];
|
||||
}
|
||||
|
||||
label c1 = faceToCell[0].lookup(old, -1);
|
||||
label c2 = faceToCell[1].lookup(old, -1);
|
||||
|
||||
if (c1 < c2)
|
||||
{
|
||||
label tmp = c1;
|
||||
c1 = c2;
|
||||
c2 = tmp;
|
||||
std::swap(c1, c2);
|
||||
}
|
||||
if (c2 == -1)
|
||||
{
|
||||
@ -1280,8 +1268,8 @@ int main(int argc, char *argv[])
|
||||
Info << endl;
|
||||
}
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
mesh.write();
|
||||
|
||||
|
||||
@ -569,8 +569,8 @@ polyMesh pShapeMesh
|
||||
defaultFacesType
|
||||
);
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info << "Writing polyMesh" << endl;
|
||||
pShapeMesh.removeFiles();
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2021 OpenCFD Ltd.
|
||||
Copyright (C) 2021-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -161,8 +161,8 @@ int main(int argc, char *argv[])
|
||||
wordList()
|
||||
);
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing mesh ..." << endl;
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2020-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -318,8 +318,8 @@ int main(int argc, char *argv[])
|
||||
patchPhysicalTypes
|
||||
);
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing mesh ..." << endl;
|
||||
mesh.removeFiles();
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2020-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2020-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -264,8 +264,8 @@ int main(int argc, char *argv[])
|
||||
patchPhysicalTypes
|
||||
);
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing polyMesh" << endl;
|
||||
pShapeMesh.removeFiles();
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2016-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2016-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -103,8 +103,8 @@ int main(int argc, char *argv[])
|
||||
: IOstreamOption::BINARY
|
||||
);
|
||||
|
||||
// Increase the precision of the points data
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
|
||||
// Remove extensions and/or trailing '.'
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
Copyright (C) 2015-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2015-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -197,7 +197,7 @@ int main(int argc, char *argv[])
|
||||
//
|
||||
|
||||
pointField points(nNodes);
|
||||
Map<label> nodeToPoint(nNodes);
|
||||
Map<label> nodeToPoint(2*nNodes);
|
||||
|
||||
{
|
||||
labelList pointIndex(nNodes);
|
||||
@ -439,23 +439,16 @@ int main(int argc, char *argv[])
|
||||
|
||||
|
||||
// Get Foam patchID and update region->patch table.
|
||||
label patchi = 0;
|
||||
label patchi = regionToPatch.lookup(region, -1);
|
||||
|
||||
const auto patchFind = regionToPatch.cfind(region);
|
||||
|
||||
if (patchFind.good())
|
||||
{
|
||||
patchi = *patchFind;
|
||||
}
|
||||
else
|
||||
if (patchi < 0)
|
||||
{
|
||||
patchi = nPatches;
|
||||
regionToPatch.insert(region, nPatches++);
|
||||
|
||||
Info<< "Mapping tetgen region " << region
|
||||
<< " to patch "
|
||||
<< patchi << endl;
|
||||
|
||||
regionToPatch.insert(region, nPatches++);
|
||||
}
|
||||
|
||||
boundaryPatch[facei] = patchi;
|
||||
@ -549,8 +542,8 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
}
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing mesh to " << runTime.constant() << endl << endl;
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
Copyright (C) 2021 OpenCFD Ltd.
|
||||
Copyright (C) 2021-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -88,8 +88,8 @@ int main(int argc, char *argv[])
|
||||
wordList()
|
||||
);
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< "Writing mesh ..." << endl;
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2019-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2019-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -231,8 +231,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
polyMesh& mesh = *meshPtr;
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< nl << "Writing polyMesh with "
|
||||
<< mesh.cellZones().size() << " cellZones" << endl;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2016-2023 OpenCFD Ltd.
|
||||
Copyright (C) 2016-2024 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -289,8 +289,8 @@ int main(int argc, char *argv[])
|
||||
// Handle cyclic patches
|
||||
#include "handleCyclicPatches.H"
|
||||
|
||||
// Set the precision of the points data to 10
|
||||
IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision()));
|
||||
// More precision (for points data)
|
||||
IOstream::minPrecision(10);
|
||||
|
||||
Info<< nl << "Writing polyMesh with "
|
||||
<< mesh.cellZones().size() << " cellZones";
|
||||
|
||||
@ -1088,8 +1088,8 @@ tmp<pointField> calcOffset
|
||||
{
|
||||
vectorField::subField fc = pp.faceCentres();
|
||||
|
||||
tmp<pointField> toffsets(new pointField(fc.size()));
|
||||
pointField& offsets = toffsets.ref();
|
||||
auto toffsets = tmp<pointField>::New(fc.size());
|
||||
auto& offsets = toffsets.ref();
|
||||
|
||||
forAll(fc, i)
|
||||
{
|
||||
|
||||
@ -64,8 +64,8 @@ Foam::tmp<Foam::Field<Type>> filterFarPoints
|
||||
const Field<Type>& field
|
||||
)
|
||||
{
|
||||
tmp<Field<Type>> tNewField(new Field<Type>(field.size()));
|
||||
Field<Type>& newField = tNewField.ref();
|
||||
auto tNewField = tmp<Field<Type>>::New(field.size());
|
||||
auto& newField = tNewField.ref();
|
||||
|
||||
label added = 0;
|
||||
label count = 0;
|
||||
|
||||
@ -268,8 +268,8 @@ Foam::tmp<Foam::pointField> Foam::DelaunayMeshTools::allPoints
|
||||
const Triangulation& t
|
||||
)
|
||||
{
|
||||
tmp<pointField> tpts(new pointField(t.vertexCount(), point::max));
|
||||
pointField& pts = tpts.ref();
|
||||
auto tpts = tmp<pointField>::New(t.vertexCount(), point::max);
|
||||
auto& pts = tpts.ref();
|
||||
|
||||
for
|
||||
(
|
||||
|
||||
@ -258,8 +258,8 @@ Foam::label Foam::cellShapeControlMesh::removePoints()
|
||||
|
||||
Foam::tmp<Foam::pointField> Foam::cellShapeControlMesh::cellCentres() const
|
||||
{
|
||||
tmp<pointField> tcellCentres(new pointField(number_of_finite_cells()));
|
||||
pointField& cellCentres = tcellCentres.ref();
|
||||
auto tcellCentres = tmp<pointField>::New(number_of_finite_cells());
|
||||
auto& cellCentres = tcellCentres.ref();
|
||||
|
||||
label count = 0;
|
||||
for
|
||||
|
||||
@ -36,8 +36,8 @@ Foam::tmp<Foam::Field<Type>> Foam::smoothAlignmentSolver::filterFarPoints
|
||||
const Field<Type>& field
|
||||
)
|
||||
{
|
||||
tmp<Field<Type>> tNewField(new Field<Type>(field.size()));
|
||||
Field<Type>& newField = tNewField.ref();
|
||||
auto tNewField = tmp<Field<Type>>::New(field.size());
|
||||
auto& newField = tNewField.ref();
|
||||
|
||||
label added = 0;
|
||||
label count = 0;
|
||||
|
||||
@ -618,7 +618,7 @@ void Foam::conformalVoronoiMesh::reorderProcessorPatches
|
||||
labelList rotation(faces.size(), Zero);
|
||||
labelList faceMap(faces.size(), label(-1));
|
||||
|
||||
PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking);
|
||||
PstreamBuffers pBufs;
|
||||
|
||||
// Send ordering
|
||||
forAll(sortMesh.boundaryMesh(), patchi)
|
||||
|
||||
@ -67,8 +67,8 @@ scalar getMergeDistance
|
||||
const scalar mergeTol =
|
||||
args.getOrDefault<scalar>("mergeTol", defaultMergeTol);
|
||||
|
||||
scalar writeTol =
|
||||
Foam::pow(scalar(10), -scalar(IOstream::defaultPrecision()));
|
||||
const scalar writeTol =
|
||||
std::pow(scalar(10), -scalar(IOstream::defaultPrecision()));
|
||||
|
||||
Info<< "Merge tolerance : " << mergeTol << nl
|
||||
<< "Write tolerance : " << writeTol << endl;
|
||||
@ -310,8 +310,8 @@ tmp<scalarField> signedDistance
|
||||
const labelList& surfaces
|
||||
)
|
||||
{
|
||||
tmp<scalarField> tfld(new scalarField(points.size(), Foam::sqr(GREAT)));
|
||||
scalarField& fld = tfld.ref();
|
||||
auto tfld = tmp<scalarField>::New(points.size(), Foam::sqr(GREAT));
|
||||
auto& fld = tfld.ref();
|
||||
|
||||
// Find nearest
|
||||
List<pointIndexHit> nearest;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user