OGS
PythonSourceTerm.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
9#include "Utils/BcOrStData.h"
10
11namespace ProcessLib
12{
13class ProcessVariable;
14
15namespace SourceTerms::Python
16{
17struct PythonStData final
19 PythonSourceTermPythonSideInterface>
20{
26 getFlagAndFluxAndDFlux(double const t, std::array<double, 3> const coords,
27 std::vector<double> const& prim_vars_data) const
28 {
29 auto [flux, dFlux] =
30 bc_or_st_object->getFlux(t, coords, prim_vars_data);
31
32 return {true, flux, std::move(dFlux)};
33 }
34};
35
38{
39public:
40 explicit PythonSourceTerm(
41 std::unique_ptr<NumLib::LocalToGlobalIndexMap> source_term_dof_table,
42 PythonStData&& source_term_data, unsigned const integration_order,
43 unsigned const global_dim, bool const flush_stdout);
44
45 void integrate(const double t, GlobalVector const& x, GlobalVector& b,
46 GlobalMatrix* jac) const override;
47
48private:
51
53 std::vector<std::unique_ptr<PythonSourceTermLocalAssemblerInterface>>
55
59 bool const _flush_stdout;
60};
61
62} // namespace SourceTerms::Python
63} // namespace ProcessLib
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
PythonSourceTerm(std::unique_ptr< NumLib::LocalToGlobalIndexMap > source_term_dof_table, PythonStData &&source_term_data, unsigned const integration_order, unsigned const global_dim, bool const flush_stdout)
std::vector< std::unique_ptr< PythonSourceTermLocalAssemblerInterface > > _local_assemblers
Local assemblers for all elements of the source term mesh.
void integrate(const double t, GlobalVector const &x, GlobalVector &b, GlobalMatrix *jac) const override
PythonStData _source_term_data
Auxiliary data used by the local assemblers.
ProcessLib::BoundaryConditionAndSourceTerm::Python::FlagAndFluxAndDFlux getFlagAndFluxAndDFlux(double const t, std::array< double, 3 > const coords, std::vector< double > const &prim_vars_data) const