libMesh
Public Member Functions | Private Attributes | List of all members
libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization Class Reference

This class de-serializes a TransientRBEvaluation object using the Cap'n Proto library. More...

#include <rb_data_deserialization.h>

Public Member Functions

 TransientRBEvaluationDeserialization (TransientRBEvaluation &trans_rb_eval)
 Initialize a new buffer using the structure from the Cap'n'Proto schema described in rb_data.capnp. More...
 
 TransientRBEvaluationDeserialization (TransientRBEvaluationDeserialization &&)=default
 Special functions. More...
 
 TransientRBEvaluationDeserialization (const TransientRBEvaluationDeserialization &)=default
 
TransientRBEvaluationDeserializationoperator= (const TransientRBEvaluationDeserialization &)=delete
 
TransientRBEvaluationDeserializationoperator= (TransientRBEvaluationDeserialization &&)=delete
 
virtual ~TransientRBEvaluationDeserialization ()
 
void read_from_file (const std::string &path, bool read_error_bound_data, bool use_packing=false)
 Read the Cap'n'Proto buffer from disk. More...
 

Private Attributes

TransientRBEvaluation_trans_rb_eval
 The TransientRBEvaluation object that we will read into. More...
 

Detailed Description

This class de-serializes a TransientRBEvaluation object using the Cap'n Proto library.

Definition at line 105 of file rb_data_deserialization.h.

Constructor & Destructor Documentation

◆ TransientRBEvaluationDeserialization() [1/3]

libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::TransientRBEvaluationDeserialization ( TransientRBEvaluation trans_rb_eval)

Initialize a new buffer using the structure from the Cap'n'Proto schema described in rb_data.capnp.

Definition at line 129 of file rb_data_deserialization.C.

129  :
130  _trans_rb_eval(trans_rb_eval)
131 {}
TransientRBEvaluation & _trans_rb_eval
The TransientRBEvaluation object that we will read into.

◆ TransientRBEvaluationDeserialization() [2/3]

libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::TransientRBEvaluationDeserialization ( TransientRBEvaluationDeserialization &&  )
default

Special functions.

  • This class contains a reference, so it can't be default copy/move-assigned.
  • The destructor is defaulted out of line.

◆ TransientRBEvaluationDeserialization() [3/3]

libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::TransientRBEvaluationDeserialization ( const TransientRBEvaluationDeserialization )
default

◆ ~TransientRBEvaluationDeserialization()

libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::~TransientRBEvaluationDeserialization ( )
virtualdefault

Member Function Documentation

◆ operator=() [1/2]

TransientRBEvaluationDeserialization& libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::operator= ( const TransientRBEvaluationDeserialization )
delete

◆ operator=() [2/2]

TransientRBEvaluationDeserialization& libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::operator= ( TransientRBEvaluationDeserialization &&  )
delete

◆ read_from_file()

void libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::read_from_file ( const std::string &  path,
bool  read_error_bound_data,
bool  use_packing = false 
)

Read the Cap'n'Proto buffer from disk.

If use_packing is true, the file is read using the "packed" scheme, which can reduce the filesize on disk.

Definition at line 135 of file rb_data_deserialization.C.

References _trans_rb_eval, and libMesh::RBDataDeserialization::load_transient_rb_evaluation_data().

Referenced by main().

138 {
139  LOG_SCOPE("read_from_file()", "TransientRBEvaluationDeserialization");
140 
141  int fd = open(path.c_str(), O_RDONLY);
142  libmesh_error_msg_if(!fd, "Couldn't open the buffer file: " + path);
143 
144  // Turn off the limit to the amount of data we can read in
145  capnp::ReaderOptions reader_options;
146  reader_options.traversalLimitInWords = std::numeric_limits<uint64_t>::max();
147 
148  std::unique_ptr<capnp::InputStreamMessageReader> message;
149  libmesh_try
150  {
151  if(use_packing)
152  message = std::make_unique<capnp::PackedFdMessageReader>(fd, reader_options);
153  else
154  message = std::make_unique<capnp::StreamFdMessageReader>(fd, reader_options);
155  }
156  libmesh_catch(...)
157  {
158  libmesh_error_msg("Failed to open capnp buffer");
159  }
160 
161 #ifndef LIBMESH_USE_COMPLEX_NUMBERS
162  RBData::TransientRBEvaluationReal::Reader trans_rb_eval_reader =
163  message->getRoot<RBData::TransientRBEvaluationReal>();
164  RBData::RBEvaluationReal::Reader rb_eval_reader =
165  trans_rb_eval_reader.getRbEvaluation();
166 #else
167  RBData::TransientRBEvaluationComplex::Reader trans_rb_eval_reader =
168  message->getRoot<RBData::TransientRBEvaluationComplex>();
169  RBData::RBEvaluationComplex::Reader rb_eval_reader =
170  trans_rb_eval_reader.getRbEvaluation();
171 #endif
172 
174  rb_eval_reader,
175  trans_rb_eval_reader,
176  read_error_bound_data);
177 
178  int error = close(fd);
179  libmesh_error_msg_if(error, "Error closing a read-only file descriptor: " + path);
180 }
void load_transient_rb_evaluation_data(TransientRBEvaluation &trans_rb_eval, RBEvaluationReaderNumber &rb_evaluation_reader, TransRBEvaluationReaderNumber &trans_rb_eval_reader, bool read_error_bound_data)
Load an RB evaluation from a corresponding reader structure in the buffer.
TransientRBEvaluation & _trans_rb_eval
The TransientRBEvaluation object that we will read into.

Member Data Documentation

◆ _trans_rb_eval

TransientRBEvaluation& libMesh::RBDataDeserialization::TransientRBEvaluationDeserialization::_trans_rb_eval
private

The TransientRBEvaluation object that we will read into.

Definition at line 141 of file rb_data_deserialization.h.

Referenced by read_from_file().


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