OGS
CreateThermoHydroMechanicsProcess.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
12#include "thermohydromechanics_export.h"
13
14namespace BaseLib
15{
16class ConfigTree;
17}
18
19namespace MaterialPropertyLib
20{
21class Medium;
22}
23
24namespace MeshLib
25{
26class Mesh;
27}
28
29namespace ParameterLib
30{
31struct CoordinateSystem;
32struct ParameterBase;
33} // namespace ParameterLib
34namespace ProcessLib
35{
37class Process;
38class ProcessVariable;
39} // namespace ProcessLib
40
41namespace ProcessLib
42{
44{
45template <int DisplacementDim>
46THERMOHYDROMECHANICS_EXPORT std::unique_ptr<Process>
48 std::string const& name,
49 MeshLib::Mesh& mesh,
50 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
51 std::vector<ProcessVariable> const& variables,
52 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
53 std::optional<ParameterLib::CoordinateSystem> const&
54 local_coordinate_system,
55 unsigned const integration_order,
56 BaseLib::ConfigTree const& config,
57 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
58
59extern template THERMOHYDROMECHANICS_EXPORT std::unique_ptr<Process>
61 std::string const& name, MeshLib::Mesh& mesh,
62 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
63 std::vector<ProcessVariable> const& variables,
64 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
65 std::optional<ParameterLib::CoordinateSystem> const&
66 local_coordinate_system,
67 unsigned const integration_order, BaseLib::ConfigTree const& config,
68 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
69
70extern template THERMOHYDROMECHANICS_EXPORT std::unique_ptr<Process>
72 std::string const& name,
73 MeshLib::Mesh& mesh,
74 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
75 std::vector<ProcessVariable> const& variables,
76 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
77 std::optional<ParameterLib::CoordinateSystem> const&
78 local_coordinate_system,
79 unsigned const integration_order,
80 BaseLib::ConfigTree const& config,
81 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
82} // namespace ThermoHydroMechanics
83} // namespace ProcessLib
Base class for Jacobian assemblers.
std::unique_ptr< Process > createThermoHydroMechanicsProcess(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 > createThermoHydroMechanicsProcess< 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)
template std::unique_ptr< Process > createThermoHydroMechanicsProcess< 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)
A local coordinate system used for tensor transformations.