23#ifndef PRECICE_COUPLING_ADAPTER_H
24#define PRECICE_COUPLING_ADAPTER_H
31#include "precice/precice.hpp"
35 PreciceCouplingAdapter();
36 ~PreciceCouplingAdapter()
override;
39 bool configure(
const std::string& configFile)
override;
40 void setNodes(
const std::vector<int>& nodeIds)
override;
41 bool initialize(
const double* coordinates,
int totalNodes,
int mpiRank,
int mpiSize)
override;
42 void writeData(
const double* values,
int totalNodes,
double dt,
int dataType)
override;
43 void readData(
double* values,
int totalNodes,
double dt,
int dataType)
override;
44 void advance(
double& dt)
override;
54 bool isActive =
false;
55 Mode mode = Mode::SKIP;
56 std::vector<double> buffer;
62 std::string participantName_;
63 std::string configFile_;
64 std::string meshName_;
66 std::array<CouplingData, static_cast<size_t>(DataType::DATA_COUNT)> readData_;
67 std::array<CouplingData, static_cast<size_t>(DataType::DATA_COUNT)> writeData_;
70 std::vector<int> couplingNodeIds_;
71 std::vector<int> vertexIds_;
72 double maxTimeStepSize_;
73 std::unique_ptr<precice::Participant> precice_;
76 void extractNodeData(
const double* globalValues,
int totalNodes,
int dataType);
77 void injectNodeData(
double* globalValues,
int totalNodes,
int dataType);
80 static constexpr int getDimensions() noexcept {
return 3; }
83 static bool isNodeIdValid(
int nodeId,
int totalNodes)
noexcept {
84 const auto idx = nodeId - 1;
85 return idx >= 0 && idx < totalNodes;
virtual bool configure(const std::string &configFile)=0
virtual void setNodes(const std::vector< int > &nodeIds)=0
virtual double getMaxTimeStepSize() const =0
virtual void readData(double *values, int totalNodes, double dt, int dataType)=0
virtual void advance(double &dt)=0
virtual bool isCouplingOngoing() const =0
virtual void finalize()=0
virtual bool initialize(const double *coordinates, int totalNodes, int mpiRank, int mpiSize)=0
virtual void writeData(const double *values, int totalNodes, double dt, int dataType)=0
virtual int getNumberOfCouplingNodes() const =0
virtual bool isActive() const =0
virtual bool requiresReadingCheckpoint() const
virtual bool requiresWritingCheckpoint() const