Как импортировать 3D-сетку, сгенерированную Gmsh, в Fipy?

#python-2.7 #mesh #fipy

#python-2.7 #сетка #fipy

Вопрос:

Я работаю над связанной моделью DEM-CFD. Я использую Fipy для его части CFD, и моя геометрия — цилиндр. Как я могу импортировать сгенерированную сетку в Gmsh в Fipy?

Мне нужно сгенерировать цилиндрическую геометрию и дискретизировать ее, сгенерировав треугольную сетку в 3D в Fipy. Я попытался найти в справке Fipy команду для создания 3D треугольной сетки в цилиндрической геометрии, но я не смог найти ничего подходящего для 3D. Я сгенерировал сетку в программном обеспечении Gmsh, которое принимается Fipy на основе его справки. Теперь у меня есть файл сетки, но я не могу импортировать его в Fipy.

Всякий раз, когда я пытался импортировать ее в модель, я сталкивался с этой ошибкой Gmsh version must be >= 2.0 . Однако моя версия Gmsh была 4.

Я также использовал Gmsh версии 5, но ошибка была той же. Я искал ошибку, и я вижу, что некоторые люди также боролись с этим. Они рекомендовали поместить Gmsh.exe файл в папке script для решения проблемы. Я сделал это, но у меня возникла другая ошибка. Новая ошибка

 Windows Error: [Error 32] The process cannot access the file because it is being used by another process
  

когда команда была mesh = fp.Gmsh3D("Cylinder.msh") .

Я также искал эту ошибку, и кто-то предложил упомянуть файл геометрии после сетки, mesh = fp.Gmsh3D("Cylinder.msh, Cylinder.geo") . Теперь я получаю это

 GmshException: Gmsh hasn't produced any cells! Check your Gmsh code.
  

Я попытался создать круговую сетку, которая представляет собой 2D треугольную сетку по кругу (это есть в справке Fipy), но у меня получилось вот что

 GmshException: Gmsh hasn't produced any cells! Check your Gmsh code
  

Python scritp, cylinder.msh, cylinder.geo и Gmsh.exe файлы находятся в той же папке.

Ошибка:

 File "C:UsersjpethatiAppDataLocalContinuumanaconda2libsite-packagesfipymeshesgmshMesh.py", line 809, in read
    raise GmshException(errStr)

GmshException: Gmsh hasn't produced any cells! Check your Gmsh code.
  

Вывод Gmsh:

 Info    : Running 'gmsh c:usersjpethatiappdatalocaltemptmpsw2tzg.geo -3 -nopopup -format msh -o c:usersjpethatiappdatalocaltemptmp6gbww9.msh' [Gmsh 4.2.2, 1 node, max. 1 thread] 
Info    : Started on Fri Mar 29 10:25:25 2019 
Info    : Reading 'c:usersjpethatiappdatalocaltemptmpsw2tzg.geo'... 
Info    : Done reading 'c:usersjpethatiappdatalocaltemptmpsw2tzg.geo' 
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:usersjpethatiappdatalocaltemptmp6gbww9.msh'... 
Info    : Done writing 'c:usersjpethatiappdatalocaltemptmp6gbww9.msh' 
Info    : Stopped on Fri Mar 29 10:25:25 2019
  
 import fipy as fp
  

Первая попытка

 mesh = fp.Gmsh3D("Cylinder.msh") 
  

Вторая попытка

 mesh = fp.Gmsh3D("Cylinder.msh, Cylinder.geo")
  

Комментарии:

1. Пожалуйста, попробуйте версию 3.0.7 Gmsh или более раннюю: gmsh.info/bin/Windows . Gmsh 4 кое-что изменил для нас, и у нас пока не было времени разобраться в этом.

2. Я не смог найти версию 3.0.7. Я использовал Gmsh версии 3.0.6, 2.5.0, 2.7.0 и 2.11.0, но все они выдали мне одно и то же: GmshException: Gmsh не произвел ни одной ячейки! Проверьте свой Gmsh-код.

3. Извините, я имел в виду, что 3.0.6. mesh = fp.Gmsh3D("Cylinder.msh, Cylinder.geo") недопустимый синтаксис. Вы можете попробовать mesh = fp.Gmsh3D("Cylinder.msh") или mesh = fp.Gmsh3D("Cylinder.geo") .

Ответ №1:

FiPy 3.3 решил некоторые проблемы с Gmsh в Windows. Пожалуйста, обновите и сообщите нам, если у вас все еще возникают проблемы.