Проблема импорта 3D Mesh от Gmsh в фипы - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь импортировать трехмерную сетку, созданную с помощью Gmsh, в FiPy. Тест с 2D сеткой работал нормально. Если модель затем выдавливается и импортируется с помощью Gmsh3D, я получаю сообщение об ошибке.

GmshException: Gmsh не произвел ни одной ячейки! Проверьте свой код Gmsh.

Я работаю на Win10 с Python 3.7.3, Fipy 3.1.3 и Gmsh 3.0.6 (в соответствии с рекомендациями).

Файл теста test2D.geo:

SetFactory("OpenCASCADE");
cl = 0.5;
bs = 2.;
Point(1) = {0, 0, 0, cl};
Point(2) = {0, bs, 0, cl};
Point(4) = { bs,  0, 0, cl};
Point(3) = {bs,  bs, 0, cl};
Line(5) = {1, 2};
Line(6) = {2, 3};
Line(7) = {3, 4};
Line(8) = {4, 1};

Line Loop(10) = {6, 7, 8, 5};
Plane Surface(1) = {10};
Extrude {0, 0, 1} {
  Surface{1}; 
}

и:

from fipy import *
mesh = Gmsh3D("test2D.msh")

Сообщение об ошибке: GmshException: Gmsh не произвел никаких клеток! Проверьте свой код Gmsh.

Я не вижу своей ошибки и надеюсь, что кто-нибудь сможет мне здесь помочь. Заранее спасибо

Отредактировано для выхода Gmsh:

Gmsh output:
Info    : Running 'gmsh C:\Users\Tinka\AppData\Local\Temp\tmpj4zr8g_c.geo -3 -nopopup -format msh -o C:\Users\Tinka\AppData\Local\Temp\tmpnz1bp4vu.msh' [Gmsh 3.0.6, 1 node, max. 1 thread]
Info    : Started on Tue May 28 19:50:42 2019
Info    : Reading 'C:\Users\Tinka\AppData\Local\Temp\tmpj4zr8g_c.geo'...
Info    : Done reading 'C:\Users\Tinka\AppData\Local\Temp\tmpj4zr8g_c.geo'
Info    : Finalized high order topology of periodic connections
Info    : Meshing 1D...
Info    : Done meshing 1D (0 s)
Info    : Meshing 2D...
Info    : Done meshing 2D (0 s)
Info    : Meshing 3D...
Info    : Done meshing 3D (0 s)
Info    : 0 vertices 0 elements
Info    : Writing 'C:\Users\Tinka\AppData\Local\Temp\tmpnz1bp4vu.msh'...
Info    : Done writing 'C:\Users\Tinka\AppData\Local\Temp\tmpnz1bp4vu.msh'
Info    : Stopped on Tue May 28 19:50:42 2019

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Эта проблема с gmsh и spyder была исправлена ​​в FiPy 3.3, выпущенной ранее сегодня; спасибо, что сообщили об этом.

Другая проблема , о которой вы сообщили в чате , отличается. Как указано для Gmsh2D, но не для Gmsh3D :

... // attention: if you use any "Physical" labels, you *must* label
... // all elements that correspond to FiPy Cells (Physical Surface in 2D
... // and Physical Volume in 3D) or Gmsh will not include them and FiPy
... // will not be able to include them in the Mesh.
...
... // note: if you do not use any labels, all Cells will be included.

Добавление Physical Volumes("cells") = {1}; в сценарий .geo устранит эту проблему.

0 голосов
/ 28 мая 2019

Я изменил имя аргумента в Gmsh3D на test2D.geo и удалил первую строку из гео-файла, и все кажется работающим.

>>> from fipy import Gmsh3D
>>> mesh = Gmsh("test2D.geo")
>>> print(mesh.cellCenters)
[[1.34821429 1.24404762 1.34821429 ...
...

Я не уверен, чтопервая строка, но я получаю Error : Gmsh requires OpenCASCADE to add vertex, и если она включена, вершины или ячейки не генерируются, но это не является необходимым для создания сетки.

Я думаю, что классы FiPy Gmsh принимают отформатированный как geo, так и mshфайлы, но имя файла должно ссылаться на фактический файл на диске.

Я использую версию FiPy, 3.2 + 2.gccec299e, и версию Gmsh, 3.0.6.

...