Files
openfoam/src/regionFaModels/vibrationShellModel/vibrationShellModel.C
Mark Olesen b25147a4f8 ENH: finite-area region support to all faOptions and regionFaModels
- for a non-default mesh region, corresponding files:

     system/finite-area/faOptions.<name>
     system/finite-area/<name>/faSchemes, etc

  if the entries within the faOptions dictionary happen to contain an
  "area" entry and it conflicts with what is expected, it will be
  rejected when creating the list of options, which helps avoid
  unexpected behaviour and simplifies overall handling.
2025-10-08 13:17:40 +02:00

106 lines
3.2 KiB
C

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2019-2025 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/>.
\*---------------------------------------------------------------------------*/
#include "vibrationShellModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace regionModels
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug(vibrationShellModel, 0);
defineRunTimeSelectionTable(vibrationShellModel, dictionary);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
vibrationShellModel::vibrationShellModel
(
const word& modelType,
const fvMesh& mesh,
const dictionary& dict
)
:
regionFaModel(mesh, "vibratingShell", modelType, dict, true),
w_
(
IOobject
(
"ws_" + regionName_,
regionMesh().time().timeName(),
regionMesh().thisDb(),
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
regionMesh()
),
a_
(
IOobject
(
"as_" + regionName_,
regionMesh().time().timeName(),
regionMesh().thisDb(),
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
regionMesh(),
dimensionedScalar(dimAcceleration, Zero)
),
// Only need/want mechanical solid properties
solid_(dict.subDict("solid"), solidProperties::MECHANICAL),
pName_(dict.get<word>("p")),
pa_(mesh.lookupObject<volScalarField>(pName_)),
faOptions_
(
Foam::fa::options::New(mesh, regionFaModel::areaName())
)
{
if (faOptions_.optionList::empty())
{
Info<< "No finite area options present for area : "
<< polyMesh::regionName(regionFaModel::areaName()) << endl;
}
}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void vibrationShellModel::preEvolveRegion()
{}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace regionModels
} // End namespace Foam
// ************************************************************************* //