Как устранить ошибки генерации сетки gmsh

Я пытаюсь создать трехмерную сетку из 10 эллипсов с различным соотношением сторон для моделирования OpenFOAM. Я заметил, что получаю те же 3 ошибки построения сетки, когда пытаюсь создать трехмерную сетку. 3 сообщения об ошибках:

  1. Ошибка: невозможно восстановить кромку 405 (1/1219) на кривой 1000 (на поверхности 1)
  2. Ошибка: не удалось найти выдавленный узел (0,9090634994349311, -0,0009576995469135237, 1) на поверхности 1026
  3. Ошибка: в томе 1 нет элементов

Эти сообщения появляются на большинстве эллипсов, но остальные без проблем создают сетку.

Я новичок в gmsh, поэтому был бы признателен за объяснение причин этих ошибок и способов их устранения.

Я планирую использовать гораздо более сложные / аморфные формы, поэтому мне нужно знать, что сетка этих форм будет надежной. Мы также будем благодарны за любые советы по достижению надежной сетки с этой настройкой.

Вот файл 3D-сетки для одной из фигур (при необходимости можно предоставить другие):

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};

person RobotBarry    schedule 16.03.2020    source источник


Ответы (1)


Проблема возникает, поскольку Spline(1000) теперь сам по себе замкнутый цикл. Это менее чем желательно. В GMSH предпочтительнее определять линии, образующие замкнутые циклы, как минимум как два отдельных объекта, а затем добавлять их к соответствующему Line Loop.

Итак, файл со следующими изменениями должен без проблем создать сетку:

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

Все остальное может остаться прежним. 1045 был выбран произвольно.

person Anton Menshov    schedule 16.03.2020
comment
Молодец, спасибо за решение! Также есть ли у вас какие-либо ресурсы по изучению gmsh, кроме перечисленных на веб-сайте, не беспокойтесь, если нет. - person RobotBarry; 17.03.2020
comment
@RobotBarry не совсем. Учебники на их gmsh github очень полезны, и затем это метод проб и ошибок, поиск в Google и поиск, если кто-то уже столкнулся с проблемой (даже удаленно связанной) в списке рассылки GMSH. - person Anton Menshov; 17.03.2020