writeAreaFields.H
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) 2021-2022 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
12
13InNamespace
14 Foam
15
16Description
17 Read finiteArea fields from disk and write ensightFaMesh
18
19\*---------------------------------------------------------------------------*/
20
21#ifndef ensight_writeAreaFields_H
22#define ensight_writeAreaFields_H
23
24#include "readFields.H"
25#include "areaFaMesh.H"
26
27// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
28
29namespace Foam
30{
31
32template<class Type>
34(
35 ensightCase& ensCase,
36 const ensightFaMesh& ensMesh,
37 const tmp<AreaField<Type>>& tfield
38)
39{
40 if (!tfield)
41 {
42 return false;
43 }
44 const auto& field = tfield();
45
46 autoPtr<ensightFile> os =
47 ensCase.newData<Type>(field.name());
48
49 bool wrote = ensightOutput::writeAreaField<Type>
50 (
51 os.ref(),
52 field,
53 ensMesh
54 );
55
56 tfield.clear();
57 return wrote;
58}
59
60
61template<class Type>
63(
64 ensightCase& ensCase,
65 const ensightFaMesh& ensMesh,
66 const IOobjectList& objects
67)
68{
69 typedef AreaField<Type> FieldType;
71 const faMesh& mesh = ensMesh.mesh();
72
73 label count = 0;
74
75 for (const word& fieldName : objects.sortedNames<FieldType>())
76 {
77 if
78 (
79 writeAreaField<Type>
80 (
81 ensCase,
82 ensMesh,
83 getField<FieldType>(objects.findObject(fieldName), mesh)
84 )
85 )
86 {
87 Info<< ' ' << fieldName;
88 ++count;
89 }
90 }
91
92 return count;
93}
94
95
97(
98 ensightCase& ensCase,
99 const ensightFaMesh& ensMesh,
100 const IOobjectList& objects
101)
102{
103 #undef ensight_WRITE_FIELD
104 #define ensight_WRITE_FIELD(PrimitiveType) \
105 writeAreaFields<PrimitiveType> \
106 ( \
107 ensCase, \
108 ensMesh, \
109 objects \
110 )
111
112 label count = 0;
113 count += ensight_WRITE_FIELD(scalar);
114 count += ensight_WRITE_FIELD(vector);
117 count += ensight_WRITE_FIELD(tensor);
118
119 #undef ensight_WRITE_FIELD
120 return count;
121}
122
123} // End namespace Foam
124
125// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126
127#endif
128
129// ************************************************************************* //
Generic GeometricField class.
List of IOobjects with searching and retrieving facilities.
Definition: IOobjectList.H:59
const IOobject * findObject(const word &objName) const
Return const pointer to the object found by name.
Definition: IOobjectList.C:293
wordList sortedNames() const
The sorted names of the IOobjects.
Definition: IOobjectList.C:383
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: autoPtr.H:66
Supports writing of ensight cases as well as providing common factory methods to open new files.
Definition: ensightCase.H:69
autoPtr< ensightFile > newData(const word &varName, const bool isPointData=false) const
Open stream for new data file (on master), with current index.
Encapsulation of area meshes for writing in ensight format.
Definition: ensightFaMesh.H:63
const faMesh & mesh() const noexcept
Reference to the underlying faMesh.
Finite area mesh (used for 2-D non-Euclidian finite area method) defined using a patch of faces on a ...
Definition: faMesh.H:100
A class for managing temporary objects.
Definition: tmp.H:65
A class for handling words, derived from Foam::string.
Definition: word.H:68
rDeltaTY field()
dynamicFvMesh & mesh
OBJstream os(runTime.globalPath()/outputName)
#define ensight_WRITE_FIELD(PrimitiveType)
Namespace for OpenFOAM.
messageStream Info
Information stream (stdout output on master, null elsewhere)
label writeAreaFields(ensightCase &ensCase, const ensightFaMesh &ensMesh, const IOobjectList &objects)
bool writeAreaField(ensightCase &ensCase, const ensightFaMesh &ensMesh, const tmp< AreaField< Type > > &tfield)
label writeAllAreaFields(ensightCase &ensCase, const ensightFaMesh &ensMesh, const IOobjectList &objects)