OGS
CreateJacobianAssembler.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
5
8#include "BaseLib/Error.h"
12
13namespace ProcessLib
14{
15std::unique_ptr<AbstractJacobianAssembler> createJacobianAssembler(
16 std::optional<BaseLib::ConfigTree> const& config)
17{
18 if (!config)
19 {
20 return std::make_unique<AnalyticalJacobianAssembler>();
21 }
22
24 auto const type = config->peekConfigParameter<std::string>("type");
25
26 if (type == "Analytical")
27 {
28 config->ignoreConfigParameter("type");
29 return std::make_unique<AnalyticalJacobianAssembler>();
30 }
31 if (type == "CentralDifferences")
32 {
34 }
35 if (type == "CompareJacobians")
36 {
38 }
39 if (type == "ForwardDifferences")
40 {
42 }
43
44 OGS_FATAL("Unknown Jacobian assembler type: `{:s}'.", type);
45}
46} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:19
std::unique_ptr< CompareJacobiansJacobianAssembler > createCompareJacobiansJacobianAssembler(BaseLib::ConfigTree const &config)
std::unique_ptr< AbstractJacobianAssembler > createJacobianAssembler(std::optional< BaseLib::ConfigTree > const &config)
std::unique_ptr< AbstractJacobianAssembler > createForwardDifferencesJacobianAssembler(BaseLib::ConfigTree const &config)
std::unique_ptr< AbstractJacobianAssembler > createCentralDifferencesJacobianAssembler(BaseLib::ConfigTree const &config)