OGS
CompareJacobiansJacobianAssembler.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 <fstream>
7#include <limits>
8#include <memory>
9
11
12namespace BaseLib
13{
14class ConfigTree;
15} // namespace BaseLib
16
17namespace ProcessLib
18{
25{
26public:
28 std::unique_ptr<AbstractJacobianAssembler>&& asm1,
29 std::unique_ptr<AbstractJacobianAssembler>&& asm2,
30 double abs_tol,
31 double rel_tol,
32 bool fail_on_error,
33 std::string const& log_file_path)
34 : _asm1(std::move(asm1)),
35 _asm2(std::move(asm2)),
36 _abs_tol(abs_tol),
37 _rel_tol(rel_tol),
38 _fail_on_error(fail_on_error),
39 _log_file(log_file_path)
40 {
41 _log_file.precision(std::numeric_limits<double>::max_digits10);
42 _log_file << "#!/usr/bin/env python\n"
43 "import numpy as np\n"
44 "from numpy import nan\n"
45 << std::endl;
46 }
47
49 double const t, double const dt,
50 std::vector<double> const& local_x,
51 std::vector<double> const& local_x_prev,
52 std::vector<double>& local_b_data,
53 std::vector<double>& local_Jac_data) override;
54
55 std::unique_ptr<AbstractJacobianAssembler> copy() const override;
56
57private:
58 std::unique_ptr<AbstractJacobianAssembler> _asm1;
59 std::unique_ptr<AbstractJacobianAssembler> _asm2;
60
61 // TODO change to matrix
62 double const _abs_tol;
63 double const _rel_tol;
64
66 bool const _fail_on_error;
67
70 std::ofstream _log_file;
71
75 std::size_t _counter = 0;
76};
77
78std::unique_ptr<CompareJacobiansJacobianAssembler>
80
81} // namespace ProcessLib
AbstractJacobianAssembler(std::vector< double > const &&absolute_epsilons)
bool const _fail_on_error
Whether to abort if the tolerances are exceeded.
void assembleWithJacobian(LocalAssemblerInterface &local_assembler, double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) override
std::unique_ptr< AbstractJacobianAssembler > _asm2
std::unique_ptr< AbstractJacobianAssembler > copy() const override
CompareJacobiansJacobianAssembler(std::unique_ptr< AbstractJacobianAssembler > &&asm1, std::unique_ptr< AbstractJacobianAssembler > &&asm2, double abs_tol, double rel_tol, bool fail_on_error, std::string const &log_file_path)
std::unique_ptr< AbstractJacobianAssembler > _asm1
std::unique_ptr< CompareJacobiansJacobianAssembler > createCompareJacobiansJacobianAssembler(BaseLib::ConfigTree const &config)