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