Streamline some function names

master
Sébastien Villemot 2022-07-12 17:04:41 +02:00
parent a541d23055
commit 9e6c01f132
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
5 changed files with 38 additions and 45 deletions

View File

@ -1036,21 +1036,16 @@ DynamicModel::writeDynamicMFile(const string &basename) const
ostringstream init_output, end_output; ostringstream init_output, end_output;
init_output << "residual = zeros(" << equations.size() << ", 1);"; init_output << "residual = zeros(" << equations.size() << ", 1);";
writeDynamicModelHelper(basename, "dynamic_resid", "residual", writeDynamicMFileHelper(basename, "dynamic_resid", "residual", "dynamic_resid_tt",
"dynamic_resid_tt",
temporary_terms_mlv.size() + temporary_terms_derivatives[0].size(), temporary_terms_mlv.size() + temporary_terms_derivatives[0].size(),
"", init_output, end_output, "", init_output, end_output, d_output[0], tt_output[0]);
d_output[0], tt_output[0]);
init_output.str(""); init_output.str("");
init_output << "g1 = zeros(" << equations.size() << ", " << getJacobianColsNbr() << ");"; init_output << "g1 = zeros(" << equations.size() << ", " << getJacobianColsNbr() << ");";
writeDynamicModelHelper(basename, "dynamic_g1", "g1", writeDynamicMFileHelper(basename, "dynamic_g1", "g1", "dynamic_g1_tt",
"dynamic_g1_tt",
temporary_terms_mlv.size() + temporary_terms_derivatives[0].size() + temporary_terms_derivatives[1].size(), temporary_terms_mlv.size() + temporary_terms_derivatives[0].size() + temporary_terms_derivatives[1].size(),
"dynamic_resid_tt", "dynamic_resid_tt", init_output, end_output, d_output[1], tt_output[1]);
init_output, end_output, writeDynamicMWrapperFunction(basename, "g1");
d_output[1], tt_output[1]);
writeWrapperFunctions(basename, "g1");
// For order ≥ 2 // For order ≥ 2
int ncols{getJacobianColsNbr()}; int ncols{getJacobianColsNbr()};
@ -1075,17 +1070,14 @@ DynamicModel::writeDynamicMFile(const string &basename) const
} }
else else
init_output << gname << " = sparse([],[],[]," << equations.size() << "," << ncols << ");"; init_output << gname << " = sparse([],[],[]," << equations.size() << "," << ncols << ");";
writeDynamicModelHelper(basename, "dynamic_" + gname, gname, writeDynamicMFileHelper(basename, "dynamic_" + gname, gname, "dynamic_" + gname + "_tt", ntt,
"dynamic_" + gname + "_tt", "dynamic_" + gprevname + "_tt", init_output, end_output,
ntt,
"dynamic_" + gprevname + "_tt",
init_output, end_output,
d_output[i], tt_output[i]); d_output[i], tt_output[i]);
if (i <= 3) if (i <= 3)
writeWrapperFunctions(basename, gname); writeDynamicMWrapperFunction(basename, gname);
} }
writeDynamicMatlabCompatLayer(basename); writeDynamicMCompatFile(basename);
} }
void void
@ -1655,7 +1647,7 @@ DynamicModel::writeDynamicBlockCFile(const string &basename) const
} }
void void
DynamicModel::writeWrapperFunctions(const string &basename, const string &ending) const DynamicModel::writeDynamicMWrapperFunction(const string &basename, const string &ending) const
{ {
string name; string name;
if (ending == "g1") if (ending == "g1")
@ -1706,12 +1698,11 @@ DynamicModel::writeWrapperFunctions(const string &basename, const string &ending
} }
void void
DynamicModel::writeDynamicModelHelper(const string &basename, DynamicModel::writeDynamicMFileHelper(const string &basename,
const string &name, const string &retvalname, const string &name, const string &retvalname,
const string &name_tt, size_t ttlen, const string &name_tt, size_t ttlen,
const string &previous_tt_name, const string &previous_tt_name,
const ostringstream &init_s, const ostringstream &init_s, const ostringstream &end_s,
const ostringstream &end_s,
const ostringstream &s, const ostringstream &s_tt) const const ostringstream &s, const ostringstream &s_tt) const
{ {
string filename = packageDir(basename) + "/" + name_tt + ".m"; string filename = packageDir(basename) + "/" + name_tt + ".m";
@ -1793,7 +1784,7 @@ DynamicModel::writeDynamicModelHelper(const string &basename,
} }
void void
DynamicModel::writeDynamicMatlabCompatLayer(const string &basename) const DynamicModel::writeDynamicMCompatFile(const string &basename) const
{ {
string filename = packageDir(basename) + "/dynamic.m"; string filename = packageDir(basename) + "/dynamic.m";
ofstream output{filename, ios::out | ios::binary}; ofstream output{filename, ios::out | ios::binary};
@ -1821,7 +1812,7 @@ DynamicModel::writeDynamicMatlabCompatLayer(const string &basename) const
} }
void void
DynamicModel::writeDynamicJacobianNonZeroElts(const string &basename) const DynamicModel::writeDynamicJacobianNonZeroEltsFile(const string &basename) const
{ {
vector<pair<int, int>> nzij_pred, nzij_current, nzij_fwrd; // pairs (tsid, equation) vector<pair<int, int>> nzij_pred, nzij_current, nzij_fwrd; // pairs (tsid, equation)
for (const auto &[indices, d1] : derivatives[1]) for (const auto &[indices, d1] : derivatives[1])

View File

@ -213,17 +213,18 @@ private:
//! Write reverse cross references //! Write reverse cross references
void writeRevXrefs(ostream &output, const map<pair<int, int>, set<int>> &xrefmap, const string &type) const; void writeRevXrefs(ostream &output, const map<pair<int, int>, set<int>> &xrefmap, const string &type) const;
void writeWrapperFunctions(const string &name, const string &ending) const; // Writes MATLAB/Octave wrapper function for computing residuals and derivatives at the same time
void writeDynamicModelHelper(const string &basename, void writeDynamicMWrapperFunction(const string &name, const string &ending) const;
// Helper for writing MATLAB/Octave functions for residuals/derivatives and their temporary terms
void writeDynamicMFileHelper(const string &basename,
const string &name, const string &retvalname, const string &name, const string &retvalname,
const string &name_tt, size_t ttlen, const string &name_tt, size_t ttlen,
const string &previous_tt_name, const string &previous_tt_name,
const ostringstream &init_s, const ostringstream &init_s, const ostringstream &end_s,
const ostringstream &end_s,
const ostringstream &s, const ostringstream &s_tt) const; const ostringstream &s, const ostringstream &s_tt) const;
//! Create a legacy *_dynamic.m file for Matlab/Octave not yet using the temporary terms array interface //! Create a legacy *_dynamic.m file for MATLAB/Octave not yet using the temporary terms array interface
void writeDynamicMatlabCompatLayer(const string &basename) const; void writeDynamicMCompatFile(const string &basename) const;
//! Internal helper for the copy constructor and assignment operator //! Internal helper for the copy constructor and assignment operator
/*! Copies all the structures that contain ExprNode*, by the converting the /*! Copies all the structures that contain ExprNode*, by the converting the
@ -399,7 +400,7 @@ public:
//! Writes file containing coordinates of non-zero elements in the Jacobian //! Writes file containing coordinates of non-zero elements in the Jacobian
/*! Used by the perfect_foresight_problem MEX */ /*! Used by the perfect_foresight_problem MEX */
void writeDynamicJacobianNonZeroElts(const string &basename) const; void writeDynamicJacobianNonZeroEltsFile(const string &basename) const;
//! Creates mapping for variables and equations they are present in //! Creates mapping for variables and equations they are present in
void createVariableMapping(); void createVariableMapping();

View File

@ -1079,7 +1079,7 @@ ModFile::writeMOutput(const string &basename, bool clear_all, bool clear_global,
dynamic_model.writeParamsDerivativesFile<false>(basename); dynamic_model.writeParamsDerivativesFile<false>(basename);
dynamic_model.writeDynamicJacobianNonZeroElts(basename); dynamic_model.writeDynamicJacobianNonZeroEltsFile(basename);
} }
// Create steady state file // Create steady state file

View File

@ -843,7 +843,7 @@ StaticModel::writeStaticMFile(const string &basename) const
end_output << "if ~isreal(residual)" << endl end_output << "if ~isreal(residual)" << endl
<< " residual = real(residual)+imag(residual).^2;" << endl << " residual = real(residual)+imag(residual).^2;" << endl
<< "end"; << "end";
writeStaticModelHelper(basename, "static_resid", "residual", "static_resid_tt", writeStaticMFileHelper(basename, "static_resid", "residual", "static_resid_tt",
temporary_terms_mlv.size() + temporary_terms_derivatives[0].size(), temporary_terms_mlv.size() + temporary_terms_derivatives[0].size(),
"", init_output, end_output, "", init_output, end_output,
d_output[0], tt_output[0]); d_output[0], tt_output[0]);
@ -854,12 +854,12 @@ StaticModel::writeStaticMFile(const string &basename) const
end_output << "if ~isreal(g1)" << endl end_output << "if ~isreal(g1)" << endl
<< " g1 = real(g1)+2*imag(g1);" << endl << " g1 = real(g1)+2*imag(g1);" << endl
<< "end"; << "end";
writeStaticModelHelper(basename, "static_g1", "g1", "static_g1_tt", writeStaticMFileHelper(basename, "static_g1", "g1", "static_g1_tt",
temporary_terms_mlv.size() + temporary_terms_derivatives[0].size() + temporary_terms_derivatives[1].size(), temporary_terms_mlv.size() + temporary_terms_derivatives[0].size() + temporary_terms_derivatives[1].size(),
"static_resid_tt", "static_resid_tt",
init_output, end_output, init_output, end_output,
d_output[1], tt_output[1]); d_output[1], tt_output[1]);
writeWrapperFunctions(basename, "g1"); writeStaticMWrapperFunction(basename, "g1");
// For order ≥ 2 // For order ≥ 2
int ncols{symbol_table.endo_nbr()}; int ncols{symbol_table.endo_nbr()};
@ -884,21 +884,21 @@ StaticModel::writeStaticMFile(const string &basename) const
} }
else else
init_output << gname << " = sparse([],[],[]," << equations.size() << "," << ncols << ");"; init_output << gname << " = sparse([],[],[]," << equations.size() << "," << ncols << ");";
writeStaticModelHelper(basename, "static_" + gname, gname, writeStaticMFileHelper(basename, "static_" + gname, gname,
"static_" + gname + "_tt", "static_" + gname + "_tt",
ntt, ntt,
"static_" + gprevname + "_tt", "static_" + gprevname + "_tt",
init_output, end_output, init_output, end_output,
d_output[i], tt_output[i]); d_output[i], tt_output[i]);
if (i <= 3) if (i <= 3)
writeWrapperFunctions(basename, gname); writeStaticMWrapperFunction(basename, gname);
} }
writeStaticMatlabCompatLayer(basename); writeStaticMCompatFile(basename);
} }
void void
StaticModel::writeWrapperFunctions(const string &basename, const string &ending) const StaticModel::writeStaticMWrapperFunction(const string &basename, const string &ending) const
{ {
string name; string name;
if (ending == "g1") if (ending == "g1")
@ -949,7 +949,7 @@ StaticModel::writeWrapperFunctions(const string &basename, const string &ending)
} }
void void
StaticModel::writeStaticModelHelper(const string &basename, StaticModel::writeStaticMFileHelper(const string &basename,
const string &name, const string &retvalname, const string &name, const string &retvalname,
const string &name_tt, size_t ttlen, const string &name_tt, size_t ttlen,
const string &previous_tt_name, const string &previous_tt_name,
@ -1026,7 +1026,7 @@ StaticModel::writeStaticModelHelper(const string &basename,
} }
void void
StaticModel::writeStaticMatlabCompatLayer(const string &basename) const StaticModel::writeStaticMCompatFile(const string &basename) const
{ {
string filename = packageDir(basename) + "/static.m"; string filename = packageDir(basename) + "/static.m";
ofstream output{filename, ios::out | ios::binary}; ofstream output{filename, ios::out | ios::binary};

View File

@ -100,17 +100,18 @@ private:
//! Computes chain rule derivatives of the Jacobian w.r. to endogenous variables //! Computes chain rule derivatives of the Jacobian w.r. to endogenous variables
void computeChainRuleJacobian(); void computeChainRuleJacobian();
//! Helper functions for writeStaticModel // Helper for writing MATLAB/Octave functions for residuals/derivatives and their temporary terms
void writeStaticModelHelper(const string &basename, void writeStaticMFileHelper(const string &basename,
const string &name, const string &retvalname, const string &name, const string &retvalname,
const string &name_tt, size_t ttlen, const string &name_tt, size_t ttlen,
const string &previous_tt_name, const string &previous_tt_name,
const ostringstream &init_s, const ostringstream &end_s, const ostringstream &init_s, const ostringstream &end_s,
const ostringstream &s, const ostringstream &s_tt) const; const ostringstream &s, const ostringstream &s_tt) const;
void writeWrapperFunctions(const string &basename, const string &ending) const; // Writes MATLAB/Octave wrapper function for computing residuals and derivatives at the same time
void writeStaticMWrapperFunction(const string &basename, const string &ending) const;
//! Create a legacy *_static.m file for Matlab/Octave not yet using the temporary terms array interface //! Create a legacy *_static.m file for MATLAB/Octave not yet using the temporary terms array interface
void writeStaticMatlabCompatLayer(const string &name) const; void writeStaticMCompatFile(const string &name) const;
public: public:
StaticModel(SymbolTable &symbol_table_arg, StaticModel(SymbolTable &symbol_table_arg,