diff --git a/ProcessLib/Output/IntegrationPointWriter.h b/ProcessLib/Output/IntegrationPointWriter.h new file mode 100644 index 0000000000000000000000000000000000000000..b442d107f8df9efda4e2a23a6c7629e1ce1a8ae8 --- /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 467a04085e63c1e51cb069886de43ecda42d5525..1f9d078b4eb2a1a414c2e63a0719d8afa428f9bc 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: