Перейти к публикации

Поиск соседних ячеек в неструктурированой сетке


Рекомендованные сообщения

Здравствуйте!
 

Пользуюсь сеткой в формате .NEU - габитовский формат. Данный формат как и другие мне известные имеет следующую структуру:

Матрица точек
номер точки1 - координаты точки1 
.

.
номер точкиN - координаты точкиN
 

 

Матрица ячеек 
номер ячейки1 - номера точек из которых состоит ячейка1

.

.
номер ячейкиМ - номера точек из которых состоит ячейкаМ
где N- кол-во точек, M - кол-во ячеек.  

Мне нужна следующая информация: для каждой ячейки знать номера ячеек с которыми она контактирует. Для этого я сравниваю каждую ячейку со всеми остальными ячейками, то есть каждую строку матрицы ячеек со всей матрицой ячеек. Получается два цикла один вложенный в другой в общем M^2 сравнений, расчет занимает очень много времени. 

Вопрос1  Есть ли способы ускорение расчета нужной мне информации?
Вопрос2  Есть ли форматы сеток в которых эта информация есть в явном виде?

 

Ссылка на сообщение
Поделиться на других сайтах


Мне нужна следующая информация: для каждой ячейки знать номера ячеек с которыми она контактирует

Для чего?

Ссылка на сообщение
Поделиться на других сайтах

@Andreiwse, Вам надо универсальное решение, или только конкретно для этой сетки?

Как бы кубик с полостью построил. Отдельно 1915 тетраэдров. Чешу репу над тем, как вычислять соседей среди них. Если только для этой задачи, то может и можно будет победить, увы чуть не вручную. А если же все-таки нужен универсальный алгоритм, чтоб прям на основе исходного файла и новый файл статистики со всеми раскладами, - пасую. :flush:

Наверно вам правильно @piden намекнул, что не для этого форума вопрос. Очевидно в мире есть какие-то оптимизированные алгоритмы для тетраэдров. Шукать трэба. 

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

Ссылка на сообщение
Поделиться на других сайтах

Делаете свой решатель? Тогда лучше искать информацию на иноязычных ресурсах.

Да, я делаю свой решатель. 

За ссылку спасибо, в есть кое что полезное. 

 

@Andreiwse, Вам надо универсальное решение, или только конкретно для этой сетки?

Как бы кубик с полостью построил. Отдельно 1915 тетраэдров. Чешу репу над тем, как вычислять соседей среди них. Если только для этой задачи, то может и можно будет победить, увы чуть не вручную. А если же все-таки нужен универсальный алгоритм, чтоб прям на основе исходного файла и новый файл статистики со всеми раскладами, - пасую. :flush:

Наверно вам правильно @piden намекнул, что не для этого форума вопрос. Очевидно в мире есть какие-то оптимизированные алгоритмы для тетраэдров. Шукать трэба. 

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

Не стоит Ваше время на реализацию поиска соседей используя данный формат. 

Мне нужен совет о форматах сеток. В каких сеточных форматах есть именно то, что мне нужно в готовом виде, либо форматы в которых данные организованны так, что нужная мне информация будет быстрее расчитываться,  чем есть у меня сейчас. 

 

 

 

 

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

 

Ссылка на сообщение
Поделиться на других сайтах
В каких сеточных форматах есть именно то, что мне нужно в готовом виде

Попробуйте представить, как должен выглядеть формат данных, удовлетворяющий Вашим требованиям и Вы сами себе ответите на вопрос.

Или попробуйте связаться с @HFL, он занимается in-house кодами.

Изменено пользователем piden
Ссылка на сообщение
Поделиться на других сайтах

Попробуйте представить, как должен выглядеть формат данных, удовлетворяющий Вашим требованиям и Вы сами себе ответите на вопрос.

Формат который мне нужен, я сам получаю из формата .NEU,  - то есть у меня есть понимание что мне  нужно. Но это мне не помогает. 

