OGS
ExtrapolatorData.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
8
#include "
NumLib/DOF/LocalToGlobalIndexMap.h
"
9
#include "
NumLib/Extrapolation/Extrapolator.h
"
10
11
namespace
ProcessLib
12
{
20
class
ExtrapolatorData
21
{
22
public
:
23
ExtrapolatorData
() =
default
;
24
34
ExtrapolatorData
(
35
std::unique_ptr<NumLib::Extrapolator>&& extrapolator,
36
NumLib::LocalToGlobalIndexMap
const
*
const
dof_table_single_component,
37
bool
const
manage_storage)
38
:
_extrapolator
(std::move(extrapolator)),
39
_dof_table_single_component
(dof_table_single_component),
40
_manage_storage
(manage_storage)
41
{
42
}
43
44
ExtrapolatorData
(
ExtrapolatorData
&& other)
45
:
_extrapolator
(std::move(other.
_extrapolator
)),
46
_dof_table_single_component
(other.
_dof_table_single_component
),
47
_manage_storage
(other.
_manage_storage
)
48
{
49
other._manage_storage =
false
;
50
other._dof_table_single_component =
nullptr
;
51
}
52
53
ExtrapolatorData
&
operator=
(
ExtrapolatorData
&& other)
54
{
55
cleanup
();
56
_manage_storage
= other._manage_storage;
57
_dof_table_single_component
= other._dof_table_single_component;
58
_extrapolator
= std::move(other._extrapolator);
59
other._dof_table_single_component =
nullptr
;
60
other._manage_storage =
false
;
61
return
*
this
;
62
}
63
64
NumLib::LocalToGlobalIndexMap
const
&
getDOFTable
()
const
65
{
66
return
*
_dof_table_single_component
;
67
}
68
NumLib::Extrapolator
&
getExtrapolator
()
const
{
return
*
_extrapolator
; }
69
70
~ExtrapolatorData
() {
cleanup
(); }
71
72
private
:
74
void
cleanup
()
75
{
76
if
(
_manage_storage
)
77
{
78
delete
_dof_table_single_component
;
79
_dof_table_single_component
=
nullptr
;
80
}
81
}
82
84
std::unique_ptr<NumLib::Extrapolator>
_extrapolator
;
85
87
NumLib::LocalToGlobalIndexMap
const
*
_dof_table_single_component
=
nullptr
;
88
91
bool
_manage_storage
=
false
;
92
};
93
94
}
// namespace ProcessLib
Extrapolator.h
LocalToGlobalIndexMap.h
NumLib::Extrapolator
Definition
Extrapolator.h:19
NumLib::LocalToGlobalIndexMap
Definition
LocalToGlobalIndexMap.h:34
ProcessLib::ExtrapolatorData::operator=
ExtrapolatorData & operator=(ExtrapolatorData &&other)
Definition
ExtrapolatorData.h:53
ProcessLib::ExtrapolatorData::_extrapolator
std::unique_ptr< NumLib::Extrapolator > _extrapolator
Extrapolator managed by the ExtrapolatorData instance.
Definition
ExtrapolatorData.h:84
ProcessLib::ExtrapolatorData::getDOFTable
NumLib::LocalToGlobalIndexMap const & getDOFTable() const
Definition
ExtrapolatorData.h:64
ProcessLib::ExtrapolatorData::_manage_storage
bool _manage_storage
Definition
ExtrapolatorData.h:91
ProcessLib::ExtrapolatorData::~ExtrapolatorData
~ExtrapolatorData()
Definition
ExtrapolatorData.h:70
ProcessLib::ExtrapolatorData::getExtrapolator
NumLib::Extrapolator & getExtrapolator() const
Definition
ExtrapolatorData.h:68
ProcessLib::ExtrapolatorData::ExtrapolatorData
ExtrapolatorData(std::unique_ptr< NumLib::Extrapolator > &&extrapolator, NumLib::LocalToGlobalIndexMap const *const dof_table_single_component, bool const manage_storage)
Definition
ExtrapolatorData.h:34
ProcessLib::ExtrapolatorData::ExtrapolatorData
ExtrapolatorData()=default
ProcessLib::ExtrapolatorData::_dof_table_single_component
NumLib::LocalToGlobalIndexMap const * _dof_table_single_component
D.o.f. table used by the extrapolator.
Definition
ExtrapolatorData.h:87
ProcessLib::ExtrapolatorData::cleanup
void cleanup()
Deletes the d.o.f table if it is allowed to do so.
Definition
ExtrapolatorData.h:74
ProcessLib::ExtrapolatorData::ExtrapolatorData
ExtrapolatorData(ExtrapolatorData &&other)
Definition
ExtrapolatorData.h:44
ProcessLib
Definition
ProjectData.h:40
ProcessLib
Output
ExtrapolatorData.h
Generated by
1.14.0