25 Eigen::VectorXd pointCoords,
34 _mesh->getDimensions());
41 for (
size_t i = 0; i <
_mesh->data().size(); i++) {
60 if (
_mesh->nVertices() > 0) {
61 auto match =
_mesh->index().findCellOrProjection(
_point, 4);
77 if (closestDistanceLocal < closestDistanceGlobal) {
78 closestDistanceGlobal = closestDistanceLocal;
79 closestRank = secondaryRank;
100 Eigen::VectorXd coords = Eigen::VectorXd::Constant(
_mesh->getDimensions(), 0.0);
102 coords += elem.weight *
_mesh->vertex(elem.vertexID).getCoords();
104 if (coords.size() == 2) {
105 _txtWriter.writeData(
"Coordinate", Eigen::Vector2d(coords));
107 _txtWriter.writeData(
"Coordinate", Eigen::Vector3d(coords));
111 if (elem->getDimensions() > 1) {
112 Eigen::VectorXd toExport = Eigen::VectorXd::Zero(
_mesh->getDimensions());
114 if (coords.size() == 2) {
115 _txtWriter.writeData(elem->getName(), Eigen::Vector2d(toExport));
117 _txtWriter.writeData(elem->getName(), Eigen::Vector3d(toExport));
121 double valueToExport = 0.0;
123 _txtWriter.writeData(elem->getName(), valueToExport);
129 Eigen::VectorXd &value,
133 int dim =
_mesh->getDimensions();
134 Eigen::VectorXd temp(dim);
135 const auto sample = data->timeStepsStorage().sample(
time);
137 int offset = elem.vertexID * dim;
138 for (
int i = 0; i < dim; i++) {
139 temp[i] = sample(offset + i);
151 const auto sample = data->timeStepsStorage().sample(
time);
153 value += elem.weight * sample(elem.vertexID);
#define PRECICE_DEBUG(...)
#define PRECICE_TRACE(...)
#define PRECICE_ASSERT(...)
void exportPointData(double time)
Writes one line with data of the watchpoint into the output file.
void getValue(Eigen::VectorXd &value, mesh::PtrData &data, double time)
std::vector< mesh::PtrData > _dataToExport
io::TXTTableWriter _txtWriter
WatchPoint(Eigen::VectorXd pointCoords, mesh::PtrMesh meshToWatch, const std::string &exportFilename)
Constructor.
const mesh::PtrMesh & mesh() const
std::unique_ptr< mapping::Polation > _interpolation
bool _isClosest
Holds the information if this processor is the closest.
DataType
Constants defining possible data types to be written.
static Rank getRank()
Current rank.
static bool isPrimary()
True if this process is running the primary rank.
static auto allSecondaryRanks()
Returns an iterable range over salve ranks [1, _size)
static bool isSecondary()
True if this process is running a secondary rank.
static com::PtrCommunication & getCommunication()
Intra-participant communication.
std::shared_ptr< Data > PtrData
std::shared_ptr< Mesh > PtrMesh
contains the time interpolation logic.