суббота, 6 августа 2011 г.

Gmsh. Опции

Просмотрев некоторые из предыдущих записей, я вспомнил, что обещал сделать, например, обзор CAD программ для создания сложных геометрий и способ их переноса в Gmsh, а также обзор полезных опций Gmsh'а. Что же, настала пора сдержать свои обещания. Начнем с опций. При этом, чтобы не создавать много записей, новые интересные опции, которые обнаружатся в дальнейшем, будут отображаться только здесь.
Начнем с того, что полный список опций на английском языке есть здесь (это часть документации Gmsh'а, которая доступна в интернете). Он очень обширен, и, конечно, все настройки мы рассматривать не будем. Остановимся только на тех опциях, которые принципиально влияют на построение сетки, качество ее элементов, а также их сохранение, ведь все остальное, по сути, не так уж и важно. В скобках после названия опции стоит значение по умолчанию.

Geometry.ExtrudeReturnLateralEntities (=1) - нужно ли добавлять дополнительные номера в массив, возвращаемый командой Extrude (эту опцию мы использовали в обзоре Gmsh.Знакомство 3D)
Geometry.ExtrudeSplinePoints (=5) - количество контрольных точек для сплайнов, созданных вследствие вытягивания
Geometry.NumSubEdges (=20) - количество отрезков между контрольными точками при отображении кривых (эта опция не касается построения сетки, однако позволяет сильно улучшить отображение сложных кривых)
Geometry.OCCFixSmallEdges (=1) - фиксировать малые ребра в IGES, STEP и BRep моделях (важная опция при экспорте моделей из других CAD программ)
Geometry.OCCFixSmallFaces (=1) - фиксировать малые грани в IGES, STEP и BRep моделях (важная опция при экспорте моделей из других CAD программ)
Geometry.Tolerance (=1e-06) - геометрическая точность (допустимое отклонение)
Mesh.Algorithm (=1) - алгоритм построения треугольной сетки (1 - MeshAdapt, 5 - Delaunay, 6 - Frontal). По характеристикам (устойчивость, производительность, качество) эти алгоритмы имеют следующие места: MeshAdapt (1, 3, 2), Delaunay (2, 1, 2), Frontal (3, 2, 1). То есть, если вам нужно построить самую качественную сетку, выбирайте Frontal; построить сетку быстрей всего - Delaunay и т.д.
Mesh.Algorithm3D (=1) - алгоритм построения тетраэдральной сетки (1 - Delaunay, 4 - Frontal). Алгоритм Delaunay наиболее устойчивый и быстрый, однако иногда он изменяет поверхностную сетку (напомню, что Gmsh сначала строит одномерную сетку, затем основанную на ней двумерную, а потом основанную на двумерной трехмерную сетку) и не подходит для создания смешанной структурированной/неструктурированной сетки. Для этих случаев подходит Frontal алгоритм. Качество элементов, производимых этими алгоритмами, примерно одинаковое.
Mesh.Binary (=0) - записывать сетку в бинарном формате (это альтернатива использования '-bin' в командной строке, которую мы рассматривали в Gmsh. Знакомство)
Mesh.CharacteristicLengthFactor (=1) - множитель характеристической длины (применяется, чтобы измельчить/загрубить все элементы сетки в равной степени)
Mesh.CharacteristicLengthMin (=0) - минимальный размер элемента сетки
Mesh.CharacteristicLengthMax (=1e+22) - максимальный размер элемента сетки
Mesh.CpuTime (=0) - время (в секундах), отведенное для построения сетки
Mesh.ElementOrder (=1) - порядок элементов сетки (1 - линейные элементы; доступны также 2, 3, 4 и 5 порядки)
Mesh.Format (=10) - формат выходного файла сетки (1=msh, 2=unv, 10=automatic, 19=vrml, 27=stl, 30=mesh, 31=bdf, 32=cgns, 33=med, 40=ply2)
Mesh.MinimumCirclePoints (=7) - минимальное количество точек для аппроксимации окружности
Mesh.MinimumCurvePoints (=3) - минимальное количество точек для аппроксимации кривой линии
Mesh.MshFileVersion (=2.2) - версия msh формата выходного файла сетки (значение по умолчанию актуально для Gmsh 2.5.0, в версии Gmsh 2.4.2 выходной файл имеет формат 2.1)
Mesh.NumSubEdges (=2) - количество ребер разбиения при отображении элементов высоких порядков (для сетки 1-го порядка неактуально). Эта опция важна только с точки зрения визуализации. Проиллюстрируем это на примере разбиения круга грубой сеткой второго порядка (слева - количество ребер =2, справа - количество ребер =5):

Mesh.Optimize (=0) - оптимизировать сетку для повышения качества тетраэдральных элементов
Mesh.OptimizeNetgen (=0) - оптимизировать сетку для повышения качества тетраэдральных элементов, используя алгоритм Netgen'а
Mesh.RecombinationAlgorithm (=0) - алгоритм рекомбинирования (0 - стандартный, 1 - blossom)
Mesh.RefineSteps (=10) - количество шагов уточнения для двумерных алгоритмов, основанных на алгоритме MeshAdapt
Mesh.SaveAll (=0) - сохранять все элементы сетки, независимо от физических объектов
Mesh.SecondOrderIncomplete (=0) - создавать элементы неполного второго порядока (8-узловые четырехугольники, 20-узловые шестигранники и т.д.)
Mesh.SecondOrderLinear (=0) - должны ли вершины элементов второго порядка быть получены линейной интерполяцией (в этом случае, дополнительные узлы ставятся строго на середину ребра элемента. в противном случае, ребра ломаются на два, а дополнительные узлы смещаются для более точной аппроксимации). Проиллюстрируем это (слева опция отключена, справа - включена):

Mesh.Smoothing (=1) - количество шагов сглаживания, применяемого к итоговой сетке

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

Отправить комментарий