Главная :: Salome :: Регулярная двумерная прямоугольная сетка
Хмурое утро, жена выгоняет интернетчика погулять с собакой. Он долго бродит с ней, потом поднимает палку, кидает ее и командует: - Э-э-э, Яндекс! То есть, Рамблер!! Тьфу, апорт!!!

Регулярная двумерная прямоугольная сетка

Активация модуля построения расчетной сетки:

Module → Mesh

Выбираем объект для построения сетки и переходим в интерфейс настройки параметров:

Mesh → Create Mesh

Для построения сетки необходимо выбрать алгоритм и гипотезу для каждой размерности. Для построения прямоугольной сетки с заданным размером элементов A выбираем 2D алгоритм Netgen 2D и гипотезу Netgen 2D Parameters с параметрами Max Size = A и Min Size = A - максимальный и минимальный размер элементов. Для построения 1D сетки выбираем алгоритм Wire Discretization c гипотезой Local Length = A.

Algorithm 2D = Netgen 2D
Hypothesis 2D = Netgen 2D Parameters
  Max Size = 0.02
  Min Size = 0.02
Algorithm 1D = Wire Discretization
Hypothesis 1D = Local Length = 0.02

Для заданных параметров запускаем расчет сетки:

Mesh → Compute

Для использования полученной сетки в программе Elmer экспортируем ее в формат UNV:

File → Export → UNV file

Создание расчетной сетки с помощью скрипта Python

Данный скрипт создает прямоугольную область размерами sizeX×sizeY и разбивает ее на прямоугольную сетку с элементами elementSize×elementSize. Все созданные элементы добавляются в текущий проект Salome и запускается расчет сетки. Скрипт создается в любом текстовом редакторе (например, в блокноте) и сохраняем с расширением *.py.

import salome
salome.salome_init()
import GEOM
from salome.geom import geomBuilder
geompy = geomBuilder.New(salome.myStudy)
import SMESH
from salome.smesh import smeshBuilder
smesh = smeshBuilder.New(salome.myStudy)
import math

sizeX = 100.0e-3
sizeY = 10.0e-3

elementSize = 0.4e-3

face = geompy.MakeFaceHW(sizeX, sizeY, 1)

id_face = geompy.addToStudy(face, "rect")

gg = salome.ImportComponentGUI("GEOM")
gg.createAndDisplayGO(id_face)

fmesh = smesh.Mesh(face, "face");

algo1d = fmesh.Segment();
algo1d.LocalLength(elementSize)

algo2D = fmesh.Triangle(smeshBuilder.NETGEN_2D, geom=0)
n2_params = algo2D.Parameters()
n2_params.SetMinSize(elementSize)
n2_params.SetMaxSize(elementSize)
n2_params.SetQuadAllowed(True)

fmesh.Compute()

Для запуска скрипта создаем новый проект и открываем файл со скриптом:

File → New
File → Load script