pythonmeshfinite-element-analysisopenfoam

How to resolve gmsh Mesh generation errors


I am trying to 3D mesh 10 ellipses with various aspect ratio's for an OpenFOAM simulation. I've noticed that I'm getting the same 3 meshing errors when I try to generate a 3D mesh. The 3 error messages are:

  1. Error: Unable to recover the edge 405 (1/1219) on curve 1000 (on surface 1)
  2. Error: Could not find extruded node (0.9090634994349311, -0.0009576995469135237, 1) in surface 1026
  3. Error : No elements in volume 1

These messages appear on the majority of ellipses but the rest mesh with no problem.

I'm fairly new with gmsh so I'd appreciate an explanation of whats causing these errors and how I should go about resolving them.

I plan to use much more complex/amorphous shapes so I need to know that meshing of these shapes will be robust. Any tips on achieving robust meshing with this setup would also be appreciated.

Here's the 3D mesh file for one of the shapes(more can be provided if needed):

Point(1000) = { 0.14286, 0.0, 0.00000000, 0.005};
Point(1001) = { 0.14256, 0.06407, 0.00000000, 0.005};
Point(1002) = { 0.14168, 0.12788, 0.00000000, 0.005};
Point(1003) = { 0.14022, 0.19116, 0.00000000, 0.005};
Point(1004) = { 0.13818, 0.25365, 0.00000000, 0.005};
Point(1005) = { 0.13558, 0.31511, 0.00000000, 0.005};
Point(1006) = { 0.13242, 0.37527, 0.00000000, 0.005};
Point(1007) = { 0.12871, 0.43388, 0.00000000, 0.005};
Point(1008) = { 0.12447, 0.49072, 0.00000000, 0.005};
Point(1009) = { 0.11973, 0.54553, 0.00000000, 0.005};
Point(1010) = { 0.11449, 0.59811, 0.00000000, 0.005};
Point(1011) = { 0.10878, 0.64823, 0.00000000, 0.005};
Point(1012) = { 0.10262, 0.69568, 0.00000000, 0.005};
Point(1013) = { 0.096043, 0.74028, 0.00000000, 0.005};
Point(1014) = { 0.08907, 0.78183, 0.00000000, 0.005};
Point(1015) = { 0.081731, 0.82017, 0.00000000, 0.005};
Point(1016) = { 0.074056, 0.85514, 0.00000000, 0.005};
Point(1017) = { 0.066077, 0.8866, 0.00000000, 0.005};
Point(1018) = { 0.057826, 0.91441, 0.00000000, 0.005};
Point(1019) = { 0.049338, 0.93847, 0.00000000, 0.005};
Point(1020) = { 0.040647, 0.95867, 0.00000000, 0.005};
Point(1021) = { 0.031789, 0.97493, 0.00000000, 0.005};
Point(1022) = { 0.0228, 0.98718, 0.00000000, 0.005};
Point(1023) = { 0.013718, 0.99538, 0.00000000, 0.005};
Point(1024) = { 0.0045788, 0.99949, 0.00000000, 0.005};
Point(1025) = { -0.0045788, 0.99949, 0.00000000, 0.005};
Point(1026) = { -0.013718, 0.99538, 0.00000000, 0.005};
Point(1027) = { -0.0228, 0.98718, 0.00000000, 0.005};
Point(1028) = { -0.031789, 0.97493, 0.00000000, 0.005};
Point(1029) = { -0.040647, 0.95867, 0.00000000, 0.005};
Point(1030) = { -0.049338, 0.93847, 0.00000000, 0.005};
Point(1031) = { -0.057826, 0.91441, 0.00000000, 0.005};
Point(1032) = { -0.066077, 0.8866, 0.00000000, 0.005};
Point(1033) = { -0.074056, 0.85514, 0.00000000, 0.005};
Point(1034) = { -0.081731, 0.82017, 0.00000000, 0.005};
Point(1035) = { -0.08907, 0.78183, 0.00000000, 0.005};
Point(1036) = { -0.096043, 0.74028, 0.00000000, 0.005};
Point(1037) = { -0.10262, 0.69568, 0.00000000, 0.005};
Point(1038) = { -0.10878, 0.64823, 0.00000000, 0.005};
Point(1039) = { -0.11449, 0.59811, 0.00000000, 0.005};
Point(1040) = { -0.11973, 0.54553, 0.00000000, 0.005};
Point(1041) = { -0.12447, 0.49072, 0.00000000, 0.005};
Point(1042) = { -0.12871, 0.43388, 0.00000000, 0.005};
Point(1043) = { -0.13242, 0.37527, 0.00000000, 0.005};
Point(1044) = { -0.13558, 0.31511, 0.00000000, 0.005};
Point(1045) = { -0.13818, 0.25365, 0.00000000, 0.005};
Point(1046) = { -0.14022, 0.19116, 0.00000000, 0.005};
Point(1047) = { -0.14168, 0.12788, 0.00000000, 0.005};
Point(1048) = { -0.14256, 0.06407, 0.00000000, 0.005};
Point(1049) = { -0.14286, 1.2246e-16, 0.00000000, 0.005};
Point(1050) = { -0.14256, -0.06407, 0.00000000, 0.005};
Point(1051) = { -0.14168, -0.12788, 0.00000000, 0.005};
Point(1052) = { -0.14022, -0.19116, 0.00000000, 0.005};
Point(1053) = { -0.13818, -0.25365, 0.00000000, 0.005};
Point(1054) = { -0.13558, -0.31511, 0.00000000, 0.005};
Point(1055) = { -0.13242, -0.37527, 0.00000000, 0.005};
Point(1056) = { -0.12871, -0.43388, 0.00000000, 0.005};
Point(1057) = { -0.12447, -0.49072, 0.00000000, 0.005};
Point(1058) = { -0.11973, -0.54553, 0.00000000, 0.005};
Point(1059) = { -0.11449, -0.59811, 0.00000000, 0.005};
Point(1060) = { -0.10878, -0.64823, 0.00000000, 0.005};
Point(1061) = { -0.10262, -0.69568, 0.00000000, 0.005};
Point(1062) = { -0.096043, -0.74028, 0.00000000, 0.005};
Point(1063) = { -0.08907, -0.78183, 0.00000000, 0.005};
Point(1064) = { -0.081731, -0.82017, 0.00000000, 0.005};
Point(1065) = { -0.074056, -0.85514, 0.00000000, 0.005};
Point(1066) = { -0.066077, -0.8866, 0.00000000, 0.005};
Point(1067) = { -0.057826, -0.91441, 0.00000000, 0.005};
Point(1068) = { -0.049338, -0.93847, 0.00000000, 0.005};
Point(1069) = { -0.040647, -0.95867, 0.00000000, 0.005};
Point(1070) = { -0.031789, -0.97493, 0.00000000, 0.005};
Point(1071) = { -0.0228, -0.98718, 0.00000000, 0.005};
Point(1072) = { -0.013718, -0.99538, 0.00000000, 0.005};
Point(1073) = { -0.0045788, -0.99949, 0.00000000, 0.005};
Point(1074) = { 0.0045788, -0.99949, 0.00000000, 0.005};
Point(1075) = { 0.013718, -0.99538, 0.00000000, 0.005};
Point(1076) = { 0.0228, -0.98718, 0.00000000, 0.005};
Point(1077) = { 0.031789, -0.97493, 0.00000000, 0.005};
Point(1078) = { 0.040647, -0.95867, 0.00000000, 0.005};
Point(1079) = { 0.049338, -0.93847, 0.00000000, 0.005};
Point(1080) = { 0.057826, -0.91441, 0.00000000, 0.005};
Point(1081) = { 0.066077, -0.8866, 0.00000000, 0.005};
Point(1082) = { 0.074056, -0.85514, 0.00000000, 0.005};
Point(1083) = { 0.081731, -0.82017, 0.00000000, 0.005};
Point(1084) = { 0.08907, -0.78183, 0.00000000, 0.005};
Point(1085) = { 0.096043, -0.74028, 0.00000000, 0.005};
Point(1086) = { 0.10262, -0.69568, 0.00000000, 0.005};
Point(1087) = { 0.10878, -0.64823, 0.00000000, 0.005};
Point(1088) = { 0.11449, -0.59811, 0.00000000, 0.005};
Point(1089) = { 0.11973, -0.54553, 0.00000000, 0.005};
Point(1090) = { 0.12447, -0.49072, 0.00000000, 0.005};
Point(1091) = { 0.12871, -0.43388, 0.00000000, 0.005};
Point(1092) = { 0.13242, -0.37527, 0.00000000, 0.005};
Point(1093) = { 0.13558, -0.31511, 0.00000000, 0.005};
Point(1094) = { 0.13818, -0.25365, 0.00000000, 0.005};
Point(1095) = { 0.14022, -0.19116, 0.00000000, 0.005};
Point(1096) = { 0.14168, -0.12788, 0.00000000, 0.005};
Point(1097) = { 0.14256, -0.06407, 0.00000000, 0.005};
Point(1098) = { 0.14286, -2.4493e-16, 0.00000000, 0.005};