Если ВЫ знаете другие форматы, пишите в лоб как есть,  :smile:

Ссылка на сообщение
Поделиться на других сайтах

Я вообще-то без иронии сказал. Опишите, как должен выглядеть удовлетворяющий Вас формат. Номера ячеек сгруппированы по соседству? Или в конце дается длинный список, какая с какой сопрягается и через какой фейс? Мне правда интересно.

 

Ваш ник похож на анаграмму от Pointwise, который Вы использовали для генерации сетки. Наверняка ведь Вы уже перепробовали все форматы, в которые он делает экспорт.

Изменено пользователем piden
Ссылка на сообщение
Поделиться на других сайтах

Я вообще-то без иронии сказал. Опишите, как должен выглядеть удовлетворяющий Вас формат. Номера ячеек сгруппированы по соседству? Или в конце дается длинный список, какая с какой сопрягается и через какой фейс? Мне правда интересно.

 

Ваш ник похож на анаграмму от Pointwise, который Вы использовали для генерации сетки. Наверняка ведь Вы уже перепробовали все форматы, в которые он делает экспорт.

Да, я попробовал все форматы из Poinwise, я ничего не нашел.

Мне нужно что бы для тетраэдральной сетки была следующая матрица:

1   23 44 67 89

2   34  7  99 55

3  12  14 33 45

.

.

Где первая колонка это номера ячеек, четыре остальные колонки это номера соседних ячеек для данной ячейки. Например, ячейка 1 контактирует с ячейками 23 44 67 89. 

Ссылка на сообщение
Поделиться на других сайтах

@Andreiwse, Дык еще ж контакт могёт быть разным. В вершинке, аль фейсом? А ежели соседей менее четырех?

Ссылка на сообщение
Поделиться на других сайтах

@Andreiwse, Дык еще ж контакт могёт быть разным. В вершинке, аль фейсом? А ежели соседей менее четырех?

Контакт в моем случае это фейсом, и поэтому для каждой тетраидальной ячейки может быть только 4 соседа, если эта ячейка не является граничной. 

Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах

@Andreiwse, есть в Mathematica конекшн к TetGen. На примерах из справки работает чики-пики. И картинки рисует и соседей вычисляет. А вот, как ни бился, не смог скормить математике точки из примера с кубиком. :no:

Соседи не поддаются, но хотя бы геометрия строится в Rhino, уже позитивчик :smile:

0_cd92e_eadc8efb_orig.png

Изменено пользователем Blurp
Ссылка на сообщение
Поделиться на других сайтах

@Andreiwse, есть в Mathematica конекшн к TetGen. На примерах из справки работает чики-пики. И картинки рисует и соседей вычисляет. А вот, как ни бился, не смог скормить математике точки из примера с кубиком. :no:

Соседи не поддаются, но хотя бы геометрия строится в Rhino, уже позитивчик :smile:

