libMesh
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | Private Types | Private Attributes | List of all members
libMesh::MemoryHistoryData Class Reference

MemoryHistoryData provides a data structure to store memory history data. More...

#include <memory_history_data.h>

Inheritance diagram for libMesh::MemoryHistoryData:
[legend]

Public Types

typedef map_type::iterator stored_data_iterator
 

Public Member Functions

 MemoryHistoryData (DifferentiableSystem &system)
 
 ~MemoryHistoryData ()
 
virtual void store_initial_solution () override
 
virtual void store_primal_solution (stored_data_iterator stored_datum) override
 
virtual void store_adjoint_solution () override
 
virtual void rewrite_stored_solution () override
 
virtual void retrieve_primal_solution () override
 
virtual void retrieve_adjoint_solution () override
 
void store_vectors ()
 
void retrieve_vectors ()
 
unsigned int get_time_stamp ()
 
Real get_deltat_at ()
 
bool get_previously_stored ()
 
void set_time_stamp (unsigned int time_stamp_val)
 
void set_deltat_at (Real deltat_at_val)
 
void set_previously_stored (bool previously_stored_val)
 

Protected Attributes

unsigned int time_stamp
 
Real deltat_at
 
bool previously_stored
 

Private Types

typedef std::map< std::string, std::unique_ptr< NumericVector< Number > > > map_type
 
typedef map_type::iterator stored_vecs_iterator
 

Private Attributes

DifferentiableSystem_system
 
map_type stored_vecs
 
stored_vecs_iterator stored_vec
 

Detailed Description

MemoryHistoryData provides a data structure to store memory history data.

This is a companion class to MemorySolutionHistory.

Definition at line 16 of file memory_history_data.h.

Member Typedef Documentation

◆ map_type

typedef std::map<std::string, std::unique_ptr<NumericVector<Number> > > libMesh::MemoryHistoryData::map_type
private

Definition at line 41 of file memory_history_data.h.

◆ stored_data_iterator

typedef map_type::iterator libMesh::HistoryData::stored_data_iterator
inherited

Definition at line 55 of file history_data.h.

◆ stored_vecs_iterator

typedef map_type::iterator libMesh::MemoryHistoryData::stored_vecs_iterator
private

Definition at line 42 of file memory_history_data.h.

Constructor & Destructor Documentation

◆ MemoryHistoryData()

libMesh::MemoryHistoryData::MemoryHistoryData ( DifferentiableSystem system)
inline

Definition at line 21 of file memory_history_data.h.

◆ ~MemoryHistoryData()

libMesh::MemoryHistoryData::~MemoryHistoryData ( )
inline

Definition at line 24 of file memory_history_data.h.

24{};

Member Function Documentation

◆ get_deltat_at()

Real libMesh::HistoryData::get_deltat_at ( )
inlineinherited

Definition at line 36 of file history_data.h.

37 { return deltat_at; }

References libMesh::HistoryData::deltat_at.

◆ get_previously_stored()

bool libMesh::HistoryData::get_previously_stored ( )
inlineinherited

Definition at line 39 of file history_data.h.

40 { return previously_stored; }

References libMesh::HistoryData::previously_stored.

◆ get_time_stamp()

unsigned int libMesh::HistoryData::get_time_stamp ( )
inlineinherited

◆ retrieve_adjoint_solution()

void libMesh::MemoryHistoryData::retrieve_adjoint_solution ( )
overridevirtual

Implements libMesh::HistoryData.

Definition at line 71 of file memory_history_data.C.

References retrieve_vectors().

◆ retrieve_primal_solution()

void libMesh::MemoryHistoryData::retrieve_primal_solution ( )
overridevirtual

Implements libMesh::HistoryData.

Definition at line 66 of file memory_history_data.C.

67 {
69 }

References retrieve_vectors().

◆ retrieve_vectors()

void libMesh::MemoryHistoryData::retrieve_vectors ( )

Definition at line 101 of file memory_history_data.C.

102 {
103 // We are reading, hopefully something has been written before
105
106 map_type::iterator vec = stored_vecs.begin();
107 map_type::iterator vec_end = stored_vecs.end();
108
109 // Loop over all the saved vectors
110 for (; vec != vec_end; ++vec)
111 {
112 // The name of this vector
113 const std::string & vec_name = vec->first;
114
115 // Get the vec_name entry in the saved vectors map and set the
116 // current system vec[vec_name] entry to it
117 if (vec_name != "_solution")
118 _system.get_vector(vec_name) = *(vec->second);
119 }
120
121 std::string _solution("_solution");
122 *(_system.solution) = *(stored_vecs[_solution]);
123
124 }
std::unique_ptr< NumericVector< Number > > solution
Data structure to hold solution values.
Definition system.h:1655
const NumericVector< Number > & get_vector(std::string_view vec_name) const
Definition system.C:931
libmesh_assert(ctx)

References _system, libMesh::System::get_vector(), libMesh::libmesh_assert(), libMesh::HistoryData::previously_stored, libMesh::System::solution, and stored_vecs.

Referenced by retrieve_adjoint_solution(), and retrieve_primal_solution().

◆ rewrite_stored_solution()

void libMesh::MemoryHistoryData::rewrite_stored_solution ( )
overridevirtual

Implements libMesh::HistoryData.

Definition at line 58 of file memory_history_data.C.

59 {
60 // We are rewriting.
62
64 }

References libMesh::libmesh_assert(), libMesh::HistoryData::previously_stored, and store_vectors().

◆ set_deltat_at()

void libMesh::HistoryData::set_deltat_at ( Real  deltat_at_val)
inlineinherited