Spline(1000) = {1000:1098,1000};

edge_lc = 0.2;
Point(1900) = { 5, 5, 0, edge_lc};
Point(1901) = { 5, -5, 0, edge_lc};
Point(1902) = { -5, -5, 0, edge_lc};
Point(1903) = { -5, 5, 0, edge_lc};

Line(1) = {1900,1901};
Line(2) = {1901,1902};
Line(3) = {1902,1903};
Line(4) = {1903,1900};

Line Loop (1) = {1,2,3,4};
Line Loop (2) = {1000};
Plane Surface(1) = {1,2};

Extrude {0, 0, 1} {
  Surface{1};
  Layers{1};
  Recombine;
}
Physical Surface("back") = {1027};
Physical Surface("front") = {1};
Physical Surface("top") = {1022};
Physical Surface("exit") = {1010};
Physical Surface("bottom") = {1014};
Physical Surface("inlet") = {1018};
Physical Surface("aerofoil") = {1026};
Physical Volume("internal") = {1};

Solution

  • The problem happens, since Spline(1000) is a closed-loop now by its own. That is less than desirable. In GMSH, one would prefer to define lines that form closed loops as at least two separate objects and then add them to the corresponding Line Loop.

    So, the file with the following changes should create a mesh without any problems:

    Spline(1000) = {1000:1045};
    Spline(1001) = {1045:1098,1000};
    ...
    Line Loop (2) = {1000,1001};
    

    Everything else can stay the same. The 1045 was chosen arbitrarily.