OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
PolynomialCoefficient.cpp
Go to the documentation of this file.
1namespace interpolation {
2
3std::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
13void 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
std::ostream & operator<<(std::ostream &out, const Mesh::Iterator &it)
Definition: Mesh.cpp:33
PolynomialCoefficient represents a coefficient in a multi-dimensional polynomial.
void SpaceTransform(std::vector< int > spaceIn, std::vector< int > spaceOut)
std::vector< int > InVariables() const