Как получить доступ к gm sh коду из python после импорта меня sh в Fipy? - PullRequest
1 голос
/ 06 января 2020

Я сгенерировал gm sh me sh, который импортировал в FiPy через Gmsh2D. Я хотел бы обратиться к поверхности Faces для установки граничных условий, но я не знал, как это сделать.

В примерах FiPy, которые я нашел в документации, предлагается назвать определенные строки, чтобы обратиться к ним позже. Как мне сделать это после того, как я импортировал me sh в fipy?

// note: if you do not use any labels, all Cells will be included.

Physical Surface("Outer") = {1};
Physical Surface("Middle") = {2};
Physical Surface("Inner") = {3};

// label the "north-west" part of the exterior boundary

// note: you only need to label the Face elements
// (Physical Line in 2D and Physical Surface in 3D) that correspond
// to boundaries you are interested in. FiPy does not need them to
// construct the Mesh.

Physical Line("NW") = {5};

-----------------

Редактировать :

Для простых поверхностей это будет работать: я пропустил mesh.exteriorFaces. Для простого круга это приводит к простому решению:

xfc, yfc = mesh.faceCenters()   # returns x faceCenters coordinate, ...
xcc, ycc = mesh.cellCenters()

plot(xfc[where(mesh.exteriorFaces == False)],yfc[where(mesh.exteriorFaces == False)],'ro', label='inside')    
plot(xfc[where(mesh.exteriorFaces == True)],yfc[where(mesh.exteriorFaces == True)],'ko', label='surface')    
legend() 

IdentifiedSurfaceCells

Тем не менее я все еще ищу ответ о том, как получить доступ к gm sh код извне, но, возможно, это поможет другим:)

1 Ответ

1 голос
/ 06 января 2020

«Внешнее» - это не физическое лицо, это набор физических ячеек. Чтобы получить доступ к граничным граням «Outer», вы можете добавить

Physical Line("Outer Boundary") = {1, 2, 3, 4, 5, 6, 7, 8};

к вашему сценарию Gm sh, а затем применить ограничение с

var.constrain(value, where=squaredCircle.physicalFaces["Outer Boundary"])

. Как вы обнаружили, вы всегда можно получить доступ к mesh.exteriorFaces, чтобы получить грани, определяющие границы целого me sh (т. е. грани, у которых только ячейка на одной стороне). Домены Gm sh, определенные с Physical Surface, не обязательно ограничены mesh.exteriorFaces.

...