diff --git a/DynamicModel.cc b/DynamicModel.cc index a4c0e162..e2d28f79 100644 --- a/DynamicModel.cc +++ b/DynamicModel.cc @@ -3812,7 +3812,14 @@ DynamicModel::cloneDynamic(DynamicModel &dynamic_model) const // Convert equations for (size_t i = 0; i < equations.size(); i++) - dynamic_model.addEquation(equations[i]->cloneDynamic(dynamic_model), equations_lineno[i]); + { + vector > eq_tags; + for (vector > >::const_iterator it = equation_tags.begin(); + it != equation_tags.end(); ++it) + if (it->first == i) + eq_tags.push_back(it->second); + dynamic_model.addEquation(equations[i]->cloneDynamic(dynamic_model), equations_lineno[i], eq_tags); + } // Convert auxiliary equations for (deque::const_iterator it = aux_equations.begin(); @@ -5634,6 +5641,12 @@ DynamicModel::writeJsonXrefs(ostream &output) const output << "]}" << endl; } +void +DynamicModel::writeJsonOriginalModelOutput(ostream &output) const +{ + writeJsonModelEquations(output, false); +} + void DynamicModel::writeJsonComputingPassOutput(ostream &output, bool writeDetails) const { diff --git a/DynamicModel.hh b/DynamicModel.hh index fa7e68c4..961faa2b 100644 --- a/DynamicModel.hh +++ b/DynamicModel.hh @@ -244,6 +244,9 @@ public: //! Write JSON Output void writeJsonOutput(ostream &output) const; + //! Write JSON Output representation of original dynamic model + void writeJsonOriginalModelOutput(ostream &output) const; + //! Write JSON Output representation of dynamic model after computing pass void writeJsonComputingPassOutput(ostream &output, bool writeDetails) const; diff --git a/ModFile.cc b/ModFile.cc index 11e9bc54..b011a195 100644 --- a/ModFile.cc +++ b/ModFile.cc @@ -1394,6 +1394,11 @@ ModFile::writeJsonComputingPassOutput(const string &basename, JsonFileOutputType dynamic_model.writeJsonComputingPassOutput(dynamic_output, false); dynamic_output << "}" << endl; + ostringstream original_model_output; + original_model_output << "{"; + original_model.writeJsonOriginalModelOutput(original_model_output); + original_model_output << "}" << endl; + ostringstream tmp_out, static_paramsd_output, static_paramsd_detail_output; tmp_out << ""; static_paramsd_output << ""; @@ -1434,7 +1439,8 @@ ModFile::writeJsonComputingPassOutput(const string &basename, JsonFileOutputType if (json_output_mode == standardout) { - cout << static_output.str() << endl + cout << original_model_output.str() << endl + << static_output.str() << endl << dynamic_output.str() << endl; if (!static_paramsd_output.str().empty()) @@ -1463,10 +1469,12 @@ ModFile::writeJsonComputingPassOutput(const string &basename, JsonFileOutputType exit(EXIT_FAILURE); } - string fname_static, fname_dynamic; + string fname_original, fname_static, fname_dynamic; + fname_original = basename + "_original.json"; fname_static = basename + "_static.json"; fname_dynamic = basename + "_dynamic.json"; + writeJsonFileHelper(fname_original, original_model_output); writeJsonFileHelper(fname_static, static_output); writeJsonFileHelper(fname_dynamic, dynamic_output);