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