preCICE v3.2.0
Loading...
Searching...
No Matches
Sample.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include <Eigen/Core>
5
6#include "utils/assertion.hpp"
7
8namespace precice::time {
9
15struct Sample {
17 explicit Sample(int dims) noexcept
18 : dataDims(dims) {}
19
21 Sample(int dims, int dataCount)
22 : dataDims(dims), values(dims * dataCount) {}
23
25 Sample(int dataDims, int nVertices, int meshDims)
26 : dataDims(dataDims), values(nVertices * dataDims), gradients(meshDims, nVertices * dataDims)
27 {
28 }
29
31 Sample(int dims, Eigen::VectorXd inValues)
32 : dataDims(dims), values(std::move(inValues))
33 {
35 }
36
38 Sample(int dims, Eigen::VectorXd inValues, Eigen::MatrixXd inGradients)
39 : dataDims(dims), values(std::move(inValues)), gradients(std::move(inGradients))
40 {
42 PRECICE_ASSERT(gradients.size() == 0 || gradients.cols() == values.size(), gradients.size(), gradients.cols(), values.size());
43 }
44
45 Sample(const Sample &) = default;
46 Sample(Sample &&) = default;
47
48 Sample &operator=(const Sample &) = default;
49 Sample &operator=(Sample &&) = default;
50
53 {
54 values.setZero();
55 gradients.setZero();
56 return *this;
57 }
58
61
64 Eigen::VectorXd values;
65
67 Eigen::MatrixXd gradients;
68};
69
70} // namespace precice::time
#define PRECICE_ASSERT(...)
Definition assertion.hpp:85
contains the time interpolation logic.
Definition Sample.hpp:8
STL namespace.
Sample(int dims) noexcept
Constructs an empty Sample of a given data dimensionality.
Definition Sample.hpp:17
Sample(int dims, Eigen::VectorXd inValues, Eigen::MatrixXd inGradients)
Constructs a Sample of given data dimensionality, data values, and data gradients.
Definition Sample.hpp:38
Eigen::MatrixXd gradients
The gradients of the data. Use gradients.col(d*i+k) to get the gradient of vertex i,...
Definition Sample.hpp:67
Sample(int dims, int dataCount)
Constructs a Sample of given data dimensionality and size without gradients.
Definition Sample.hpp:21
Sample & operator=(Sample &&)=default
Sample & setZero()
Sets values and gradients to zero.
Definition Sample.hpp:52
Sample(int dataDims, int nVertices, int meshDims)
Constructs a Sample of given data and mesh dimensionality, and size with gradients.
Definition Sample.hpp:25
int dataDims
The dimensionality of the data.
Definition Sample.hpp:60
Sample(const Sample &)=default
Eigen::VectorXd values
Definition Sample.hpp:64
Sample(int dims, Eigen::VectorXd inValues)
Constructs a Sample of given data dimensionality and data values.
Definition Sample.hpp:31
Sample(Sample &&)=default
Sample & operator=(const Sample &)=default