preprocessor: make modifications to osr_params and osr_params_bounds output. #948
parent
18328210b2
commit
a4045ae2da
|
@ -1033,8 +1033,9 @@ ObservationTrendsStatement::writeOutput(ostream &output, const string &basename,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OsrParamsStatement::OsrParamsStatement(const SymbolList &symbol_list_arg) :
|
OsrParamsStatement::OsrParamsStatement(const SymbolList &symbol_list_arg, const SymbolTable &symbol_table_arg) :
|
||||||
symbol_list(symbol_list_arg)
|
symbol_list(symbol_list_arg),
|
||||||
|
symbol_table(symbol_table_arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1047,7 +1048,13 @@ OsrParamsStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolid
|
||||||
void
|
void
|
||||||
OsrParamsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
|
OsrParamsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
|
||||||
{
|
{
|
||||||
symbol_list.writeOutput("osr_params_", output);
|
symbol_list.writeOutput("M_.osr.param_names", output);
|
||||||
|
output << "M_.osr.param_names = cellstr(M_.osr.param_names);" << endl
|
||||||
|
<< "M_.osr.param_indices = zeros(length(M_.osr.param_names), 1);" << endl;
|
||||||
|
int i = 0;
|
||||||
|
vector<string> symbols = symbol_list.get_symbols();
|
||||||
|
for (vector<string>::const_iterator it = symbols.begin(); it != symbols.end(); it++)
|
||||||
|
output << "M_.osr.param_indices(" << ++i <<") = " << symbol_table.getTypeSpecificID(*it) + 1 << ";" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
OsrStatement::OsrStatement(const SymbolList &symbol_list_arg,
|
OsrStatement::OsrStatement(const SymbolList &symbol_list_arg,
|
||||||
|
@ -1057,27 +1064,31 @@ OsrStatement::OsrStatement(const SymbolList &symbol_list_arg,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
OsrParamsBoundsStatement::OsrParamsBoundsStatement(const vector<OsrParams> &osr_params_list_arg,
|
OsrParamsBoundsStatement::OsrParamsBoundsStatement(const vector<OsrParams> &osr_params_list_arg) :
|
||||||
const SymbolTable &symbol_table_arg) :
|
osr_params_list(osr_params_list_arg)
|
||||||
osr_params_list(osr_params_list_arg),
|
|
||||||
symbol_table(symbol_table_arg)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
OsrParamsBoundsStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings)
|
||||||
|
{
|
||||||
|
if (!mod_file_struct.osr_params_present)
|
||||||
|
{
|
||||||
|
cerr << "ERROR: you must have an osr_params statement before the osr_params_bounds block." << endl;
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
OsrParamsBoundsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
|
OsrParamsBoundsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
|
||||||
{
|
{
|
||||||
int nbnds = osr_params_list.size();
|
|
||||||
output << "M_.osr.param_names = cell(" << nbnds << ", 1);" << endl
|
output << "M_.osr.param_bounds = [-inf(length(M_.osr.param_names), 1), inf(length(M_.osr.param_names), 1)];" << endl;
|
||||||
<< "M_.osr.param_indices = zeros(" << nbnds << ", 1);" << endl
|
|
||||||
<< "M_.osr.bounds = zeros(" << nbnds << ", 2);" << endl;
|
|
||||||
int i = 1;
|
|
||||||
for (vector<OsrParams>::const_iterator it = osr_params_list.begin();
|
for (vector<OsrParams>::const_iterator it = osr_params_list.begin();
|
||||||
it != osr_params_list.end(); it++, i++)
|
it != osr_params_list.end(); it++)
|
||||||
{
|
{
|
||||||
output << "M_.osr.param_names{" << i << "} = '" << it->name << "';" << endl
|
output << "M_.osr.param_bounds(strcmp(M_.osr.param_names, '" << it->name << "'), :) = [";
|
||||||
<< "M_.osr.param_indices(" << i <<") = " << symbol_table.getTypeSpecificID(it->name) + 1 << ";" << endl
|
|
||||||
<< "M_.osr.bounds(" << i << ", :) = [";
|
|
||||||
it->low_bound->writeOutput(output);
|
it->low_bound->writeOutput(output);
|
||||||
output << ", ";
|
output << ", ";
|
||||||
it->up_bound->writeOutput(output);
|
it->up_bound->writeOutput(output);
|
||||||
|
|
|
@ -249,8 +249,9 @@ class OsrParamsStatement : public Statement
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
const SymbolList symbol_list;
|
const SymbolList symbol_list;
|
||||||
|
const SymbolTable &symbol_table;
|
||||||
public:
|
public:
|
||||||
OsrParamsStatement(const SymbolList &symbol_list_arg);
|
OsrParamsStatement(const SymbolList &symbol_list_arg, const SymbolTable &symbol_table_arg);
|
||||||
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
|
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
|
||||||
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
|
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
|
||||||
};
|
};
|
||||||
|
@ -287,10 +288,9 @@ class OsrParamsBoundsStatement : public Statement
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
const vector<OsrParams> osr_params_list;
|
const vector<OsrParams> osr_params_list;
|
||||||
const SymbolTable &symbol_table;
|
|
||||||
public:
|
public:
|
||||||
OsrParamsBoundsStatement(const vector<OsrParams> &osr_params_list_arg,
|
OsrParamsBoundsStatement(const vector<OsrParams> &osr_params_list_arg);
|
||||||
const SymbolTable &symbol_table_arg);
|
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
|
||||||
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
|
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1299,7 +1299,7 @@ ParsingDriver::add_osr_params_element()
|
||||||
void
|
void
|
||||||
ParsingDriver::osr_params_bounds()
|
ParsingDriver::osr_params_bounds()
|
||||||
{
|
{
|
||||||
mod_file->addStatement(new OsrParamsBoundsStatement(osr_params_list, mod_file->symbol_table));
|
mod_file->addStatement(new OsrParamsBoundsStatement(osr_params_list));
|
||||||
osr_params_list.clear();
|
osr_params_list.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1773,7 +1773,7 @@ ParsingDriver::optim_weights()
|
||||||
void
|
void
|
||||||
ParsingDriver::set_osr_params()
|
ParsingDriver::set_osr_params()
|
||||||
{
|
{
|
||||||
mod_file->addStatement(new OsrParamsStatement(symbol_list));
|
mod_file->addStatement(new OsrParamsStatement(symbol_list, mod_file->symbol_table));
|
||||||
symbol_list.clear();
|
symbol_list.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue