Bugfix: M_.sigma_e_is_diagonal could be wrong if there were several shocks blocks.
parent
755b572548
commit
df0db38b3c
|
@ -594,6 +594,9 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all, bool no_log, b
|
||||||
mOutputFile << "M_.H = 0;" << endl
|
mOutputFile << "M_.H = 0;" << endl
|
||||||
<< "M_.Correlation_matrix_ME = 1;" << 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
|
// Initialize M_.det_shocks
|
||||||
mOutputFile << "M_.det_shocks = [];" << endl;
|
mOutputFile << "M_.det_shocks = [];" << endl;
|
||||||
|
|
||||||
|
|
|
@ -89,9 +89,14 @@ ShocksStatement::writeOutput(ostream &output, const string &basename) const
|
||||||
writeDetShocks(output);
|
writeDetShocks(output);
|
||||||
writeVarAndStdShocks(output);
|
writeVarAndStdShocks(output);
|
||||||
writeCovarAndCorrShocks(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)
|
if (covar_shocks.size()+corr_shocks.size() > 0)
|
||||||
output << "M_.sigma_e_is_diagonal = 0;" << endl;
|
output << "M_.sigma_e_is_diagonal = 0;" << endl;
|
||||||
else
|
else if (overwrite)
|
||||||
output << "M_.sigma_e_is_diagonal = 1;" << endl;
|
output << "M_.sigma_e_is_diagonal = 1;" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue