29 #ifndef vtkPVFoamLagrangianFields_H
30 #define vtkPVFoamLagrangianFields_H
33 #include "vtkPVFoamReader.h"
42 #include "vtkFloatArray.h"
43 #include "vtkPointData.h"
48 void Foam::vtkPVFoam::convertlagrangianFields
51 vtkMultiBlockDataSet* output,
55 const arrayRange&
range = arrayRangelagrangian_;
62 const IOField<Type>
tf
64 reader_->GetDecomposedCase()
65 ? lagrangianReconstructors_[datasetNo]
66 .reconstructField<Type, IOField, IOField>(*iter())
67 : tmp<IOField<Type>>(
new IOField<Type>(*iter()))
70 convertlagrangianField
81 template<
class Type,
template<
class>
class GeoField>
82 void Foam::vtkPVFoam::convertLagrangianFields
85 vtkMultiBlockDataSet* output,
89 const arrayRange&
range = arrayRangeLagrangian_;
94 if (iter()->headerClassName() != GeoField<Type>::typeName)
continue;
96 const GeoField<Type>
tf
98 reader_->GetDecomposedCase()
99 ? LagrangianReconstructors_[datasetNo]
100 .reconstructField<GeoField<Type>>(*iter())
101 : tmp<GeoField<Type>>
103 new GeoField<Type>(*iter(), LagrangianMeshes_[datasetNo])
107 convertLagrangianField<Type, GeoField>
119 void Foam::vtkPVFoam::convertlagrangianField
121 const IOField<Type>&
tf,
122 vtkMultiBlockDataSet* output,
123 const arrayRange&
range,
124 const label datasetNo
127 const label nComp = pTraits<Type>::nComponents;
130 pointData->SetNumberOfTuples(
tf.
size());
131 pointData->SetNumberOfComponents(nComp);
132 pointData->Allocate(nComp*
tf.
size());
133 pointData->SetName(
tf.name().c_str());
136 <<
"Converting lagrangian field: " <<
tf.name()
138 <<
", nComp=" << nComp <<
endl;
144 const Type& t =
tf[i];
151 vtkOpenFOAMTupleRemap<Type>(vec);
153 pointData->InsertTuple(i, vec);
156 vtkPolyData::SafeDownCast
158 GetDataSetFromBlock(output,
range, datasetNo)
160 ->AddArray(pointData);
166 template<
class Type,
template<
class>
class GeoField>
167 void Foam::vtkPVFoam::convertLagrangianField
169 const GeoField<Type>&
tf,
170 vtkMultiBlockDataSet* output,
171 const arrayRange&
range,
172 const label datasetNo
175 static const label nComp = pTraits<Type>::nComponents;
178 pointData->SetNumberOfTuples(
tf.primitiveField().
size());
179 pointData->SetNumberOfComponents(nComp);
180 pointData->Allocate(nComp*
tf.primitiveField().
size());
181 pointData->SetName(
tf.name().c_str());
184 <<
"Converting Lagrangian field: " <<
tf.name()
185 <<
" size=" <<
tf.primitiveField().
size()
186 <<
", nComp=" << nComp <<
endl;
192 const Type& t =
tf.primitiveField()[i];
199 vtkOpenFOAMTupleRemap<Type>(vec);
201 pointData->InsertTuple(i, vec);
204 vtkPolyData::SafeDownCast
206 GetDataSetFromBlock(output,
range, datasetNo)
208 ->AddArray(pointData);
#define forAll(list, i)
Loop across all elements in list.
#define forAllConstIter(Container, container, iter)
Iterate across all elements in the container object of type.
static const char *const typeName
void size(const label)
Override size to be inconsistent with allocated storage.
#define DebugInFunction
Report an information message using Foam::Info.
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void component(LagrangianPatchField< typename LagrangianPatchField< Type >::cmptType > &sf, const LagrangianPatchField< Type > &f, const direction d)