27 #ifndef OPM_VTK_TRACER_MODULE_HPP 28 #define OPM_VTK_TRACER_MODULE_HPP 30 #include <dune/common/fvector.hh> 56 template <
class TypeTag>
69 static constexpr
auto vtkFormat = getPropValue<TypeTag, Properties::VtkOutputFormat>();
73 using ScalarBuffer =
typename ParentType::ScalarBuffer;
86 Parameters::Register<Parameters::VtkWriteTracerConcentration>
87 (
"Include the tracer concentration in the VTK output files");
96 if (eclTracerConcentrationOutput_()) {
97 const auto& tracerModel = this->simulator_.problem().tracerModel();
98 eclFreeTracerConcentration_.resize(tracerModel.numTracers());
99 eclSolTracerConcentration_.resize(tracerModel.numTracers());
100 const auto& enableSolTracers = tracerModel.enableSolTracers();
102 for (std::size_t tracerIdx = 0; tracerIdx < eclFreeTracerConcentration_.size(); ++tracerIdx) {
104 if (enableSolTracers[tracerIdx]) {
117 if (!Parameters::Get<Parameters::EnableVtkOutput>()) {
121 if (eclTracerConcentrationOutput_()) {
122 const auto& tracerModel = elemCtx.problem().tracerModel();
123 const auto& enableSolTracers = tracerModel.enableSolTracers();
125 for (std::size_t tracerIdx = 0; tracerIdx < eclFreeTracerConcentration_.size(); ++tracerIdx) {
127 for (
unsigned dofIdx = 0; dofIdx < elemCtx.numPrimaryDof(0); ++dofIdx) {
128 const unsigned globalDofIdx = elemCtx.globalSpaceIndex(dofIdx, 0);
129 eclFreeTracerConcentration_[tracerIdx][globalDofIdx] =
130 tracerModel.freeTracerConcentration(tracerIdx, globalDofIdx);
133 if (enableSolTracers[tracerIdx]) {
134 for (
unsigned dofIdx = 0; dofIdx < elemCtx.numPrimaryDof(0); ++dofIdx) {
135 const unsigned globalDofIdx = elemCtx.globalSpaceIndex(dofIdx, 0);
136 eclSolTracerConcentration_[tracerIdx][globalDofIdx] =
137 tracerModel.solTracerConcentration(tracerIdx, globalDofIdx);
149 if (!dynamic_cast<VtkMultiWriter*>(&baseWriter))
152 if (eclTracerConcentrationOutput_()){
153 const auto& tracerModel = this->simulator_.problem().tracerModel();
154 const auto& enableSolTracers = tracerModel.enableSolTracers();
156 for (std::size_t tracerIdx = 0; tracerIdx < eclFreeTracerConcentration_.size(); ++tracerIdx) {
157 const std::string tmp =
"freeTracerConcentration_" + tracerModel.name(tracerIdx);
159 eclFreeTracerConcentration_[tracerIdx], BufferType::Dof);
160 if (enableSolTracers[tracerIdx]) {
161 const std::string tmp2 =
"solTracerConcentration_" + tracerModel.name(tracerIdx);
163 eclSolTracerConcentration_[tracerIdx], BufferType::Dof);
170 static bool eclTracerConcentrationOutput_()
172 static bool val = Parameters::Get<Parameters::VtkWriteTracerConcentration>();
176 std::vector<ScalarBuffer> eclFreeTracerConcentration_;
177 std::vector<ScalarBuffer> eclSolTracerConcentration_;
182 #endif // OPM_VTK_TRACER_MODULE_HPP typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(...))
Definition: propertysystem.hh:233
void commitScalarBuffer_(BaseOutputWriter &baseWriter, const char *name, ScalarBuffer &buffer, BufferType bufferType)
Add a buffer containing scalar quantities to the result file.
Definition: baseoutputmodule.hh:238
This file provides the infrastructure to retrieve run-time parameters.
The base class for writer modules.
Definition: baseoutputmodule.hh:67
The base class for writer modules.
BufferType
Definition: baseoutputmodule.hh:143
VTK output module for the tracer model's parameters.
Definition: VtkTracerModule.hpp:57
Simplifies writing multi-file VTK datasets.
Definition: vtkmultiwriter.hh:64
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: blackoilbioeffectsmodules.hh:45
The base class for all output writers.
Definition: baseoutputwriter.hh:45
Definition: blackoilnewtonmethodparams.hpp:31
Declares the properties required by the black oil model.
Declare the properties used by the infrastructure code of the finite volume discretizations.
void allocBuffers() override
Allocate memory for the scalar fields we would like to write to the VTK file.
Definition: VtkTracerModule.hpp:94
void processElement(const ElementContext &elemCtx) override
Modify the internal buffers according to the intensive quantities relevant for an element ...
Definition: VtkTracerModule.hpp:115
void commitBuffers(BaseOutputWriter &baseWriter) override
Add all buffers to the VTK output writer.
Definition: VtkTracerModule.hpp:147
void resizeScalarBuffer_(ScalarBuffer &buffer, BufferType bufferType)
Allocate the space for a buffer storing a scalar quantity.
Definition: baseoutputmodule.hh:157
The Opm property system, traits with inheritance.
Simplifies writing multi-file VTK datasets.
Definition: VtkTracerModule.hpp:45
static void registerParameters()
Register all run-time parameters for the tracer VTK output module.
Definition: VtkTracerModule.hpp:84