OGS
CreateThermoMechanicsProcess.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 <map>
7#include <memory>
8#include <optional>
9#include <string>
10#include <vector>
11
12namespace BaseLib
13{
14class ConfigTree;
15}
16namespace MeshLib
17{
18class Mesh;
19}
20
21namespace MaterialPropertyLib
22{
23class Medium;
24}
25
26namespace ParameterLib
27{
28struct CoordinateSystem;
29struct ParameterBase;
30} // namespace ParameterLib
31namespace ProcessLib
32{
34class Process;
35class ProcessVariable;
36} // namespace ProcessLib
37
38namespace ProcessLib
39{
40namespace ThermoMechanics
41{
42template <int DisplacementDim>
43std::unique_ptr<Process> createThermoMechanicsProcess(
44 std::string const& name, MeshLib::Mesh& mesh,
45 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
46 std::vector<ProcessVariable> const& variables,
47 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
48 std::optional<ParameterLib::CoordinateSystem> const&
49 local_coordinate_system,
50 unsigned const integration_order, BaseLib::ConfigTree const& config,
51 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
52
53extern template std::unique_ptr<Process> createThermoMechanicsProcess<2>(
54 std::string const& name, MeshLib::Mesh& mesh,
55 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
56 std::vector<ProcessVariable> const& variables,
57 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
58 std::optional<ParameterLib::CoordinateSystem> const&
59 local_coordinate_system,
60 unsigned const integration_order, BaseLib::ConfigTree const& config,
61 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
62
63extern template std::unique_ptr<Process> createThermoMechanicsProcess<3>(
64 std::string const& name, MeshLib::Mesh& mesh,
65 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
66 std::vector<ProcessVariable> const& variables,
67 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
68 std::optional<ParameterLib::CoordinateSystem> const&
69 local_coordinate_system,
70 unsigned const integration_order, BaseLib::ConfigTree const& config,
71 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
72
73} // namespace ThermoMechanics
74} // namespace ProcessLib
Base class for Jacobian assemblers.
template std::unique_ptr< Process > createThermoMechanicsProcess< 3 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
std::unique_ptr< Process > createThermoMechanicsProcess(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< Process > createThermoMechanicsProcess< 2 >(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
A local coordinate system used for tensor transformations.