/** * \file * \copyright * Copyright (c) 2012-2021, 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 "MaterialLib/SolidModels/MechanicsBase.h" #include "NumLib/Extrapolation/ExtrapolatableElement.h" #include "ProcessLib/LocalAssemblerInterface.h" namespace ProcessLib::ThermoRichardsMechanics { template struct LocalAssemblerInterface : public ProcessLib::LocalAssemblerInterface, public NumLib::ExtrapolatableElement { virtual std::size_t setIPDataInitialConditions( std::string const& name, double const* values, int const integration_order) = 0; virtual std::vector getSigma() const = 0; virtual std::vector const& getIntPtSigma( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; virtual std::vector getSwellingStress() const = 0; virtual std::vector const& getIntPtSwellingStress( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; virtual std::vector getEpsilon() const = 0; virtual std::vector const& getIntPtEpsilon( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; virtual std::vector const& getIntPtDarcyVelocity( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; virtual std::vector getSaturation() const = 0; virtual std::vector const& getIntPtSaturation( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; virtual std::vector getPorosity() const = 0; virtual std::vector const& getIntPtPorosity( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; virtual std::vector getTransportPorosity() const = 0; virtual std::vector const& getIntPtTransportPorosity( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; virtual std::vector const& getIntPtDryDensitySolid( const double t, std::vector const& x, std::vector const& dof_table, std::vector& cache) const = 0; // TODO move to NumLib::ExtrapolatableElement virtual unsigned getNumberOfIntegrationPoints() const = 0; virtual typename MaterialLib::Solids::MechanicsBase< DisplacementDim>::MaterialStateVariables const& getMaterialStateVariablesAt(unsigned /*integration_point*/) const = 0; }; } // namespace ProcessLib::ThermoRichardsMechanics