123 SharedColumnCheck scCheck;
130 for (GodleyIterator g=begin; g!=end; ++g)
132 if (g.data().empty())
continue;
135 for (std::size_t col=1; col<g.data()[0].size(); ++col)
136 if (!
trimWS(g.data()[0][col]).empty())
137 scCheck.checkShared(g.valueId(
trimWS(g.data()[0][col])), g.assetClass(col));
139 for (std::size_t row=1; row<g.data().size(); ++row)
140 if (!g.initialConditionRow(row))
141 for (std::size_t col=1; col<g.data()[row].size(); ++col)
143 FlowCoef fvc(g.data()[row][col]);
144 auto svName=col<g.data()[0].size()?
trimWS(g.data()[0][col]):
"";
145 if (fvc.name.empty() || svName.empty())
continue;
146 fvc.name=g.valueId(fvc.name);
147 svName=g.valueId(svName);
149 auto fv=values.find(fvc.name);
150 auto sv=values.find(svName);
151 if (fv!=values.end() && sv!=values.end() &&
152 fv->second->idx()>=0 && sv->second->idx()>=0)
156 scCheck.updateColDefs(svName, fvc))
159 iidx.insert(sv->second->idx());
160 sidx<<=sv->second->idx();
161 fidx<<=fv->second->idx();
172 scCheck.checkSharedColDefs();
ecolab::array< int > fidx
ecolab::array< int > sidx
representation of matrix connecting flow variables to stock variables
bool compatibility
if compatibility is true, then consttrainst between Godley tables is not applied, and shared columns ...
std::string trimWS(const std::string &s)
ecolab::array< int > initIdx
index of stock variables that need to be zeroed at start of eval
ecolab::array< double > m