2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 найти поверхностные элементы в сетке метода конечных элемент
Сообщение19.09.2006, 23:03 
помогите, пожалуйста, советом

требуется найти все элементы сетки для метода конечных элементов, что прилегают к поверхности. есть упорядоченный список всех точек сетки с координатами и список всех элементов с номерами точек - вершин этого элемента.

если сетка состоит из элементов только одного типа, то можно составить для каждой точки список элементов, которым она принадлежит. точки с меньшим числом элементов чем положенное лежат на поверхности. потом еще раз пройти по списку элементов и отобрать, что содержат эти точки с поверхности.
проблема, что для разнотипной сетки *положенного* числа не существует.

может кто сталкивался с подобной задачей или есть идеи ?
спасибо огромное заранее :?: за подсказку или ссылку

 
 
 
 
Сообщение22.09.2006, 13:15 
Такие вещи должен давать генератор сетки. Чтоб создать сетку, поверхности разбиваются на 2D-элементы. Затем в процессе создания сетки 3D-элементы, имеющие общие грани с поверхностями, помечаются как таковые.

У Вас я так понял сетка генерится где-то, и есть импорт сетки. По хорошему при етом узлы, принадлежащие границам, должны быть помечены как граничные (так по крайней мере GeomPack делает). Тогда по узлам можно определить и элементы, принадлежащие границам.

Если этого нет, то тут приходит в голову создать граф, отображающий соединение узлов в конечных элементах. Взять самый правый-нижний узел, затем определить грань, образуемую этим узлом и соседними с ним и имеющую наименьший угол с горизонталью. Это будет начальная грань. Помещаем ее в стек.
Снимаем со стека текущую грань. Если она не была обработана, определяем соседние с ней грани и выбираем из них те, что образуют наименьший угол между текущей гранью и рассматриваемыми. Помещаем в стек эти грани, если их там еще нет и они не были обработаны. Движение по граням происходит против часовой, снизу вверх. Выбор грани с наименьшим углом позволяет все время идти по оболочке.

Но это все очень затратно, т.к. нужно опредять углы для всех имеющихся граней.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group