diff --git a/src/fvOptions/Make/files b/src/fvOptions/Make/files index 16b1c4e446..f130c21661 100644 --- a/src/fvOptions/Make/files +++ b/src/fvOptions/Make/files @@ -56,6 +56,7 @@ $(interRegion)/interRegionExplicitPorositySource/interRegionExplicitPorositySour /* Constraints */ generalConstraints=constraints/general $(generalConstraints)/fixedValueConstraint/fixedValueConstraints.C +$(generalConstraints)/mapFieldConstraint/mapFieldConstraints.C derivedConstraints=constraints/derived $(derivedConstraints)/fixedTemperatureConstraint/fixedTemperatureConstraint.C diff --git a/src/fvOptions/constraints/general/mapFieldConstraint/MapFieldConstraint.C b/src/fvOptions/constraints/general/mapFieldConstraint/MapFieldConstraint.C new file mode 100644 index 0000000000..1d18b8960b --- /dev/null +++ b/src/fvOptions/constraints/general/mapFieldConstraint/MapFieldConstraint.C @@ -0,0 +1,459 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / 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 . + +\*---------------------------------------------------------------------------*/ + +#include "MapFieldConstraint.H" +#include "fvMatrices.H" +#include "meshToMesh.H" +#include "Function1.H" + +// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace fv +{ +static inline tmp createField +( + const fvMesh& mesh, + const scalar val +) +{ + return tmp::New + ( + IOobject + ( + polyMesh::defaultRegion, + mesh.time().timeName(), + mesh, + IOobjectOption::NO_READ, + IOobject::NO_WRITE, + IOobject::NO_REGISTER + ), + mesh, + dimensionedScalar(dimless, val) + ); +} +} // End namespace fv +} // End namespace Foam + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +void Foam::fv::MapFieldConstraint::setSourceMesh +( + refPtr& meshRef, + const autoPtr