Определите некартову сетку в fipy

#python-3.x #fipy

Вопрос:

Я пытаюсь смоделировать элементарную единицу 2D-системы, которая имеет симметрию P6mm в fipy, и я хотел бы определить некартову сетку, описывающую систему, описанную ниже. Еще,

 mesh = fipy.Grid2D(nx = 10, ny = 10, dx = 1., dy = 1.)
 

возвращает только однородные сетки. Я думал об изменении FaceVariable, но, похоже, он принимает только логические переменные. Я мог бы также смоделировать декартову систему, эквивалентную этой, но там были бы данные redondant. У кого-нибудь есть лучший подход?

Система, которую я хочу смоделировать, представляет собой мезопористый кремнезем. Разные цвета указывают на разные области, то есть области с разными коэффициентами диффузии.

Описание альтернативной системы

В качестве альтернативы я мог бы определить свою систему таким образом. Есть ли какие-либо возражения против этого ?

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

1. Grid2D-это заводская функция, которая создает либо однородную сетку 2D, либо неоднородную сетку 2D в зависимости от расстояний между сетками. Документация для UniformGrid2D ясно указывает, что она создает прямоугольные сетки, но в другой документации для GridND должно быть ясно , что декартовы сетки всегда создаются.

Ответ №1:

FiPy не предоставляет класс сетки для того, что вам нужно. UniformGrid2D можно использовать в качестве отправной точки для равносторонней треугольной сетки (или шестигранной сетки, если это действительно необходимо). Однако StackOverflow-неподходящее место для этого. Пожалуйста, откройте вопрос, если вы хотите продолжить это.

Gmsh будет создавать структурированные треугольные сетки, но я не уверен, что его можно заставить создавать правильные равносторонние треугольники.

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

1. Спасибо. Я добавил проблему на GitHub: github.com/usnistgov/fipy/issues/819