Read the Cap'n'Proto buffer from disk.
139 LOG_SCOPE(
"read_from_file()",
"TransientRBEvaluationDeserialization");
141 int fd = open(path.c_str(), O_RDONLY);
142 libmesh_error_msg_if(!fd,
"Couldn't open the buffer file: " + path);
145 capnp::ReaderOptions reader_options;
146 reader_options.traversalLimitInWords = std::numeric_limits<uint64_t>::max();
148 std::unique_ptr<capnp::InputStreamMessageReader> message;
152 message = std::make_unique<capnp::PackedFdMessageReader>(fd, reader_options);
154 message = std::make_unique<capnp::StreamFdMessageReader>(fd, reader_options);
158 libmesh_error_msg(
"Failed to open capnp buffer");
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();
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();
175 trans_rb_eval_reader,
176 read_error_bound_data);
178 int error = close(fd);
179 libmesh_error_msg_if(error,
"Error closing a read-only file descriptor: " + path);
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.