OGS
ThermoMechanicalPhaseFieldProcess.h
Go to the documentation of this file.
1
11#pragma once
12
14#include "ProcessLib/Process.h"
16
17namespace ProcessLib
18{
19namespace ThermoMechanicalPhaseField
20{
21struct ThermoMechanicalPhaseFieldLocalAssemblerInterface;
52template <int DisplacementDim>
54{
55public:
57 std::string name,
58 MeshLib::Mesh& mesh,
59 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&&
60 jacobian_assembler,
61 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
62 parameters,
63 unsigned const integration_order,
64 std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>&&
65 process_variables,
67 SecondaryVariableCollection&& secondary_variables,
68 int const mechanics_related_process_id,
69 int const phase_field_process_id,
70 int const heat_conduction_process_id);
71
74 bool isLinear() const override;
76
78 const int process_id) const override;
79
81 const int process_id) const override;
82
83private:
84 void constructDofTable() override;
85
87 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const&
88 media) override;
89
91 NumLib::LocalToGlobalIndexMap const& dof_table,
92 MeshLib::Mesh const& mesh,
93 unsigned const integration_order) override;
94
95 void assembleConcreteProcess(const double t, double const dt,
96 std::vector<GlobalVector*> const& x,
97 std::vector<GlobalVector*> const& x_prev,
98 int const process_id, GlobalMatrix& M,
99 GlobalMatrix& K, GlobalVector& b) override;
100
102 const double t, double const dt, std::vector<GlobalVector*> const& x,
103 std::vector<GlobalVector*> const& x_prev, int const process_id,
104 GlobalVector& b, GlobalMatrix& Jac) override;
105
106 void preTimestepConcreteProcess(std::vector<GlobalVector*> const& x,
107 double const t, double const dt,
108 const int process_id) override;
109
110 void postTimestepConcreteProcess(std::vector<GlobalVector*> const& x,
111 std::vector<GlobalVector*> const& x_prev,
112 double const t, double const dt,
113 int const process_id) override;
114
116 std::vector<GlobalVector*> const& x,
117 std::vector<GlobalVector*> const& x_prev, const double t,
118 double const dt, int const process_id) override;
119
120 // To be replaced.
122 const int process_id) const;
123
124private:
126
127 std::vector<
128 std::unique_ptr<ThermoMechanicalPhaseFieldLocalAssemblerInterface>>
130
131 std::unique_ptr<NumLib::LocalToGlobalIndexMap>
133
135 // only if the staggered scheme is used.
137
140
143
146};
147
148extern template class ThermoMechanicalPhaseFieldProcess<2>;
149extern template class ThermoMechanicalPhaseFieldProcess<3>;
150
151} // namespace ThermoMechanicalPhaseField
152} // namespace ProcessLib
MathLib::SparsityPattern< GlobalIndexType > GlobalSparsityPattern
Global vector based on Eigen vector.
Definition EigenVector.h:25
std::string const name
Definition Process.h:362
Handles configuration of several secondary variables from the project file.
A class to simulate thermo-mechanical fracturing process using phase-field approach in solids describ...
std::vector< std::unique_ptr< ThermoMechanicalPhaseFieldLocalAssemblerInterface > > _local_assemblers
NumLib::LocalToGlobalIndexMap const & getDOFTable(const int process_id) const override
void assembleWithJacobianConcreteProcess(const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id, GlobalVector &b, GlobalMatrix &Jac) override
int const _mechanics_related_process_id
ID of the processes that contains mechanical process.
void preTimestepConcreteProcess(std::vector< GlobalVector * > const &x, double const t, double const dt, const int process_id) override
void assembleConcreteProcess(const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b) override
MathLib::MatrixSpecifications getMatrixSpecifications(const int process_id) const override
NumLib::LocalToGlobalIndexMap & getDOFTableByProcessID(const int process_id) const
void postNonLinearSolverConcreteProcess(std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, const double t, double const dt, int const process_id) override
void initializeBoundaryConditions(std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media) override
ThermoMechanicalPhaseFieldProcess(std::string name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, unsigned const integration_order, std::vector< std::vector< std::reference_wrapper< ProcessVariable > > > &&process_variables, ThermoMechanicalPhaseFieldProcessData< DisplacementDim > &&process_data, SecondaryVariableCollection &&secondary_variables, int const mechanics_related_process_id, int const phase_field_process_id, int const heat_conduction_process_id)
void postTimestepConcreteProcess(std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, double const t, double const dt, int const process_id) override
GlobalSparsityPattern _sparsity_pattern_with_single_component
Sparsity pattern for the phase field equation, and it is initialized.
void initializeConcreteProcess(NumLib::LocalToGlobalIndexMap const &dof_table, MeshLib::Mesh const &mesh, unsigned const integration_order) override
Process specific initialization called by initialize().