Hello,<br><br>I would like to patch gmsh in order to output multiple ``layers'' of ghost nodes when partitioning.<br><br>I work on a finite-volume solver called FiPy (<a href="http://www.ctcms.nist.gov/fipy/">http://www.ctcms.nist.gov/fipy/</a>). FiPy has been built to dovetail with Gmsh in a few regards, one of which is mesh partitioning. We have been using gmsh-2.5.0-svn to output partitioned meshes with ghost-node information, which we then read back into FiPy for use within our system.<br>
<br>This has all been working fine and dandy, but FiPy users often want to solve fourth-order equations like Cahn-Hilliard. Obviously, we'd like to support parallel solving for these problems and thus we need to partition meshes accordingly. The problem is that gmsh only currently outputs one layer of ghost nodes and a higher-order problem like Cahn Hilliard requires two layers of ghost nodes to work properly in parallel.<br>
<br>I've taken a look at the Gmsh source, and I think I can patch the PartitionMesh(GModel *const model, meshPartitionOptions &options) function within ``Mesh/meshPartition.cpp'' to support multiple layers of ghost nodes. It looks straightforward (perhaps deceptively so).<br>
<br>Unfortunately, I am unable to build the nightly source. I get the follow error during make:<br><br>[ 21%] Building CXX object CMakeFiles/gmsh.dir/Solver/elasticityTerm.cpp.o<br>[ 21%] Building CXX object CMakeFiles/gmsh.dir/Solver/elasticitySolver.cpp.o<br>
In file included from /users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:8:<br>/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.h:82: error: ‘lua_State’ has not been declared<br>
/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.h:84: error: ‘lua_State’ has not been declared<br>/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:265: error: ‘lua_State’ has not been declared<br>
/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp: In member function ‘void elasticitySolver::addDirichletBCLua(int, int, int, std::string, int*)’:<br>/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:268: error: expected type-specifier before ‘simpleFunctionLua’<br>
/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:268: error: cannot convert ‘int*’ to ‘simpleFunction<double>*’ in assignment<br>/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:268: error: expected `;' before ‘simpleFunctionLua’<br>
/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp: At global scope:<br>/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:295: error: ‘lua_State’ has not been declared<br>
/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp: In member function ‘void elasticitySolver::addNeumannBCLua(int, int, std::string, int*)’:<br>/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:298: error: expected type-specifier before ‘simpleFunctionLua’<br>
/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:298: error: cannot convert ‘int*’ to ‘simpleFunction<SVector3>*’ in assignment<br>/users/obeirne/gmsh/gmsh-2.5.0-svn-20100615-source/Solver/elasticitySolver.cpp:298: error: expected `;' before ‘simpleFunctionLua’<br>
make[2]: *** [CMakeFiles/gmsh.dir/Solver/elasticitySolver.cpp.o] Error 1<br>make[1]: *** [CMakeFiles/gmsh.dir/all] Error 2<br>make: *** [all] Error 2<br><br>If anyone can provide any insight on what's going on with the nightly source, that would be welcome. Also, if anyone can comment on patching for multiple layers of ghost nodes, I would really appreciate it.<br>
<br>James<br>