Definition at line 46 of file history_data.h.

47 { deltat_at = deltat_at_val; }

References libMesh::HistoryData::deltat_at.

Referenced by libMesh::FileHistoryData::store_primal_solution(), and store_primal_solution().

◆ set_previously_stored()

void libMesh::HistoryData::set_previously_stored ( bool  previously_stored_val)
inlineinherited

Definition at line 49 of file history_data.h.

50 { previously_stored = previously_stored_val; }

References libMesh::HistoryData::previously_stored.

◆ set_time_stamp()

void libMesh::HistoryData::set_time_stamp ( unsigned int  time_stamp_val)
inlineinherited

Definition at line 43 of file history_data.h.

44 { time_stamp = time_stamp_val; }

References libMesh::HistoryData::time_stamp.

◆ store_adjoint_solution()

void libMesh::MemoryHistoryData::store_adjoint_solution ( )
overridevirtual

Implements libMesh::HistoryData.

Definition at line 53 of file memory_history_data.C.

54 {
55 libmesh_error_msg("For MemorySolutionHistory, primal and adjoints are stored in the same container.");
56 }

◆ store_initial_solution()

void libMesh::MemoryHistoryData::store_initial_solution ( )
overridevirtual

Implements libMesh::HistoryData.

Definition at line 22 of file memory_history_data.C.

23 {
24 // The initial data should only be stored once.
26
27 time_stamp = 0;
28
29 deltat_at = std::numeric_limits<double>::signaling_NaN();
30
32
33 previously_stored = true;
34 }

References libMesh::HistoryData::deltat_at, libMesh::libmesh_assert(), libMesh::HistoryData::previously_stored, store_vectors(), and libMesh::HistoryData::time_stamp.

◆ store_primal_solution()

void libMesh::MemoryHistoryData::store_primal_solution ( stored_data_iterator  stored_datum)
overridevirtual

Implements libMesh::HistoryData.

Definition at line 36 of file memory_history_data.C.

37 {
38 stored_data_iterator stored_datum_last = stored_datum;
39 stored_datum_last--;
40
41 time_stamp = (stored_datum_last->second)->get_time_stamp() + 1;
42
43 // For the current time instant, we dont know yet what timestep the solver might decide, so a placeholder NaN for now.
44 deltat_at = std::numeric_limits<double>::signaling_NaN();
45
46 (stored_datum_last->second)->set_deltat_at(_system.time_solver->TimeSolver::last_completed_timestep_size());
47
49
50 previously_stored = true;
51 }
std::unique_ptr< TimeSolver > time_solver
A pointer to the solver object we're going to use.
map_type::iterator stored_data_iterator
void set_deltat_at(Real deltat_at_val)
unsigned int get_time_stamp()

References _system, libMesh::HistoryData::deltat_at, libMesh::HistoryData::get_time_stamp(), libMesh::HistoryData::previously_stored, libMesh::HistoryData::set_deltat_at(), store_vectors(), libMesh::DifferentiableSystem::time_solver, and libMesh::HistoryData::time_stamp.

◆ store_vectors()

void libMesh::MemoryHistoryData::store_vectors ( )

Definition at line 76 of file memory_history_data.C.

77 {
78 // Now save all the preserved vectors in stored_datum
79 // Loop over all the system vectors
81 vec_end = _system.vectors_end(); vec != vec_end; ++vec)
82 {
83 // The name of this vector
84 const std::string & vec_name = vec->first;
85
86 // Store the vector if it is to be preserved
87 if (_system.vector_preservation(vec_name))
88 {
89 stored_vecs[vec_name] = vec->second->clone();
90 }
91 }
92
93 // Of course, we will usually save the actual solution
94 std::string _solution("_solution");
96 {
97 stored_vecs[_solution] = _system.solution->clone();
98 }
99 }
vectors_iterator vectors_begin()
Beginning of vectors container.
Definition system.h:2505
std::map< std::string, std::unique_ptr< NumericVector< Number > >, std::less<> >::iterator vectors_iterator
Vector iterator typedefs.
Definition system.h:803
vectors_iterator vectors_end()
End of vectors container.
Definition system.h:2517
bool & project_solution_on_reinit(void)
Tells the System whether or not to project the solution vector onto new grids when the system is rein...
Definition system.h:884
bool vector_preservation(std::string_view vec_name) const
Definition system.C:1135

References _system, libMesh::System::project_solution_on_reinit(), libMesh::System::solution, stored_vecs, libMesh::System::vector_preservation(), libMesh::System::vectors_begin(), and libMesh::System::vectors_end().

Referenced by rewrite_stored_solution(), store_initial_solution(), and store_primal_solution().

Member Data Documentation

◆ _system

DifferentiableSystem& libMesh::MemoryHistoryData::_system
private

Definition at line 39 of file memory_history_data.h.

Referenced by retrieve_vectors(), store_primal_solution(), and store_vectors().

◆ deltat_at

Real libMesh::HistoryData::deltat_at
protectedinherited

◆ previously_stored

bool libMesh::HistoryData::previously_stored
protectedinherited

◆ stored_vec

stored_vecs_iterator libMesh::MemoryHistoryData::stored_vec
private

Definition at line 47 of file memory_history_data.h.

◆ stored_vecs

map_type libMesh::MemoryHistoryData::stored_vecs
private

Definition at line 46 of file memory_history_data.h.

Referenced by retrieve_vectors(), and store_vectors().

◆ time_stamp

unsigned int libMesh::HistoryData::time_stamp
protectedinherited

The documentation for this class was generated from the following files: