Write the Cap'n'Proto buffer to disk.
130{
131 LOG_SCOPE("write_to_file()", "TransientRBEvaluationSerialization");
132
134 {
135 capnp::MallocMessageBuilder message;
136
137#ifndef LIBMESH_USE_COMPLEX_NUMBERS
138 RBData::TransientRBEvaluationReal::Builder trans_rb_eval_builder =
139 message.initRoot<RBData::TransientRBEvaluationReal>();
140 RBData::RBEvaluationReal::Builder rb_eval_builder =
141 trans_rb_eval_builder.initRbEvaluation();
142#else
143 RBData::TransientRBEvaluationComplex::Builder trans_rb_eval_builder =
144 message.initRoot<RBData::TransientRBEvaluationComplex>();
145 RBData::RBEvaluationComplex::Builder rb_eval_builder =
146 trans_rb_eval_builder.initRbEvaluation();
147#endif
148
150 rb_eval_builder,
151 trans_rb_eval_builder);
152
153 int fd = open(path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0664);
154 libmesh_error_msg_if(!fd, "Error opening a write-only file descriptor to " + path);
155
156 if(use_packing)
157 capnp::writePackedMessageToFd(fd, message);
158 else
159 capnp::writeMessageToFd(fd, message);
160
161 int error = close(fd);
162 libmesh_error_msg_if(error, "Error closing a write-only file descriptor to " + path);
163 }
164}
processor_id_type rank() const
const Parallel::Communicator & comm() const
void add_transient_rb_evaluation_data_to_builder(TransientRBEvaluation &trans_rb_eval, RBEvaluationBuilderNumber &rb_eval_builder, TransRBEvaluationBuilderNumber &trans_rb_eval_builder)
Add data for a TransientRBEvaluation to the builder.