OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
PolynomialCoefficient.cpp
Go to the documentation of this file.
1 namespace interpolation {
2 
3 std::ostream& operator << (std::ostream& out,
4  const PolynomialCoefficient& coeff) {
5  std::vector<int> in_var = coeff.InVariables();
6  for (size_t i = 0; i < coeff.InVariables().size(); ++i)
7  out << in_var[i] << " ";
8  out << "| " << coeff.OutVariable();
9  out << " | " << coeff.Coefficient();
10  return out;
11 }
12 
13 void PolynomialCoefficient::SpaceTransform(std::vector<int> space_in,
14  std::vector<int> space_out) {
15  std::map<int, int> mapping; //probably optimise this
16  for (unsigned int i = 0; i < space_out.size(); i++)
17  for (unsigned int j = 0; j < space_in.size(); j++)
18  if (space_out[i] == space_in[j])
19  mapping[j] = i; //mapping[space_in_index] returns space_out_index
20 
21  std::vector<int> in_variables(_inVarByVec.size());
22  for (unsigned int con=0; con<in_variables.size(); con++)
23  {
24  if (mapping.find(in_variables[con]) != mapping.end())
25  in_variables[con] = mapping[in_variables[con]];
26  else
28  "PolynomialVector::PolynomialCoefficient::SpaceTransform",
29  "Input variable not found in space transform"
30  ));
31  }
32 
33  if(mapping.find(_outVar) != mapping.end())
34  _outVar = mapping[_outVar];
35  else
37  "PolynomialVector::PolynomialCoefficient::SpaceTransform",
38  "Output variable not found in space transform"
39  ));
40  _inVarByVec = in_variables;
41 }
42 }
43 
void SpaceTransform(std::vector< int > spaceIn, std::vector< int > spaceOut)
PolynomialCoefficient represents a coefficient in a multi-dimensional polynomial. ...
std::vector< int > InVariables() const
std::ostream & operator<<(std::ostream &out, const Mesh::Iterator &it)
Definition: Mesh.cpp:33