solverFieldSelection.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2017 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26\*---------------------------------------------------------------------------*/
27
29#include "fvMesh.H"
30#include "volMesh.H"
31#include "fvPatchField.H"
32
33// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
34
36(
37 const objectRegistry& obr,
38 const bool includeComponents
39)
40:
41 fieldSelection(obr, includeComponents)
42{
43 if (!isA<fvMesh>(obr))
44 {
46 << "Registry must be of type " << fvMesh::typeName
47 << abort(FatalError);
48 }
49}
50
51
52// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
53
55{
56 List<fieldInfo> oldSet(std::move(selection_));
57
58 DynamicList<fieldInfo> newSelection(oldSet.size());
59
60 const fvMesh& mesh = static_cast<const fvMesh&>(obr_);
61
62 const dictionary& solverDict = mesh.solverPerformanceDict();
63
64 const wordList solvedFieldNames(solverDict.sortedToc());
65
66 for (const fieldInfo& fi : *this)
67 {
68 for (const word& solvedField : solvedFieldNames)
69 {
70 if (fi.name().match(solvedField))
71 {
72 newSelection.append
73 (
74 fieldInfo(wordRe(solvedField), fi.component())
75 );
76 fi.found() = true;
77 }
78 }
79 }
80
81 selection_.transfer(newSelection);
82
84 {
86 << "Valid solver fields are: " << solvedFieldNames;
87 }
88
89 return selection_ != oldSet;
90}
91
92
93// ************************************************************************* //
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Definition: DynamicList.H:72
void append(const T &val)
Copy append an element to the end of this list.
Definition: DynamicListI.H:503
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: List.H:77
void size(const label n)
Older name for setAddressableSize.
Definition: UList.H:114
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
wordList sortedToc() const
Return the sorted table of contents.
Definition: dictionary.C:616
Watches for presence of the named trigger file in the case directory and signals a simulation stop (o...
Definition: abort.H:128
Helper class to store a wordRe and label used by Foam::functionObjects::fieldSelection.
Definition: fieldInfo.H:58
const wordRe & name() const
Definition: fieldInfo.H:107
Helper class to manage field selections.
virtual bool checkSelection()
Check that all requested fielda have been found.
virtual bool updateSelection()
Update the selection using current contents of obr_.
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:91
Registry of regIOobjects.
A wordRe is a Foam::word, but can contain a regular expression for matching words or strings.
Definition: wordRe.H:83
bool match(const std::string &text, bool literal=false) const
Smart match as regular expression or as a string.
Definition: wordReI.H:200
A class for handling words, derived from Foam::string.
Definition: word.H:68
dynamicFvMesh & mesh
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:453
#define WarningInFunction
Report a warning using Foam::Warning.
error FatalError
static const char *const typeName
The type name used in ensight case files.