Skip to content

Commit

Permalink
WIP: Get test case working
Browse files Browse the repository at this point in the history
  • Loading branch information
psakievich committed Jul 23, 2023
1 parent 85de5ea commit 1525238
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 18 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
.DS_Store
spack*
compile_commands.json
.cache
38 changes: 24 additions & 14 deletions app/exawind/exawind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ int main(int argc, char** argv)
#endif
std::ofstream out;

const auto nalu_node = node["nalu_wind_inp"];
YAML::Node nalu_node = node["nalu_wind_inp"];
// make sure it is a list for now
assert(nalu_node.IsSequence);
assert(nalu_node.IsSequence());
const int num_nwsolvers = nalu_node.size();
if (num_nwind_ranks < num_nwsolvers) {
throw std::runtime_error(
Expand Down Expand Up @@ -184,28 +184,29 @@ int main(int argc, char** argv)
? node["nonlinear_iterations"].as<int>()
: 1;

const auto yaml_replace_all = node["nalu_replace_all"];
const YAML::Node yaml_replace_all = node["nalu_replace_all"];
for (int i = 0; i < num_nwsolvers; i++) {
if (nalu_comms.at(i) != MPI_COMM_NULL) {
YAML::Node yaml_replace_instance;
std::string nalu_inpfile, logfile;
if (nalu_node[i].IsMap()) {
yaml_replace_instance = nalu_node["replace"];
nalu_inpfile = nalu_node["input_file"].as<std::string>();
YAML::Node this_instance = nalu_node[i];
if (this_instance.IsMap()) {
yaml_replace_instance = this_instance["replace"];
nalu_inpfile = this_instance["base_input_file"].as<std::string>();
// deal with the logfile name
if (nalu_node["logfile"]) {
logfile = nalu_node["logfile"].as<std::string>();
if (this_instance["logfile"]) {
logfile = this_instance["logfile"].as<std::string>();
} else {
logfile = exawind::NaluWind::logfile_from_input_file_name(
nalu_inpfile, i);
logfile = exawind::NaluWind::change_file_name_suffix(
nalu_inpfile, ".log", i);
}
} else {
nalu_inpfile = nalu_node[i].as<std::string>();
logfile = exawind::NaluWind::logfile_from_input_file_name(
nalu_inpfile);
nalu_inpfile = this_instance.as<std::string>();
logfile = exawind::NaluWind::change_file_name_suffix(
nalu_inpfile, ".log");
}

auto nalu_yaml = YAML::Load(nalu_inpfile);
YAML::Node nalu_yaml = YAML::LoadFile(nalu_inpfile);
// replace in order so instance can overwrite all
if (yaml_replace_all) {
YEDIT::find_and_replace(nalu_yaml, yaml_replace_all);
Expand All @@ -214,6 +215,15 @@ int main(int argc, char** argv)
YEDIT::find_and_replace(nalu_yaml, yaml_replace_instance);
}

if (nalu_node["write_final_yaml_to_disk"]) {
auto new_ifile_name =
exawind::NaluWind::change_file_name_suffix(
logfile, ".yaml");
std::ofstream fout(new_ifile_name);
fout << nalu_yaml;
fout.close();
}

sim.register_solver<exawind::NaluWind>(
i + 1, nalu_comms.at(i), nalu_yaml, logfile, nalu_vars);
}
Expand Down
7 changes: 3 additions & 4 deletions src/NaluWind.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,15 @@ class NaluWind : public ExawindSolver
static void initialize();
static void finalize();
static std::string
logfile_from_input_file_name(std::string inpfile, int index = -1)
change_file_name_suffix(std::string inpfile, std::string suffix, int index = -1)
{
int extloc = inpfile.rfind(".");
std::string logfile = inpfile;
std::string tail = ".log";
if (index >= 0) {
tail = "_" + std::to_string(index) + tail;
suffix = "_" + std::to_string(index) + suffix;
}
if (extloc != std::string::npos) {
logfile = inpfile.substr(0, extloc) + tail;
logfile = inpfile.substr(0, extloc) + suffix;
}
return logfile;
}
Expand Down
1 change: 1 addition & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@ add_test_r(nalu-nalu-cylinder)
add_test_r(amr-nalu-cylinder)
add_test_r(nalu-nalu-cylinder-motion)
add_test_r(amr-nalu-cylinder-motion)
add_test_r(hybrid-multi-cylinder)

0 comments on commit 1525238

Please sign in to comment.