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