Skip to content

Commit

Permalink
Compatibility with precice:develop (#179)
Browse files Browse the repository at this point in the history
* Rename SolverInterface to Participant and remove old API functions

* Further changes for v3 compatibility

* Update to new API. Tests except for gradient mapping are all working.

* Fix for empty mesh.

* Add missing API functions and small corrections

* Fix building issue

* Reformating test/Participant.cpp

* Fixing test_write_block_scalar_gradient_data_single_float

* Fix gradient tests

* Import getVersionInformation in the correct way

* initialize() does not return anything

* Remove merge conflict tag

* Mistake in resolving merge conflicts

---------

Co-authored-by: Benjamin Rodenberg <benjamin.rodenberg@cit.tum.de>
  • Loading branch information
IshaanDesai and BenjaminRodenberg committed Jun 13, 2023
1 parent 562616b commit d7a1234
Show file tree
Hide file tree
Showing 11 changed files with 920 additions and 1,413 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ jobs:
run: |
git clone --branch develop https://github.com/precice/precice.git precice-core
mkdir -p precice
cp precice-core/src/precice/SolverInterface.hpp precice/SolverInterface.hpp
cp precice-core/src/precice/Participant.hpp precice/Participant.hpp
cp precice-core/src/precice/Tooling.hpp precice/Tooling.hpp
cp precice-core/src/precice/Tooling.hpp precice/Tooling.cpp
cd precice-core
Expand Down
92 changes: 92 additions & 0 deletions cyprecice/Participant.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
from libcpp cimport bool
from libcpp.set cimport set
from libcpp.string cimport string
from libcpp.vector cimport vector

cdef extern from "precice/Participant.hpp" namespace "precice":
cdef cppclass Participant:
# construction and configuration

Participant (const string&, const string&, int, int) except +

Participant (const string&, const string&, int, int, void*) except +

void configure (const string&)

# steering methods

void initialize ()

void advance (double computedTimestepLength)

void finalize()

# status queries

int getMeshDimensions(const string& meshName) const

int getDataDimensions(const string& meshName, const string& dataName) const

bool isCouplingOngoing() const

bool isTimeWindowComplete() const

double getMaxTimeStepSize() const

bool requiresInitialData()

bool requiresWritingCheckpoint()

bool requiresReadingCheckpoint()

# mesh access

bool hasMesh (const string& meshName) const

bool requiresMeshConnectivityFor (const string& meshName) const

int setMeshVertex (const string& meshName, vector[double] position)

int getMeshVertexSize (const string& meshName) const

void setMeshVertices (const string& meshName, vector[double] positions, vector[int]& ids)

void setMeshEdge (const string& meshName, int firstVertexID, int secondVertexID)

void setMeshEdges (const string& meshName, vector[int] vertices)

void setMeshTriangle (const string& meshName, int firstVertexID, int secondVertexID, int thirdVertexID)

void setMeshTriangles (const string& meshName, vector[int] vertices)

void setMeshQuad (const string& meshName, int firstVertexID, int secondVertexID, int thirdVertexID, int fourthVertexID)

void setMeshQuads (const string& meshName, vector[int] vertices)

void setMeshTetrahedron (const string& meshName, int firstVertexID, int secondVertexID, int thirdVertexID, int fourthVertexID)

void setMeshTetrahedra (const string& meshName, vector[int] vertices)

# data access

bool hasData (const string& dataName, const string& meshName) const

void writeData (const string& meshName, const string& dataName, vector[int] vertices, vector[double] values)

void readData (const string& meshName, const string& dataName, vector[int] vertices, const double relativeReadTime, vector[double]& values) const

# direct access

void setMeshAccessRegion (const string& meshName, vector[double] boundingBox) const

void getMeshVerticesAndIDs (const string& meshName, vector[int]& ids, vector[double]& coordinates) const

# Gradient related API

bool requiresGradientDataFor(const string& meshName, const string& dataName) const

void writeGradientData(const string& meshName, const string& dataName, vector[int] vertices, vector[double] gradientValues)


cdef extern from "precice/Tooling.hpp" namespace "precice":
string getVersionInformation()
114 changes: 0 additions & 114 deletions cyprecice/SolverInterface.pxd

This file was deleted.

6 changes: 3 additions & 3 deletions cyprecice/cyprecice.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ The python module precice offers python language bindings to the C++ coupling li

cimport numpy as np
cimport cython
cimport SolverInterface
cimport Participant as CppParticipant

from cpython.version cimport PY_MAJOR_VERSION # important for determining python version in order to properly normalize string input. See http://docs.cython.org/en/latest/src/tutorial/strings.html#general-notes-about-c-strings and https://github.com/precice/precice/issues/68 .

@cython.embedsignature(True)
cdef class Interface:
cdef SolverInterface.SolverInterface *thisptr # hold a C++ instance being wrapped
cdef class Participant:
cdef CppParticipant.Participant *thisptr # hold a C++ instance being wrapped
Loading

0 comments on commit d7a1234

Please sign in to comment.