Bugfix: M_.sigma_e_is_diagonal could be wrong if there were several shocks blocks.
parent
27c2396a81
commit
75dbe4afde
|
@ -594,6 +594,9 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all, bool no_log, b
|
|||
mOutputFile << "M_.H = 0;" << endl
|
||||
<< "M_.Correlation_matrix_ME = 1;" << endl;
|
||||
|
||||
// May be later modified by a shocks block
|
||||
mOutputFile << "M_.sigma_e_is_diagonal = 1;" << endl;
|
||||
|
||||
// Initialize M_.det_shocks
|
||||
mOutputFile << "M_.det_shocks = [];" << endl;
|
||||
|
||||
|
|
|
@ -89,9 +89,14 @@ ShocksStatement::writeOutput(ostream &output, const string &basename) const
|
|||
writeDetShocks(output);
|
||||
writeVarAndStdShocks(output);
|
||||
writeCovarAndCorrShocks(output);
|
||||
|
||||
/* M_.sigma_e_is_diagonal is initialized to 1 by ModFile.cc.
|
||||
If there are no off-diagonal elements, and we are not in overwrite mode,
|
||||
then we don't reset it to 1, since there might be previous shocks blocks
|
||||
with off-diagonal elements. */
|
||||
if (covar_shocks.size()+corr_shocks.size() > 0)
|
||||
output << "M_.sigma_e_is_diagonal = 0;" << endl;
|
||||
else
|
||||
else if (overwrite)
|
||||
output << "M_.sigma_e_is_diagonal = 1;" << endl;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue