An error occurs when I want to access the mesh information directly

I want a fluid solver coupled to a solid solver for the Immersed Boundary Method. According to the official suggestion, I want to use this subroutine “precicef_get_mesh_vertices_and_IDs()” to get the vertex coordinates of the solid mesh, but I can’t find him when compiling. I saw that this function is still in the experimental stage and may be changed later, but I am using the latest version of precice, who can tell me whether this function has changed?
what should I do ? Can everyone help me!

by
wufan

No error is reported for other precice’s subroutine used, but when using this function,I received an error “undefined reference to `precicef_get_mesh_vertices_and_ids_'”

I guess your selected capitalization is wrong.

This version should work

You can find out about such things on our doxygen page:

https://precice.org/doxygen/main/SolverInterfaceFortran_8hpp.html

I agree that having all caps IDs in this function name is inconsistent with the remaining API, we should probably change this part, thanks!

Very happy with your reply, but it is case insensitive in Fortran. At the same time, I also changed to lowercase, and also reported this error

This is my code


and this is the error

Yes, you are right, the error message would also look different then. How did you install preCICE?

Thank you DavidSCN, I compiled and installed the source code on the supercomputing machine. The quickstart and Perpendicular flap in the tutorial can be run, and I can also successfully run the calculation examples in the provided Fortran binding.

Thank you David,Just now I compiled successfully, I don’t know where I modified, but it did succeed, thank you for your help. I also want to ask you a question, if I want to get the position of the solid mesh in the time loop, should I call the subroutine “precicef_get_mesh_vertices_and_IDs” in the time loop?

No, once before the time loop starts is sufficient, the meshes don’t change throughout the simulation.

so,what should I do if I want to get solid mesh when the solid mesh deformed in time loop?

I have a new problem, I set it up according to the tutorial, but when I use subrountine “precicef_get_mesh_id(SolidMeshName, SolidMeshID)”, I get such an error message "preCICE:ERROR: The given Mesh ID “12395504” is unknown to preCICE .” Solid solver I used rigid_body_solver.cpp in quickstart, and modified it. I released the solid code and configuration files
fluid solver:


solid solver:

precice-config.xml

error:

I further pinned down the error on this line of code

CALL precicef_set_mesh_access_region(SolidMeshID, boundingBox)

The error is “The given Mesh ID XXXX is unknown to preCICE”
Even if I change the code to
CALL precicef_set_mesh_access_region(0, boundingBox)
still the same error.

I don’t know whether this command is necessary if I want to use “direct access to received meshes”.
When I comment out this line of code, initialization succeeds.

https://precice.org/couple-your-code-direct-access.html