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

This class de-serializes an RBEvaluation object using the Cap'n Proto library. More...

#include <rb_data_deserialization.h>

Public Member Functions

 RBEvaluationDeserialization (RBEvaluation &rb_eval)
 Initialize a new buffer using the structure from the Cap'n'Proto schema described in rb_data.capnp. More...
 
 RBEvaluationDeserialization (RBEvaluationDeserialization &&)=default
 Special functions. More...
 
 RBEvaluationDeserialization (const RBEvaluationDeserialization &)=default
 
RBEvaluationDeserializationoperator= (const RBEvaluationDeserialization &)=delete
 
RBEvaluationDeserializationoperator= (RBEvaluationDeserialization &&)=delete
 
virtual ~RBEvaluationDeserialization ()
 
void read_from_file (const std::string &path, bool read_error_bound_data)
 Write the Cap'n'Proto buffer to disk. More...
 

Private Attributes

RBEvaluation_rb_eval
 The RBEvaluation object that we will read into. More...
 

Detailed Description

This class de-serializes an RBEvaluation object using the Cap'n Proto library.

Author
David Knezevic
Date
2015 Deserializes RBEvaluation objects using Cap'n Proto.

Definition at line 60 of file rb_data_deserialization.h.

Constructor & Destructor Documentation

◆ RBEvaluationDeserialization() [1/3]

libMesh::RBDataDeserialization::RBEvaluationDeserialization::RBEvaluationDeserialization ( RBEvaluation rb_eval)

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

Definition at line 74 of file rb_data_deserialization.C.

75  :
76  _rb_eval(rb_eval)
77 {}
RBEvaluation & _rb_eval
The RBEvaluation object that we will read into.

◆ RBEvaluationDeserialization() [2/3]

libMesh::RBDataDeserialization::RBEvaluationDeserialization::RBEvaluationDeserialization ( RBEvaluationDeserialization &&  )
default

Special functions.

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

◆ RBEvaluationDeserialization() [3/3]

libMesh::RBDataDeserialization::RBEvaluationDeserialization::RBEvaluationDeserialization ( const RBEvaluationDeserialization )
default

◆ ~RBEvaluationDeserialization()

libMesh::RBDataDeserialization::RBEvaluationDeserialization::~RBEvaluationDeserialization ( )
virtualdefault

Member Function Documentation

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ read_from_file()

void libMesh::RBDataDeserialization::RBEvaluationDeserialization::read_from_file ( const std::string &  path,
bool  read_error_bound_data 
)

Write the Cap'n'Proto buffer to disk.

Definition at line 81 of file rb_data_deserialization.C.

References _rb_eval, and libMesh::RBDataDeserialization::load_rb_evaluation_data().

Referenced by main().

83 {
84  LOG_SCOPE("read_from_file()", "RBEvaluationDeserialization");
85 
86  int fd = open(path.c_str(), O_RDONLY);
87  libmesh_error_msg_if(!fd, "Couldn't open the buffer file: " + path);
88 
89  // Turn off the limit to the amount of data we can read in
90  capnp::ReaderOptions reader_options;
91  reader_options.traversalLimitInWords = std::numeric_limits<uint64_t>::max();
92 
93  std::unique_ptr<capnp::StreamFdMessageReader> message;
94  libmesh_try
95  {
96  message = std::make_unique<capnp::StreamFdMessageReader>(fd, reader_options);
97  }
98  libmesh_catch(...)
99  {
100  libmesh_error_msg("Failed to open capnp buffer");
101  }
102 
103 #ifndef LIBMESH_USE_COMPLEX_NUMBERS
104  RBData::RBEvaluationReal::Reader rb_eval_reader =
105  message->getRoot<RBData::RBEvaluationReal>();
106 #else
107  RBData::RBEvaluationComplex::Reader rb_eval_reader =
108  message->getRoot<RBData::RBEvaluationComplex>();
109 #endif
110 
111  load_rb_evaluation_data(_rb_eval, rb_eval_reader, read_error_bound_data);
112 
113  int error = close(fd);
114  libmesh_error_msg_if(error, "Error closing a read-only file descriptor: " + path);
115 }
void load_rb_evaluation_data(RBEvaluation &rb_evaluation, RBEvaluationReaderNumber &rb_evaluation_reader, bool read_error_bound_data)
Load an RB evaluation from a corresponding reader structure in the buffer.
RBEvaluation & _rb_eval
The RBEvaluation object that we will read into.

Member Data Documentation

◆ _rb_eval

RBEvaluation& libMesh::RBDataDeserialization::RBEvaluationDeserialization::_rb_eval
private

The RBEvaluation object that we will read into.

Definition at line 92 of file rb_data_deserialization.h.

Referenced by read_from_file().


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