From f5d6055be0b4f17e80f80f1ba89d6d4d37368bb4 Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Mon, 26 Jun 2017 15:17:29 +0200 Subject: [PATCH] [PL] SD: Extract LocalAsmInterface in own file. The interface is needed in the process, but not the whole FEM part. --- .../LocalAssemblerInterface.h | 63 +++++++++++++++++++ .../SmallDeformation/SmallDeformationFEM.h | 41 ------------ .../SmallDeformationProcess.h | 1 + 3 files changed, 64 insertions(+), 41 deletions(-) create mode 100644 ProcessLib/SmallDeformation/LocalAssemblerInterface.h diff --git a/ProcessLib/SmallDeformation/LocalAssemblerInterface.h b/ProcessLib/SmallDeformation/LocalAssemblerInterface.h new file mode 100644 index 00000000000..01c7f48fa36 --- /dev/null +++ b/ProcessLib/SmallDeformation/LocalAssemblerInterface.h @@ -0,0 +1,63 @@ +/** + * \copyright + * Copyright (c) 2012-2017, 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 + +#include <vector> + +#include "NumLib/Extrapolation/ExtrapolatableElement.h" +#include "ProcessLib/LocalAssemblerInterface.h" + +namespace ProcessLib +{ +namespace SmallDeformation +{ +struct SmallDeformationLocalAssemblerInterface + : public ProcessLib::LocalAssemblerInterface, + public NumLib::ExtrapolatableElement +{ + virtual std::vector<double> const& getIntPtSigmaXX( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtSigmaYY( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtSigmaZZ( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtSigmaXY( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtSigmaXZ( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtSigmaYZ( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtEpsilonXX( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtEpsilonYY( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtEpsilonZZ( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtEpsilonXY( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtEpsilonXZ( + std::vector<double>& cache) const = 0; + + virtual std::vector<double> const& getIntPtEpsilonYZ( + std::vector<double>& cache) const = 0; +}; + +} // namespace SmallDeformation +} // namespace ProcessLib diff --git a/ProcessLib/SmallDeformation/SmallDeformationFEM.h b/ProcessLib/SmallDeformation/SmallDeformationFEM.h index c636580640c..3e22ead64f0 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationFEM.h +++ b/ProcessLib/SmallDeformation/SmallDeformationFEM.h @@ -71,47 +71,6 @@ struct SecondaryData std::vector<ShapeMatrixType, Eigen::aligned_allocator<ShapeMatrixType>> N; }; -struct SmallDeformationLocalAssemblerInterface - : public ProcessLib::LocalAssemblerInterface, - public NumLib::ExtrapolatableElement -{ - virtual std::vector<double> const& getIntPtSigmaXX( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtSigmaYY( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtSigmaZZ( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtSigmaXY( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtSigmaXZ( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtSigmaYZ( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtEpsilonXX( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtEpsilonYY( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtEpsilonZZ( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtEpsilonXY( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtEpsilonXZ( - std::vector<double>& cache) const = 0; - - virtual std::vector<double> const& getIntPtEpsilonYZ( - std::vector<double>& cache) const = 0; -}; - template <typename ShapeFunction, typename IntegrationMethod, int DisplacementDim> class SmallDeformationLocalAssembler diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcess.h b/ProcessLib/SmallDeformation/SmallDeformationProcess.h index 7cfc20a71d3..b4427aafbb7 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationProcess.h +++ b/ProcessLib/SmallDeformation/SmallDeformationProcess.h @@ -9,6 +9,7 @@ #pragma once +#include "LocalAssemblerInterface.h" #include <cassert> #include "ProcessLib/Process.h" -- GitLab