From da569352cc264e1ef70b8e7e223a73a1b49cb91e Mon Sep 17 00:00:00 2001 From: "jakob.schratter" Date: Tue, 27 Jan 2026 16:37:38 +0100 Subject: [PATCH] wet coords --- mgrid_2/geom.cpp | 16 ++++++++++++++++ mgrid_2/geom.h | 2 +- solid-cpp/ownSolver.cpp | 18 ++++++++++++------ 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/mgrid_2/geom.cpp b/mgrid_2/geom.cpp index 7ed1ef0..3b3f1d9 100644 --- a/mgrid_2/geom.cpp +++ b/mgrid_2/geom.cpp @@ -847,6 +847,22 @@ const std::vector Mesh::EdgeSubdomains() const return _edgeSubdomains; } +const std::vector Mesh::TopNodes() const +{ + vector topNodes; + + for (size_t i = 0; i < _outerEdgesNodes.size(); ++i) + { + int nodeIndex = _outerEdgesNodes[i]; + if (abs(_xc[2*nodeIndex + 1] - 105.0) < 0.01 ) // if y-coordinate of node is 105, i.e. node is on top + { + topNodes.push_back(nodeIndex); + } + } + + return topNodes; +} + // Only the outer edges for Robin BC void Mesh::InitializeOuterEdges() diff --git a/mgrid_2/geom.h b/mgrid_2/geom.h index 70698b3..d5d0108 100644 --- a/mgrid_2/geom.h +++ b/mgrid_2/geom.h @@ -352,7 +352,7 @@ public: const std::vector OuterEdgesNodes() const; const std::vector ElementSubdomains() const; const std::vector EdgeSubdomains() const; - + const std::vector TopNodes() const; diff --git a/solid-cpp/ownSolver.cpp b/solid-cpp/ownSolver.cpp index 36d0ba9..2741caf 100644 --- a/solid-cpp/ownSolver.cpp +++ b/solid-cpp/ownSolver.cpp @@ -106,14 +106,20 @@ int main(int argc, char **argv ) precice::Participant participantSolid(solverName, configFileName, commRank, commSize); int meshDim = participantSolid.getMeshDimensions(meshName); // gets mesh dimensions (=2) from config file - int numberOfVertices; // number of vertices at "wet" surface + + // Determine number of "wet" vertices + vector wetNodes = mesh_c.TopNodes(); + int numberOfVertices = wetNodes.size(); + + // Determine coordinates of "wet" vertices + std::vector allCoords = mesh_c.GetCoords(); + std::vector coords(numberOfVertices*meshDim); + for (size_t i = 0; i < numberOfVertices*meshDim; ++i) { - // TODO: DETERMINE NUMBER OF VERTICES AT TOP - } - std::vector coords(numberOfVertices*meshDim); // coords of vertices at "wet" surface - { - // TODO: DETERMINE COORDINATES OF VERTICES AT TOP + coords.push_back(allCoords[2*wetNodes[i]]); // x-coord of node + coords.push_back(allCoords[2*wetNodes[i + 1]]); // y-coord of node } + std::vector vertexIDs(numberOfVertices); participantSolid.setMeshVertices(meshName, coords, vertexIDs);