0_cd92e_eadc8efb_orig.png[

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

благодарю Вас за попытку помочь.  

Ссылка на сообщение
Поделиться на других сайтах
Есть ограничения, я могу пользоваться только своим кодом.

Понимаю.

Ответно благодарю вас за то, что заставили пошевелить мозгами. Хоть задачу не решил, но залез в такие дебри....вплоть до попыток прикрутить для решения MySQL сервер, либо файловую БД SQLite :biggrin: Но, увы, в SQL запросах не силен  :no_1:

А так, на всякий случай, если заинтересуетесь, то SQLite халявна. 

Ссылка на сообщение
Поделиться на других сайтах

В принципе и TetGen фриварный. И, по идее, функцию поиска соседей оттуда можно утянуть.
А так, нашел еще тут в PDFке одной упоминание про какой-то генератор Pyramid и что якобы он информацию о соседях пишет в аутпут-файло, но более про этот генератор ничего не раскопал. :no:
 

Ссылка на сообщение
Поделиться на других сайтах

Попробуйте представить, как должен выглядеть формат данных, удовлетворяющий Вашим требованиям и Вы сами себе ответите на вопрос.

Или попробуйте связаться с @HFL, он занимается in-house кодами.

Могу рассказать как это сделано у нас (не претендуя на универсальность рецепта)

 

Стандартный сеточный формат (у нас  это IDEAS Universal -  *.unv ) используется только для импорта сетки из препроцессора в решалку. В самой решалке используется внутренний формат. Там в структуре, которая соответствует расчетной ячейке (или КО в случае FVM) содержаться указатели на соседние KO (6 штук для гексы или 4 для тетры) которые инициализируются при загрузке сетки из внешнего сеточного формата во внутренний один раз при загрузке.  Сама процедура инициализации распараллелена (есть как MPI так и GPU версии) что значительно ускоряет процесс инициализации, но сам алгоритм похож на ваш.  Время полной инициализации от секунд (если расчетная область целиком влазит в память GPU) до десятков минут для сеток >30млн (общий размер расчетной области при этом примерно 40-60 Гб). 

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

Потому что судя по всему человек делает это первый раз в жизни  :smile: Это нормально. По этим всем граблям нужно пройти лично  :biggrin:

Изменено пользователем HFL
Ссылка на сообщение
Поделиться на других сайтах

Могу рассказать как это сделано у нас (не претендуя на универсальность рецепта)

 

Стандартный сеточный формат (у нас  это IDEAS Universal -  *.unv ) используется только для импорта сетки из препроцессора в решалку. В самой решалке используется внутренний формат. Там в структуре, которая соответствует расчетной ячейке (или КО в случае FVM) содержаться указатели на соседние KO (6 штук для гексы или 4 для тетры) которые инициализируются при загрузке сетки из внешнего сеточного формата во внутренний один раз при загрузке.  Сама процедура инициализации распараллелена (есть как MPI так и GPU версии) что значительно ускоряет процесс инициализации, но сам алгоритм похож на ваш.  Время полной инициализации от секунд (если расчетная область целиком влазит в память GPU) до десятков минут для сеток >30млн (общий размер расчетной области при этом примерно 40-60 Гб). 

Потому что судя по всему человек делает это первый раз в жизни  :smile: Это нормально. По этим всем граблям нужно пройти лично  :biggrin:

Если я правильно понял. И у Вас и у меня по сути реализован конвертор формата из стандартного (unv, neu) в свой формат. Я тоже это делаю один раз для одной сетки. 

У меня без паралелеливания 400 тыс ячеек считает за 4 часа. А у Вас во сколько раз паралеливание дало выигрыш?

 

Изменено пользователем Andreiwse
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • yunoleg
      https://drive.google.com/file/d/1o5b62TuvZQalbDJ9_aG81fc6I_Ojsg7d/view?usp=drive_link, https://drive.google.com/file/d/17bjDQq5UQ9HaZRu9QIGNjD5Iy9rEQ9XB/view?usp=drive_link, https://drive.google.com/file/d/1v5rY8NXGV0dsvizuyDwHdnQE53M0QlRi/view?usp=drive_link, https://drive.google.com/file/d/1xCjwwPhNUiLshQmCz5GVwO6nwrL1teew/view?usp=drive_link, https://drive.google.com/file/d/1biXChIeRXUPkyRq-vUAX7QTYDSAFajwG/view?usp=drive_link, https://drive.google.com/file/d/1hmQcWIwtIMVSaAKob7ET6JHxK9BiN1XO/view?usp=drive_link, https://drive.google.com/file/d/1wyzqJB9iwENMyWHD1EQgyUCw7iED8Blm/view?usp=drive_link, https://drive.google.com/file/d/1WCtff2C-_jPQniOz8QPRVTEZ9lNIaXIZ/view?usp=drive_link, https://drive.google.com/file/d/1PNeqoEomozDWPtBuB7_BMwNQLdkd7F13/view?usp=drive_link, https://drive.google.com/file/d/1zWW6U-gzl9ypvOWv1AQcW18Xb4AVRJXB/view?usp=drive_link, https://drive.google.com/file/d/1mtitt98SGu63Fr_db5HSVfE43-j6utgG/view?usp=drive_link, https://drive.google.com/file/d/1TeWtLQYDtWxOnOphgJ82brZWgapoftxT/view?usp=drive_link, https://drive.google.com/file/d/1zWk7w8BxpU_uwj-LP0H23eoR8nphLeNQ/view?usp=drive_link, https://drive.google.com/file/d/1YCZDInHYxQyLo_xQQgc0sUOcuUNrv1c9/view?usp=drive_link, https://drive.google.com/file/d/16bIqWYg8ryKRFa8LTfSpaIySo1_4VdGs/view?usp=drive_link, https://drive.google.com/file/d/1x2xqlaFCfXRIwoTxvSjxciKuJ04Ao7-0/view?usp=drive_link, https://drive.google.com/file/d/18YxxWmy2zgUzbMai9lD4XTgQeJUbGVrd/view?usp=drive_link, https://drive.google.com/file/d/16ZBXioHIXFtlYMhBQFopycwDPRdDYC_x/view?usp=drive_link, https://drive.google.com/file/d/112_xqezNot4ecDOMbmvtLN_nOnEQR_tR/view?usp=drive_link, https://drive.google.com/file/d/1Qx6eOwQqD9dcxrpeudbXJL8HQTZzQe2l/view?usp=drive_link, https://drive.google.com/file/d/1tUJ14IpIHF49EXBQ85tdrEzrWDQ0zZSK/view?usp=drive_link, https://drive.google.com/file/d/1fJarfkIcPR1B2_pMod10R8iO09HqqpEn/view?usp=drive_link, https://drive.google.com/file/d/1LsWkJXPuwBL3HlhbzehJpCOjZ0Gf6Eaq/view?usp=drive_link, https://drive.google.com/file/d/1Nm2j1JAn3tTXxznxdY9Y6bpD_ZNhjy0_/view?usp=drive_link
    • Леонид124
    • karlf
      В общем, сделал образ с родного диска, накатил его на новый диск и докинул туда недостающий файл и всё поехало
    • vo.aand
      Всем привет, я провожу простой расчет напряжений в SolidWorks, решила попробовать так, чтобы получить достоверную картинку, а не только значения по формуле, так вот результирующие в программе получаются в 10^4 раз больше.  Размеры листовой детали L x B x H=6.5 x 1.4 x 0.016 м, размер выреза в детали L x B x H=2.5 x 0.7 x 0.016 м. Размеры модели в м, но при 500 000 Н напряжения получаются очень большими равными 89 670 МПа это максимум, в нейтральной зоне 67 680 МПа. Если считать через формулу то будет так σ=N/F= 500 000 Н/ (0.016 x 1.5) м^2 = 22 321 429 Па= 22,32 МПа Изображение по ссылке: https://disk.yandex.ru/i/jFPT3Yn7W8hlpA.  
    • gudstartup
      я думал вы сами пересчитывали. а про параметры серво они вам ничего не сказали? может спросить отчего медленее едет....
    • ope@gusarm.ru
      производители станка сказали какие поставить в зависимости от шага винта и редуктора. Линейно то правильно считает, значит тут все так должно быть. Если б тут была ошибка то при передвижении на метр ехало больше или меньше.
    • gudstartup
      как считали flexible feed gear а именно 2084\2085 программой?
    • ope@gusarm.ru
    • Guhl
      Посмотреть хотя бы что предлагают. Цены увидеть. Может для себя присмотреть что-нибудь 
    • gudstartup
      нет в ноль только в россии  ушатывают причем в полный и по балансовой стоимости и по морально физическому состоянию. станки по 20 лет круглосуточно работают. вы на реставрацию берете?
×
×
  • Создать...