OGS
HydroMechanics/CreateHydroMechanicsProcess.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 MaterialPropertyLib
17{
18class Medium;
19}
20namespace MeshLib
21{
22class Mesh;
23}
24namespace ParameterLib
25{
26struct CoordinateSystem;
27struct ParameterBase;
28} // namespace ParameterLib
29namespace ProcessLib
30{
32class Process;
33class ProcessVariable;
34} // namespace ProcessLib
35
36namespace ProcessLib
37{
38namespace HydroMechanics
39{
40template <int DisplacementDim>
41std::unique_ptr<Process> createHydroMechanicsProcess(
42 std::string const& name,
43 MeshLib::Mesh& mesh,
44 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
45 std::vector<ProcessVariable> const& variables,
46 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
47 std::optional<ParameterLib::CoordinateSystem> const&
48 local_coordinate_system,
49 unsigned const integration_order,
50 BaseLib::ConfigTree const& config,
51 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
52
53extern template std::unique_ptr<Process> createHydroMechanicsProcess<2>(
54 std::string const& name,
55 MeshLib::Mesh& mesh,
56 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
57 std::vector<ProcessVariable> const& variables,
58 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
59 std::optional<ParameterLib::CoordinateSystem> const&
60 local_coordinate_system,
61 unsigned const integration_order,
62 BaseLib::ConfigTree const& config,
63 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
64
65extern template std::unique_ptr<Process> createHydroMechanicsProcess<3>(
66 std::string const& name,
67 MeshLib::Mesh& mesh,
68 std::unique_ptr<ProcessLib::AbstractJacobianAssembler>&& jacobian_assembler,
69 std::vector<ProcessVariable> const& variables,
70 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
71 std::optional<ParameterLib::CoordinateSystem> const&
72 local_coordinate_system,
73 unsigned const integration_order,
74 BaseLib::ConfigTree const& config,
75 std::map<int, std::shared_ptr<MaterialPropertyLib::Medium>> const& media);
76} // namespace HydroMechanics
77} // namespace ProcessLib
Base class for Jacobian assemblers.
std::unique_ptr< Process > createHydroMechanicsProcess(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 > createHydroMechanicsProcess< 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 > createHydroMechanicsProcess< 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.