libMesh
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.

References libMesh::HistoryData::deltat_at.

37  { return deltat_at; }

◆ get_previously_stored()

bool libMesh::HistoryData::get_previously_stored ( )
inlineinherited

Definition at line 39 of file history_data.h.

References libMesh::HistoryData::previously_stored.

40  { return 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().

72  {
74  }

◆ retrieve_primal_solution()

void libMesh::MemoryHistoryData::retrieve_primal_solution ( )
overridevirtual

Implements libMesh::HistoryData.

Definition at line 66 of file memory_history_data.C.

References retrieve_vectors().

67  {
69  }

◆ retrieve_vectors()

void libMesh::MemoryHistoryData::retrieve_vectors ( )

Definition at line 101 of file memory_history_data.C.

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().

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:1593
libmesh_assert(ctx)
DifferentiableSystem & _system
const NumericVector< Number > & get_vector(std::string_view vec_name) const
Definition: system.C:943

◆ rewrite_stored_solution()

void libMesh::MemoryHistoryData::rewrite_stored_solution ( )
overridevirtual

Implements libMesh::HistoryData.

Definition at line 58 of file memory_history_data.C.

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

59  {
60  // We are rewriting.
62 
63  store_vectors();
64  }
libmesh_assert(ctx)

◆ set_deltat_at()

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

Definition at line 46 of file history_data.h.

References libMesh::HistoryData::deltat_at.

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

47  { deltat_at = deltat_at_val; }

◆ set_previously_stored()

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

Definition at line 49 of file history_data.h.

References libMesh::HistoryData::previously_stored.

50  { previously_stored = previously_stored_val; }

◆ set_time_stamp()

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

Definition at line 43 of file history_data.h.

References libMesh::HistoryData::time_stamp.

44  { time_stamp = time_stamp_val; }
unsigned int time_stamp
Definition: history_data.h:73

◆ 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.

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

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 
31  store_vectors();
32 
33  previously_stored = true;
34  }
unsigned int time_stamp
Definition: history_data.h:73
libmesh_assert(ctx)

◆ 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.

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.

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 
48  store_vectors();
49 
50  previously_stored = true;
51  }
unsigned int time_stamp
Definition: history_data.h:73
std::unique_ptr< TimeSolver > time_solver
A pointer to the solver object we&#39;re going to use.
Definition: diff_system.h:253
unsigned int get_time_stamp()
Definition: history_data.h:33
DifferentiableSystem & _system
void set_deltat_at(Real deltat_at_val)
Definition: history_data.h:46
map_type::iterator stored_data_iterator
Definition: history_data.h:55

◆ store_vectors()

void libMesh::MemoryHistoryData::store_vectors ( )

Definition at line 76 of file memory_history_data.C.

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().

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  }
std::map< std::string, std::unique_ptr< NumericVector< Number > >, std::less<> >::iterator vectors_iterator
Vector iterator typedefs.
Definition: system.h:757
vectors_iterator vectors_end()
End of vectors container.
Definition: system.h:2576
vectors_iterator vectors_begin()
Beginning of vectors container.
Definition: system.h:2564
std::unique_ptr< NumericVector< Number > > solution
Data structure to hold solution values.
Definition: system.h:1593
DifferentiableSystem & _system
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:838
bool vector_preservation(std::string_view vec_name) const
Definition: system.C:1148

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: