Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -24,7 +24,6 @@ derivedFvPatchFields/alphatPhaseJayatillekeWallFunction/alphatPhaseJayatillekeWa
|
||||
derivedFvPatchFields/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C
|
||||
derivedFvPatchFields/alphatFixedDmdtfWallBoilingWallFunction/alphatFixedDmdtfWallBoilingWallFunctionFvPatchScalarField.C
|
||||
derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C
|
||||
derivedFvPatchFields/copiedFixedValue/copiedFixedValueFvPatchScalarField.C
|
||||
derivedFvPatchFields/fixedMultiphaseHeatFlux/fixedMultiphaseHeatFluxFvPatchScalarField.C
|
||||
derivedFvPatchFields/coupledMultiphaseTemperature/coupledMultiphaseTemperatureFvPatchScalarField.C
|
||||
|
||||
|
||||
@ -1,119 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2015-2022 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "copiedFixedValueFvPatchScalarField.H"
|
||||
#include "fvPatchFieldMapper.H"
|
||||
#include "volFields.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::copiedFixedValueFvPatchScalarField::copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchScalarField(p, iF),
|
||||
sourceFieldName_("default")
|
||||
{}
|
||||
|
||||
|
||||
Foam::copiedFixedValueFvPatchScalarField::copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchScalarField(p, iF, dict),
|
||||
sourceFieldName_(dict.lookup("sourceFieldName"))
|
||||
{}
|
||||
|
||||
|
||||
Foam::copiedFixedValueFvPatchScalarField::copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const copiedFixedValueFvPatchScalarField& ptf,
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
const fvPatchFieldMapper& mapper
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchScalarField(ptf, p, iF, mapper),
|
||||
sourceFieldName_(ptf.sourceFieldName_)
|
||||
{}
|
||||
|
||||
|
||||
Foam::copiedFixedValueFvPatchScalarField::copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const copiedFixedValueFvPatchScalarField& awfpsf,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
fixedValueFvPatchScalarField(awfpsf, iF),
|
||||
sourceFieldName_(awfpsf.sourceFieldName_)
|
||||
{}
|
||||
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::copiedFixedValueFvPatchScalarField::updateCoeffs()
|
||||
{
|
||||
if (this->updated())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
operator==
|
||||
(
|
||||
patch().lookupPatchField<volScalarField, scalar>(sourceFieldName_)
|
||||
);
|
||||
|
||||
fixedValueFvPatchScalarField::updateCoeffs();
|
||||
}
|
||||
|
||||
|
||||
void Foam::copiedFixedValueFvPatchScalarField::write(Ostream& os) const
|
||||
{
|
||||
fvPatchField<scalar>::write(os);
|
||||
writeEntry(os, "sourceFieldName", sourceFieldName_);
|
||||
writeEntry(os, "value", *this);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
makePatchTypeField
|
||||
(
|
||||
fvPatchScalarField,
|
||||
copiedFixedValueFvPatchScalarField
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,145 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2015-2022 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 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::copiedFixedValueFvPatchScalarField
|
||||
|
||||
Description
|
||||
Copies the boundary values from a user specified field.
|
||||
|
||||
See also
|
||||
Foam::fixedValueFvPatchField
|
||||
|
||||
SourceFiles
|
||||
copiedFixedValueFvPatchScalarField.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef copiedFixedValueFvPatchScalarField_H
|
||||
#define copiedFixedValueFvPatchScalarField_H
|
||||
|
||||
#include "fixedValueFvPatchFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class copiedFixedValueFvPatchScalarField Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class copiedFixedValueFvPatchScalarField
|
||||
:
|
||||
public fixedValueFvPatchScalarField
|
||||
{
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
|
||||
word sourceFieldName_;
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("copiedFixedValue");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from patch and internal field
|
||||
copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&
|
||||
);
|
||||
|
||||
//- Construct from patch, internal field and dictionary
|
||||
copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&,
|
||||
const dictionary&
|
||||
);
|
||||
|
||||
//- Construct by mapping given
|
||||
// copiedFixedValueFvPatchScalarField
|
||||
// onto a new patch
|
||||
copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const copiedFixedValueFvPatchScalarField&,
|
||||
const fvPatch&,
|
||||
const DimensionedField<scalar, volMesh>&,
|
||||
const fvPatchFieldMapper&
|
||||
);
|
||||
|
||||
//- Disallow copy without setting internal field reference
|
||||
copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const copiedFixedValueFvPatchScalarField&
|
||||
) = delete;
|
||||
|
||||
//- Copy constructor setting internal field reference
|
||||
copiedFixedValueFvPatchScalarField
|
||||
(
|
||||
const copiedFixedValueFvPatchScalarField&,
|
||||
const DimensionedField<scalar, volMesh>&
|
||||
);
|
||||
|
||||
//- Construct and return a clone setting internal field reference
|
||||
virtual tmp<fvPatchScalarField> clone
|
||||
(
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
) const
|
||||
{
|
||||
return tmp<fvPatchScalarField>
|
||||
(
|
||||
new copiedFixedValueFvPatchScalarField(*this, iF)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Evaluation functions
|
||||
|
||||
//- Update the coefficients associated with the patch field
|
||||
virtual void updateCoeffs();
|
||||
|
||||
|
||||
// I-O
|
||||
|
||||
//- Write
|
||||
virtual void write(Ostream&) const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2020-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2020-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -455,7 +455,6 @@ Foam::cyclicTransform::cyclicTransform
|
||||
);
|
||||
}
|
||||
|
||||
// Calculate the angle
|
||||
const tensor PerpA = tensor::I - sqr(rotationAxis_);
|
||||
const vector normalPerpA = normalised(PerpA & normal);
|
||||
const vector negNbrNormalPerpA = normalised(PerpA & negNbrNormal);
|
||||
@ -465,6 +464,7 @@ Foam::cyclicTransform::cyclicTransform
|
||||
- sign((normalPerpA ^ negNbrNormalPerpA) & rotationAxis_)
|
||||
*radToDeg(theta);
|
||||
|
||||
// Calculate the angle
|
||||
// Calculate the centre of rotation, if necessary
|
||||
if (transformType_ != oldTransformType)
|
||||
{
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -168,15 +168,12 @@ coupledTemperatureFvPatchScalarField
|
||||
Qs_(0),
|
||||
wallKappaByDelta_(0)
|
||||
{
|
||||
if (!isA<mappedPatchBase>(this->patch().patch()))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "' not type '" << mappedPatchBase::typeName << "'"
|
||||
<< "\n for patch " << p.name()
|
||||
<< " of field " << internalField().name()
|
||||
<< " in file " << internalField().objectPath()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
mappedPatchBase::validateMapForField
|
||||
(
|
||||
*this,
|
||||
dict,
|
||||
mappedPatchBase::from::differentPatch
|
||||
);
|
||||
|
||||
if (dict.found("thicknessLayers"))
|
||||
{
|
||||
@ -290,8 +287,7 @@ void Foam::coupledTemperatureFvPatchScalarField::updateCoeffs()
|
||||
UPstream::msgType() = oldTag + 1;
|
||||
|
||||
// Get the coupling information from the mappedPatchBase
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mpp = mappedPatchBase::getMap(patch().patch());
|
||||
const label patchiNbr = mpp.nbrPolyPatch().index();
|
||||
const fvPatch& patchNbr =
|
||||
refCast<const fvMesh>(mpp.nbrMesh()).boundary()[patchiNbr];
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -79,15 +79,13 @@ thermalBaffle1DFvPatchScalarField
|
||||
qrRelaxation_(dict.lookupOrDefault<scalar>("qrRelaxation", 1)),
|
||||
qrName_(dict.lookupOrDefault<word>("qr", "none"))
|
||||
{
|
||||
if (!isA<mappedPatchBase>(this->patch().patch()))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "' not type '" << mappedPatchBase::typeName << "'"
|
||||
<< "\n for patch " << p.name()
|
||||
<< " of field " << internalField().name()
|
||||
<< " in file " << internalField().objectPath()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
mappedPatchBase::validateMapForField
|
||||
(
|
||||
*this,
|
||||
dict,
|
||||
mappedPatchBase::from::sameRegion
|
||||
& mappedPatchBase::from::differentPatch
|
||||
);
|
||||
|
||||
fvPatchScalarField::operator=(scalarField("value", dict, p.size()));
|
||||
|
||||
@ -176,17 +174,7 @@ thermalBaffle1DFvPatchScalarField
|
||||
template<class solidType>
|
||||
bool thermalBaffle1DFvPatchScalarField<solidType>::owner() const
|
||||
{
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
|
||||
if (!mpp.sameRegion())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "A" << typeName
|
||||
<< " must map to a patch field in the same region"
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
const mappedPatchBase& mpp = mappedPatchBase::getMap(patch().patch());
|
||||
return patch().patch().index() < mpp.nbrPolyPatch().index();
|
||||
}
|
||||
|
||||
@ -195,8 +183,7 @@ template<class solidType>
|
||||
const thermalBaffle1DFvPatchScalarField<solidType>&
|
||||
thermalBaffle1DFvPatchScalarField<solidType>::nbrField() const
|
||||
{
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mpp = mappedPatchBase::getMap(patch().patch());
|
||||
const polyMesh& nbrMesh = mpp.nbrMesh();
|
||||
const label nbrPatchi = mpp.nbrPolyPatch().index();
|
||||
const fvPatch& nbrPatch =
|
||||
@ -250,8 +237,7 @@ baffleThickness() const
|
||||
}
|
||||
else
|
||||
{
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mpp = mappedPatchBase::getMap(patch().patch());
|
||||
return mpp.distribute(nbrField().baffleThickness());
|
||||
}
|
||||
}
|
||||
@ -266,8 +252,7 @@ tmp<scalarField> thermalBaffle1DFvPatchScalarField<solidType>::qs() const
|
||||
}
|
||||
else
|
||||
{
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mpp = mappedPatchBase::getMap(patch().patch());
|
||||
return mpp.distribute(nbrField().qs());
|
||||
}
|
||||
}
|
||||
@ -341,8 +326,7 @@ void thermalBaffle1DFvPatchScalarField<solidType>::updateCoeffs()
|
||||
int oldTag = UPstream::msgType();
|
||||
UPstream::msgType() = oldTag + 1;
|
||||
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mpp = mappedPatchBase::getMap(patch().patch());
|
||||
|
||||
if (baffleActivated_)
|
||||
{
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -58,7 +58,14 @@ mappedFlowRateVelocityFvPatchVectorField
|
||||
nbrPhiName_(dict.lookupOrDefault<word>("nbrPhi", "phi")),
|
||||
phiName_(dict.lookupOrDefault<word>("phi", "phi")),
|
||||
rhoName_(dict.lookupOrDefault<word>("rho", "rho"))
|
||||
{}
|
||||
{
|
||||
mappedPatchBase::validateMapForField
|
||||
(
|
||||
*this,
|
||||
dict,
|
||||
mappedPatchBase::from::differentPatch
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Foam::mappedFlowRateVelocityFvPatchVectorField::
|
||||
@ -105,8 +112,7 @@ void Foam::mappedFlowRateVelocityFvPatchVectorField::updateCoeffs()
|
||||
int oldTag = UPstream::msgType();
|
||||
UPstream::msgType() = oldTag+1;
|
||||
|
||||
const mappedPatchBase& mapper =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mapper = mappedPatchBase::getMap(patch().patch());
|
||||
const fvMesh& nbrMesh = refCast<const fvMesh>(mapper.nbrMesh());
|
||||
const label nbrPatchi = mapper.nbrPolyPatch().index();
|
||||
const fvPatch& nbrPatch = nbrMesh.boundary()[nbrPatchi];
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -24,6 +24,7 @@ License
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "mappedValueFvPatchField.H"
|
||||
#include "mappedPolyPatch.H"
|
||||
#include "volFields.H"
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
@ -32,25 +33,10 @@ template<class Type>
|
||||
const Foam::mappedPatchBase&
|
||||
Foam::mappedValueFvPatchField<Type>::mapper() const
|
||||
{
|
||||
if (mapperPtr_.valid())
|
||||
{
|
||||
return mapperPtr_();
|
||||
}
|
||||
|
||||
if (isA<mappedPatchBase>(this->patch().patch()))
|
||||
{
|
||||
return refCast<const mappedPatchBase>(this->patch().patch());
|
||||
}
|
||||
|
||||
FatalErrorInFunction
|
||||
<< "Field " << this->internalField().name() << " on patch "
|
||||
<< this->patch().name() << " in file "
|
||||
<< this->internalField().objectPath()
|
||||
<< " has neither a mapper specified nor is the patch of "
|
||||
<< mappedPatchBase::typeName << " type"
|
||||
<< exit(FatalError);
|
||||
|
||||
return NullObjectRef<mappedPatchBase>();
|
||||
return
|
||||
mapperPtr_.valid()
|
||||
? mapperPtr_()
|
||||
: mappedPatchBase::getMap(this->patch().patch());
|
||||
}
|
||||
|
||||
|
||||
@ -150,7 +136,30 @@ Foam::mappedValueFvPatchField<Type>::mappedValueFvPatchField
|
||||
? new mappedPatchBase(p.patch(), dict, false)
|
||||
: nullptr
|
||||
)
|
||||
{}
|
||||
{
|
||||
if (!mapperPtr_.valid() && !isA<mappedPatchBase>(p.patch()))
|
||||
{
|
||||
OStringStream str;
|
||||
str << "Field " << this->internalField().name() << " of type "
|
||||
<< type() << " on patch " << this->patch().name() << " does not "
|
||||
<< "have mapping specified (i.e., neighbourPatch, and/or "
|
||||
<< "neighbourRegion entries) nor is the patch of "
|
||||
<< mappedPolyPatch::typeName << " type";
|
||||
FatalIOErrorInFunction(dict)
|
||||
<< stringOps::breakIntoIndentedLines(str.str()).c_str()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
|
||||
this->mapper().validateForField
|
||||
(
|
||||
*this,
|
||||
dict,
|
||||
this->mapper().sameUntransformedPatch()
|
||||
&& this->fieldName_ == this->internalField().name()
|
||||
? mappedPatchBase::from::differentPatch
|
||||
: mappedPatchBase::from::any
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -53,16 +53,12 @@ Foam::mappedVelocityFluxFvPatchField::mappedVelocityFluxFvPatchField
|
||||
fixedValueFvPatchVectorField(p, iF, dict),
|
||||
phiName_(dict.lookupOrDefault<word>("phi", "phi"))
|
||||
{
|
||||
if (!isA<mappedPatchBase>(this->patch().patch()))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Patch type '" << p.type()
|
||||
<< "' not type '" << mappedPatchBase::typeName << "'"
|
||||
<< " for patch " << p.name()
|
||||
<< " of field " << internalField().name()
|
||||
<< " in file " << internalField().objectPath()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
mappedPatchBase::validateMapForField
|
||||
(
|
||||
*this,
|
||||
dict,
|
||||
mappedPatchBase::from::differentPatch
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -76,18 +72,7 @@ Foam::mappedVelocityFluxFvPatchField::mappedVelocityFluxFvPatchField
|
||||
:
|
||||
fixedValueFvPatchVectorField(ptf, p, iF, mapper),
|
||||
phiName_(ptf.phiName_)
|
||||
{
|
||||
if (!isA<mappedPatchBase>(this->patch().patch()))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Patch type '" << p.type()
|
||||
<< "' not type '" << mappedPatchBase::typeName << "'"
|
||||
<< " for patch " << p.name()
|
||||
<< " of field " << internalField().name()
|
||||
<< " in file " << internalField().objectPath()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
}
|
||||
{}
|
||||
|
||||
|
||||
Foam::mappedVelocityFluxFvPatchField::mappedVelocityFluxFvPatchField
|
||||
@ -115,8 +100,7 @@ void Foam::mappedVelocityFluxFvPatchField::updateCoeffs()
|
||||
int oldTag = UPstream::msgType();
|
||||
UPstream::msgType() = oldTag+1;
|
||||
|
||||
const mappedPatchBase& mapper =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mapper = mappedPatchBase::getMap(patch().patch());
|
||||
const fvMesh& nbrMesh = refCast<const fvMesh>(mapper.nbrMesh());
|
||||
const label nbrPatchi = mapper.nbrPolyPatch().index();
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -81,6 +81,7 @@ class mappedVelocityFluxFvPatchField
|
||||
//- Name of flux field
|
||||
word phiName_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -72,6 +72,14 @@ void Foam::mappedPatchBase::calcMapping() const
|
||||
<< "Mapping already calculated" << exit(FatalError);
|
||||
}
|
||||
|
||||
if (sameUntransformedPatch())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Patch " << patch_.name() << " is mapping itself with no "
|
||||
<< "transform. Mapping data does not need to be constructed."
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
// Calculate the transform as necessary
|
||||
transform_ =
|
||||
cyclicTransform
|
||||
@ -90,22 +98,6 @@ void Foam::mappedPatchBase::calcMapping() const
|
||||
true
|
||||
);
|
||||
|
||||
// Do a sanity check. Am I sampling my own patch? This only makes sense if
|
||||
// the position is transformed.
|
||||
if
|
||||
(
|
||||
nbrRegionName() == patch_.boundaryMesh().mesh().name()
|
||||
&& nbrPatchName() == patch_.name()
|
||||
&& !transform_.transform().transformsPosition()
|
||||
)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Patch " << patch_.name() << " is sampling itself with no "
|
||||
<< "transform. The patch face values are undefined."
|
||||
<< exit(FatalError);
|
||||
|
||||
}
|
||||
|
||||
// Build the mapping...
|
||||
//
|
||||
// This octree based solution is deprecated. The "matching" patch-to-patch
|
||||
@ -313,15 +305,12 @@ void Foam::mappedPatchBase::calcMapping() const
|
||||
|
||||
// * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::mappedPatchBase::mappedPatchBase
|
||||
(
|
||||
const polyPatch& pp
|
||||
)
|
||||
Foam::mappedPatchBase::mappedPatchBase(const polyPatch& pp)
|
||||
:
|
||||
patch_(pp),
|
||||
nbrRegionName_(patch_.boundaryMesh().mesh().name()),
|
||||
nbrPatchName_(word::null),
|
||||
coupleGroup_(),
|
||||
nbrRegionName_(patch_.boundaryMesh().mesh().name()),
|
||||
nbrPatchName_(patch_.name()),
|
||||
transform_(true),
|
||||
mapPtr_(nullptr),
|
||||
nbrPatchFaceIndices_(),
|
||||
@ -341,9 +330,9 @@ Foam::mappedPatchBase::mappedPatchBase
|
||||
)
|
||||
:
|
||||
patch_(pp),
|
||||
coupleGroup_(),
|
||||
nbrRegionName_(nbrRegionName),
|
||||
nbrPatchName_(nbrPatchName),
|
||||
coupleGroup_(),
|
||||
transform_(transform),
|
||||
mapPtr_(nullptr),
|
||||
nbrPatchFaceIndices_(),
|
||||
@ -362,23 +351,25 @@ Foam::mappedPatchBase::mappedPatchBase
|
||||
)
|
||||
:
|
||||
patch_(pp),
|
||||
coupleGroup_(dict),
|
||||
nbrRegionName_
|
||||
(
|
||||
dict.lookupOrDefaultBackwardsCompatible<word>
|
||||
(
|
||||
{"neighbourRegion", "sampleRegion"},
|
||||
word::null
|
||||
coupleGroup_.valid() ? word::null : pp.boundaryMesh().mesh().name()
|
||||
)
|
||||
),
|
||||
nbrPatchName_
|
||||
(
|
||||
dict.lookupOrDefaultBackwardsCompatible<word>
|
||||
coupleGroup_.valid()
|
||||
? dict.lookupOrDefaultBackwardsCompatible<word>
|
||||
(
|
||||
{"neighbourPatch", "samplePatch"},
|
||||
word::null
|
||||
)
|
||||
: dict.lookupBackwardsCompatible<word>({"neighbourPatch", "samplePatch"})
|
||||
),
|
||||
coupleGroup_(dict),
|
||||
transform_
|
||||
(
|
||||
transformIsNone
|
||||
@ -401,9 +392,15 @@ Foam::mappedPatchBase::mappedPatchBase
|
||||
),
|
||||
matchTol_(dict.lookupOrDefault("matchTolerance", defaultMatchTol_))
|
||||
{
|
||||
if (!coupleGroup_.valid() && nbrRegionName_.empty())
|
||||
if
|
||||
(
|
||||
coupleGroup_.valid()
|
||||
&& (nbrRegionName_ != word::null || nbrPatchName_ != word::null)
|
||||
)
|
||||
{
|
||||
nbrRegionName_ = patch_.boundaryMesh().mesh().name();
|
||||
FatalIOErrorInFunction(dict)
|
||||
<< "Either a coupleGroup or a neighbourRegion/Patch should be "
|
||||
<< "specified, not both" << exit(FatalIOError);
|
||||
}
|
||||
}
|
||||
|
||||
@ -415,9 +412,9 @@ Foam::mappedPatchBase::mappedPatchBase
|
||||
)
|
||||
:
|
||||
patch_(pp),
|
||||
coupleGroup_(mpb.coupleGroup_),
|
||||
nbrRegionName_(mpb.nbrRegionName_),
|
||||
nbrPatchName_(mpb.nbrPatchName_),
|
||||
coupleGroup_(mpb.coupleGroup_),
|
||||
transform_(mpb.transform_),
|
||||
mapPtr_(nullptr),
|
||||
nbrPatchFaceIndices_(),
|
||||
@ -469,6 +466,22 @@ const Foam::polyPatch& Foam::mappedPatchBase::nbrPolyPatch() const
|
||||
}
|
||||
|
||||
|
||||
const Foam::mappedPatchBase& Foam::mappedPatchBase::getMap
|
||||
(
|
||||
const polyPatch& patch
|
||||
)
|
||||
{
|
||||
if (!isA<mappedPatchBase>(patch))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Patch " << patch.name() << " is not of type "
|
||||
<< typeName << exit(FatalError);
|
||||
}
|
||||
|
||||
return refCast<const mappedPatchBase>(patch);
|
||||
}
|
||||
|
||||
|
||||
void Foam::mappedPatchBase::clearOut()
|
||||
{
|
||||
mapPtr_.clear();
|
||||
@ -481,7 +494,9 @@ bool Foam::mappedPatchBase::specified(const dictionary& dict)
|
||||
{
|
||||
return
|
||||
dict.found("neighbourRegion")
|
||||
|| dict.found("sampleRegion")
|
||||
|| dict.found("neighbourPatch")
|
||||
|| dict.found("samplePatch")
|
||||
|| dict.found("coupleGroup");
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -77,15 +77,15 @@ protected:
|
||||
//- Patch to map to
|
||||
const polyPatch& patch_;
|
||||
|
||||
//- Couple group for the region/patch to map from
|
||||
const coupleGroupIdentifier coupleGroup_;
|
||||
|
||||
//- Name of the region to map from
|
||||
mutable word nbrRegionName_;
|
||||
|
||||
//- Name of the patch to map from
|
||||
mutable word nbrPatchName_;
|
||||
|
||||
//- Couple group for the region/patch to map from
|
||||
const coupleGroupIdentifier coupleGroup_;
|
||||
|
||||
//- The transformation between the patches
|
||||
mutable cyclicTransform transform_;
|
||||
|
||||
@ -184,6 +184,12 @@ public:
|
||||
//- Is the neighbour region the same as for this patch?
|
||||
inline bool sameRegion() const;
|
||||
|
||||
//- Is the neighbour patch the same as this patch?
|
||||
inline bool samePatch() const;
|
||||
|
||||
//- Is the neighbour patch the same as this patch with no transform?
|
||||
inline bool sameUntransformedPatch() const;
|
||||
|
||||
//- Name of the patch to map from
|
||||
inline const word& nbrPatchName() const;
|
||||
|
||||
@ -194,6 +200,41 @@ public:
|
||||
const polyPatch& nbrPolyPatch() const;
|
||||
|
||||
|
||||
// Casting
|
||||
|
||||
//- Cast the given polyPatch to a mappedPatchBase. Handle errors.
|
||||
static const mappedPatchBase& getMap(const polyPatch& patch);
|
||||
|
||||
//- Restrict use of the mapper to certain configurations
|
||||
struct from
|
||||
{
|
||||
static const label any = 0;
|
||||
static const label sameRegion = 1;
|
||||
static const label differentRegion = 2;
|
||||
static const label differentPatch = 4;
|
||||
};
|
||||
|
||||
//- Validate that the map exists and is appropriate for the given
|
||||
// set of permitted configurations
|
||||
template<class PatchField>
|
||||
static void validateMapForField
|
||||
(
|
||||
const PatchField& field,
|
||||
const dictionary& context,
|
||||
const label froms = from::any
|
||||
);
|
||||
|
||||
//- Validate that the map is appropriate for the given
|
||||
// set of permitted configurations
|
||||
template<class PatchField>
|
||||
void validateForField
|
||||
(
|
||||
const PatchField& field,
|
||||
const dictionary& context,
|
||||
const label froms = from::any
|
||||
) const;
|
||||
|
||||
|
||||
// Edit
|
||||
|
||||
//- Clear out data on mesh change
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -56,18 +56,10 @@ inline bool Foam::mappedPatchBase::symmetric() const
|
||||
|
||||
inline const Foam::word& Foam::mappedPatchBase::nbrRegionName() const
|
||||
{
|
||||
if (nbrRegionName_.empty())
|
||||
if (coupleGroup_.valid() && nbrRegionName_.empty())
|
||||
{
|
||||
if (!coupleGroup_.valid())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Supply either a regionName or a coupleGroup"
|
||||
<< " for patch " << patch_.name()
|
||||
<< " in region " << patch_.boundaryMesh().mesh().name()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
// Try and use patchGroup to find nbrPatch and nbrRegion
|
||||
// Try and use the couple group to find nbrPatch and nbrRegion. Note:
|
||||
// This call sets nbrRegionName_.
|
||||
const label nbrPatchID =
|
||||
coupleGroup_.findOtherPatchID(patch_, nbrRegionName_);
|
||||
|
||||
@ -95,4 +87,21 @@ inline bool Foam::mappedPatchBase::sameRegion() const
|
||||
}
|
||||
|
||||
|
||||
inline bool Foam::mappedPatchBase::samePatch() const
|
||||
{
|
||||
return sameRegion() && nbrPatchName() == patch_.name();
|
||||
}
|
||||
|
||||
|
||||
inline bool Foam::mappedPatchBase::sameUntransformedPatch() const
|
||||
{
|
||||
return
|
||||
samePatch()
|
||||
&& (
|
||||
!transform_.transformComplete()
|
||||
|| !transform_.transform().transformsPosition()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -24,13 +24,87 @@ License
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "mappedPatchBase.H"
|
||||
#include "stringOps.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class PatchField>
|
||||
void Foam::mappedPatchBase::validateMapForField
|
||||
(
|
||||
const PatchField& field,
|
||||
const dictionary& context,
|
||||
const label froms
|
||||
)
|
||||
{
|
||||
const polyPatch& pp = field.patch().patch();
|
||||
|
||||
if (!isA<mappedPatchBase>(pp))
|
||||
{
|
||||
OStringStream str;
|
||||
str << "Field " << field.internalField().name() << " of type "
|
||||
<< field.type() << " cannot apply to patch " << pp.name()
|
||||
<< " because the patch is not of " << typeName << " type";
|
||||
FatalIOErrorInFunction(context)
|
||||
<< stringOps::breakIntoIndentedLines(str.str()).c_str()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
|
||||
refCast<const mappedPatchBase>(pp).validateForField(field, context, froms);
|
||||
}
|
||||
|
||||
|
||||
template<class PatchField>
|
||||
void Foam::mappedPatchBase::validateForField
|
||||
(
|
||||
const PatchField& field,
|
||||
const dictionary& context,
|
||||
const label froms
|
||||
) const
|
||||
{
|
||||
const bool isNotRegion = !sameRegion() && (froms & from::sameRegion);
|
||||
const bool isRegion = sameRegion() && (froms & from::differentRegion);
|
||||
const bool isPatch = samePatch() && (froms & from::differentPatch);
|
||||
|
||||
OStringStream str;
|
||||
|
||||
if (isNotRegion || isRegion || isPatch)
|
||||
{
|
||||
str << "Field " << field.internalField().name() << " of type "
|
||||
<< field.type() << " cannot apply to patch " << patch_.name()
|
||||
<< " because values are mapped from ";
|
||||
}
|
||||
|
||||
if (isNotRegion)
|
||||
{
|
||||
str << "a different region";
|
||||
}
|
||||
else if (isRegion)
|
||||
{
|
||||
str << "within the same region";
|
||||
}
|
||||
else if (isPatch)
|
||||
{
|
||||
str << "the same patch";
|
||||
}
|
||||
|
||||
if (isNotRegion || isRegion || isPatch)
|
||||
{
|
||||
FatalIOErrorInFunction(context)
|
||||
<< stringOps::breakIntoIndentedLines(str.str()).c_str()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Foam::tmp<Foam::Field<Type>>
|
||||
Foam::mappedPatchBase::distribute(const Field<Type>& fld) const
|
||||
{
|
||||
if (sameUntransformedPatch())
|
||||
{
|
||||
return fld;
|
||||
}
|
||||
|
||||
if (!patchToPatchIsUsed_)
|
||||
{
|
||||
if (mapPtr_.empty())
|
||||
@ -83,6 +157,11 @@ template<class Type>
|
||||
Foam::tmp<Foam::Field<Type>>
|
||||
Foam::mappedPatchBase::reverseDistribute(const Field<Type>& fld) const
|
||||
{
|
||||
if (sameUntransformedPatch())
|
||||
{
|
||||
return fld;
|
||||
}
|
||||
|
||||
if (!patchToPatchIsUsed_)
|
||||
{
|
||||
if (mapPtr_.empty())
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -98,39 +98,16 @@ Foam::radiationCoupledBase::radiationCoupledBase
|
||||
{
|
||||
case SOLIDRADIATION:
|
||||
{
|
||||
if (!isA<mappedPatchBase>(patch_.patch()))
|
||||
{
|
||||
FatalIOErrorInFunction
|
||||
(
|
||||
dict
|
||||
) << "\n patch type '" << patch_.type()
|
||||
<< "' not type '" << mappedPatchBase::typeName << "'"
|
||||
<< "\n for patch " << patch_.name()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
|
||||
emissivity_ = scalarField(patch_.size(), 0.0);
|
||||
}
|
||||
emissivity_ = scalarField(patch_.size(), scalar(0));
|
||||
break;
|
||||
}
|
||||
|
||||
case LOOKUP:
|
||||
{
|
||||
if (!dict.found("emissivity"))
|
||||
{
|
||||
FatalIOErrorInFunction
|
||||
(
|
||||
dict
|
||||
) << "\n emissivity key does not exist for patch "
|
||||
<< patch_.name()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
else
|
||||
{
|
||||
emissivity_ = scalarField("emissivity", dict, patch_.size());
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -150,7 +127,7 @@ Foam::tmp<Foam::scalarField> Foam::radiationCoupledBase::emissivity() const
|
||||
{
|
||||
// Get the coupling information from the mappedPatchBase
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch_.patch());
|
||||
mappedPatchBase::getMap(patch_.patch());
|
||||
|
||||
const polyMesh& nbrMesh = mpp.nbrMesh();
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2017-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2017-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -55,15 +55,12 @@ semiPermeableBaffleMassFractionFvPatchScalarField
|
||||
:
|
||||
specieTransferMassFractionFvPatchScalarField(p, iF, dict)
|
||||
{
|
||||
if (!isA<mappedPatchBase>(patch().patch()))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "' not type '" << mappedPatchBase::typeName << "'"
|
||||
<< "\n for patch " << p.name()
|
||||
<< " of field " << internalField().name()
|
||||
<< " in file " << internalField().objectPath()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
mappedPatchBase::validateMapForField
|
||||
(
|
||||
*this,
|
||||
dict,
|
||||
mappedPatchBase::from::differentPatch
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -104,8 +101,7 @@ Foam::semiPermeableBaffleMassFractionFvPatchScalarField::calcPhiYp() const
|
||||
const word& YName = internalField().name();
|
||||
|
||||
// Get the coupling information from the mappedPatchBase
|
||||
const mappedPatchBase& mpp =
|
||||
refCast<const mappedPatchBase>(patch().patch());
|
||||
const mappedPatchBase& mpp = mappedPatchBase::getMap(patch().patch());
|
||||
const polyMesh& nbrMesh = mpp.nbrMesh();
|
||||
const label nbrPatchi = mpp.nbrPolyPatch().index();
|
||||
const fvPatch& nbrPatch =
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -37,7 +37,6 @@ namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
|
||||
bool Foam::surfaceFilm::read()
|
||||
{
|
||||
if (regIOobject::read())
|
||||
@ -69,10 +68,9 @@ Foam::label Foam::surfaceFilm::nbrCoupledPatchID
|
||||
// region
|
||||
const fvMesh& nbrRegionMesh = nbrRegion.mesh();
|
||||
|
||||
// boundary mesh
|
||||
const polyBoundaryMesh& nbrPbm = nbrRegionMesh.boundaryMesh();
|
||||
|
||||
// boundary meshes
|
||||
const polyBoundaryMesh& pbm = mesh().boundaryMesh();
|
||||
const polyBoundaryMesh& nbrPbm = nbrRegionMesh.boundaryMesh();
|
||||
|
||||
if (regionPatchi > pbm.size() - 1)
|
||||
{
|
||||
@ -83,16 +81,8 @@ Foam::label Foam::surfaceFilm::nbrCoupledPatchID
|
||||
<< abort(FatalError);
|
||||
}
|
||||
|
||||
const polyPatch& pp = mesh().boundaryMesh()[regionPatchi];
|
||||
|
||||
if (!isA<mappedPatchBase>(pp))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Expected a " << mappedPatchBase::typeName
|
||||
<< " patch, but found a " << pp.type() << abort(FatalError);
|
||||
}
|
||||
|
||||
const mappedPatchBase& mpb = refCast<const mappedPatchBase>(pp);
|
||||
const mappedPatchBase& mpb =
|
||||
mappedPatchBase::getMap(pbm[regionPatchi]);
|
||||
|
||||
// sample patch name on the primary region
|
||||
const word& primaryPatchName = mpb.nbrPatchName();
|
||||
@ -103,7 +93,7 @@ Foam::label Foam::surfaceFilm::nbrCoupledPatchID
|
||||
const label nbrRegionPatchi = nbrRegion.intCoupledPatchIDs()[j];
|
||||
|
||||
const mappedPatchBase& mpb =
|
||||
refCast<const mappedPatchBase>(nbrPbm[nbrRegionPatchi]);
|
||||
mappedPatchBase::getMap(nbrPbm[nbrRegionPatchi]);
|
||||
|
||||
if (mpb.nbrPatchName() == primaryPatchName)
|
||||
{
|
||||
@ -215,10 +205,6 @@ Foam::surfaceFilm::surfaceFilm
|
||||
|
||||
if (isA<mappedPatchBase>(regionPatch))
|
||||
{
|
||||
DebugInFunction
|
||||
<< "found " << mappedWallPolyPatch::typeName
|
||||
<< " " << regionPatch.name() << endl;
|
||||
|
||||
intCoupledPatchIDs.append(patchi);
|
||||
|
||||
nBoundaryFaces += regionPatch.faceCells().size();
|
||||
@ -234,7 +220,6 @@ Foam::surfaceFilm::surfaceFilm
|
||||
)
|
||||
)
|
||||
{
|
||||
|
||||
const label primaryPatchi = mapPatch.nbrPolyPatch().index();
|
||||
primaryPatchIDs.append(primaryPatchi);
|
||||
}
|
||||
|
||||
@ -34,8 +34,9 @@ boundaryField
|
||||
}
|
||||
walls
|
||||
{
|
||||
type copiedFixedValue;
|
||||
sourceFieldName T.liquid;
|
||||
type mappedValue;
|
||||
neighbourPatch walls;
|
||||
field T.liquid;
|
||||
value $internalField;
|
||||
}
|
||||
front
|
||||
|
||||
@ -34,8 +34,9 @@ boundaryField
|
||||
}
|
||||
wall
|
||||
{
|
||||
type copiedFixedValue;
|
||||
sourceFieldName T.liquid;
|
||||
type mappedValue;
|
||||
neighbourPatch wall;
|
||||
field T.liquid;
|
||||
value $internalField;
|
||||
}
|
||||
front
|
||||
|
||||
@ -34,8 +34,9 @@ boundaryField
|
||||
}
|
||||
wall
|
||||
{
|
||||
type copiedFixedValue;
|
||||
sourceFieldName T.liquid;
|
||||
type mappedValue;
|
||||
neighbourPatch wall;
|
||||
field T.liquid;
|
||||
value $internalField;
|
||||
}
|
||||
front
|
||||
|
||||
@ -34,8 +34,9 @@ boundaryField
|
||||
}
|
||||
wall
|
||||
{
|
||||
type copiedFixedValue;
|
||||
sourceFieldName T.liquid;
|
||||
type mappedValue;
|
||||
neighbourPatch wall;
|
||||
field T.liquid;
|
||||
value $internalField;
|
||||
}
|
||||
front
|
||||
|
||||
@ -34,8 +34,9 @@ boundaryField
|
||||
}
|
||||
wall
|
||||
{
|
||||
type copiedFixedValue;
|
||||
sourceFieldName T.liquid;
|
||||
type mappedValue;
|
||||
neighbourPatch wall;
|
||||
field T.liquid;
|
||||
value $internalField;
|
||||
}
|
||||
front
|
||||
|
||||
Reference in New Issue
Block a user