OGS
MatrixOutput.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <fstream>
14#include <functional>
15#include <mutex>
16#include <unordered_set>
17
19
21{
24{
26
27 void operator()(double const t, int const process_id, GlobalMatrix const& M,
28 GlobalMatrix const& K, GlobalVector const& b,
29 GlobalMatrix const* const Jac = nullptr);
30
31private:
32 std::string filenamePrefix_;
33
36 std::size_t counter_ = 0;
37
38 bool do_output_ = false;
39};
40
43{
45
46 void operator()(double const t, int const process_id,
47 std::size_t const element_id,
48 std::vector<double> const& local_M_data,
49 std::vector<double> const& local_K_data,
50 std::vector<double> const& local_b_data,
51 std::vector<double> const* const local_Jac_data = nullptr);
52
54
55private:
56 bool isOutputRequested(std::size_t const element_id) const;
57
58 std::mutex mutex_;
59 std::ofstream outputFile_;
60 std::function<bool(std::size_t)> output_element_predicate_;
61};
62
63namespace detail
64{
65// helper function, exposed for unit testing, only
66std::function<bool(std::size_t)> createLocalMatrixOutputElementPredicate(
67 std::string const& element_ids_str);
68
69// helper function, exposed for unit testing, only
70std::unordered_set<std::size_t> parseSetOfSizeT(std::string const& str,
71 std::string const& warn_msg);
72} // namespace detail
73} // namespace ProcessLib::Assembly
Global vector based on Eigen vector.
Definition EigenVector.h:25
std::unordered_set< std::size_t > parseSetOfSizeT(std::string const &str, std::string const &warn_msg)
std::function< bool(std::size_t)> createLocalMatrixOutputElementPredicate(std::string const &element_ids_str)
Writes global matrices to disk for debugging purposes.
void operator()(double const t, int const process_id, GlobalMatrix const &M, GlobalMatrix const &K, GlobalVector const &b, GlobalMatrix const *const Jac=nullptr)
Writes local matrices to disk for debugging purposes.
bool isOutputRequested(std::size_t const element_id) const
std::function< bool(std::size_t)> output_element_predicate_
void operator()(double const t, int const process_id, std::size_t const element_id, std::vector< double > const &local_M_data, std::vector< double > const &local_K_data, std::vector< double > const &local_b_data, std::vector< double > const *const local_Jac_data=nullptr)