195 {
196 ::CPMDParams::Builder params = msg.initRoot<::CPMDParams>();
198 const auto words = read_params_file(opt.
params_path);
199 ::capnp::FlatArrayMessageReader reader(
200 kj::arrayPtr(words.data(), words.size()));
201 msg.setRoot(reader.getRoot<::CPMDParams>());
202 params = msg.getRoot<::CPMDParams>();
203 } else {
206 params.setCharge(opt.
charge);
208 if (!opt.
title.empty())
209 params.setTitle(opt.
title);
211 params.setMemoryMb(
static_cast<uint32_t
>(opt.
memory_mb));
212 }
223
225 if (block.empty()) {
226 if (const char *env = std::getenv("RGPOT_CPMD_INPUT_BLOCK"))
227 block = env;
228 }
229 if (!block.empty()) {
230 std::vector<std::string> kept;
231 {
232 auto existing = params.getInputBlocks();
233 kept.reserve(existing.size());
234 for (auto text : existing)
235 kept.emplace_back(text.cStr());
236 }
237 auto blocks = params.initInputBlocks(kept.size() + 1);
238 for (std::size_t i = 0; i < kept.size(); ++i)
239 blocks.set(i, kept[i]);
240 blocks.set(kept.size(), block);
241 }
242 return params;
243}
std::string engine_library
std::string permanent_dir