OGS
PhaseField/LocalAssemblerInterface.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <vector>
7
10
11namespace ProcessLib
12{
13namespace PhaseField
14{
18{
19 virtual std::size_t setIPDataInitialConditions(
20 std::string_view const name, double const* values,
21 int const integration_order) = 0;
22
23 virtual std::vector<double> getSigma() const = 0;
24
25 virtual std::vector<double> getEpsilon() const = 0;
26
27 virtual std::vector<double> const& getIntPtSigma(
28 const double t,
29 std::vector<GlobalVector*> const& x,
30 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
31 std::vector<double>& cache) const = 0;
32
33 virtual std::vector<double> const& getIntPtSigmaTensile(
34 const double t,
35 std::vector<GlobalVector*> const& x,
36 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
37 std::vector<double>& cache) const = 0;
38
39 virtual std::vector<double> const& getIntPtSigmaCompressive(
40 const double t,
41 std::vector<GlobalVector*> const& x,
42 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
43 std::vector<double>& cache) const = 0;
44
45 virtual std::vector<double> const& getIntPtEpsilon(
46 const double t,
47 std::vector<GlobalVector*> const& x,
48 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
49 std::vector<double>& cache) const = 0;
50
51 virtual std::vector<double> const& getIntPtEpsilonTensile(
52 const double t,
53 std::vector<GlobalVector*> const& x,
54 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_table,
55 std::vector<double>& cache) const = 0;
56
58 std::size_t mesh_item_id,
59 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_tables,
60 std::vector<GlobalVector*> const& x, double const t,
61 double& crack_volume) = 0;
62
63 virtual void computeEnergy(
64 std::size_t mesh_item_id,
65 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_tables,
66 std::vector<GlobalVector*> const& x, double const t,
67 double& elastic_energy, double& surface_energy,
68 double& pressure_work) = 0;
69};
70
71} // namespace PhaseField
72} // namespace ProcessLib
virtual std::vector< double > const & getIntPtSigmaTensile(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
virtual std::vector< double > const & getIntPtEpsilonTensile(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
virtual std::vector< double > const & getIntPtEpsilon(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
virtual std::vector< double > getSigma() const =0
virtual std::vector< double > const & getIntPtSigma(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
virtual void computeCrackIntegral(std::size_t mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, double const t, double &crack_volume)=0
virtual std::vector< double > const & getIntPtSigmaCompressive(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
virtual void computeEnergy(std::size_t mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, double const t, double &elastic_energy, double &surface_energy, double &pressure_work)=0
virtual std::size_t setIPDataInitialConditions(std::string_view const name, double const *values, int const integration_order)=0
virtual std::vector< double > getEpsilon() const =0