From 287d370cfc915be8c171799e8e1733973b19f0b7 Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <github@naumov.de> Date: Mon, 15 Jan 2018 20:23:24 +0100 Subject: [PATCH] [PL] Add IntegrationPointWriter. Add the interface and add a vector of IntegrationPointWriter's to process base class. Include corresponing getter. The integration point writer are populated in specific process' constructors. --- ProcessLib/Output/IntegrationPointWriter.h | 24 ++++++++++++++++++++++ ProcessLib/Process.h | 13 ++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 ProcessLib/Output/IntegrationPointWriter.h diff --git a/ProcessLib/Output/IntegrationPointWriter.h b/ProcessLib/Output/IntegrationPointWriter.h new file mode 100644 index 00000000000..b442d107f8d --- /dev/null +++ b/ProcessLib/Output/IntegrationPointWriter.h @@ -0,0 +1,24 @@ +/** + * \copyright + * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#pragma once + +namespace ProcessLib +{ +struct IntegrationPointWriter +{ + virtual ~IntegrationPointWriter() = default; + + virtual int numberOfComponents() const = 0; + virtual int integrationOrder() const = 0; + virtual std::string name() const = 0; + virtual std::vector<std::vector<double>> values() const = 0; +}; + +} // namespace ProcessLib diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h index 467a04085e6..1f9d078b4eb 100644 --- a/ProcessLib/Process.h +++ b/ProcessLib/Process.h @@ -19,6 +19,7 @@ #include "ProcessLib/SourceTerms/SourceTermCollection.h" #include "ProcessLib/Output/CachedSecondaryVariable.h" #include "ProcessLib/Output/ExtrapolatorData.h" +#include "ProcessLib/Output/IntegrationPointWriter.h" #include "ProcessLib/Output/SecondaryVariable.h" #include "ProcessLib/Parameter/Parameter.h" #include "ProcessLib/SourceTerms/NodalSourceTerm.h" @@ -126,6 +127,12 @@ public: return _secondary_variables; } + std::vector<std::unique_ptr<IntegrationPointWriter>> const& + getIntegrationPointWriter() const + { + return _integration_point_writer; + } + // Used as a call back for CalculateSurfaceFlux process. virtual std::vector<double> getFlux(std::size_t /*element_id*/, @@ -264,6 +271,12 @@ protected: /// implemented in MathLib::GaussLegendre. unsigned const _integration_order; + /// An optional vector containing descriptions for integration point data + /// output and setting of the integration point initial conditions. + /// The integration point writer are implemented in specific processes. + std::vector<std::unique_ptr<IntegrationPointWriter>> + _integration_point_writer; + GlobalSparsityPattern _sparsity_pattern; private: -- GitLab