Сохранять созданные gm sh узлы и элементы в std :: vector или другой контейнер - PullRequest
0 голосов
/ 19 апреля 2020

Я использую гм sh C ++ API как часть более крупного проекта оптимизации. Все, что мне нужно для gm sh, - это для меня sh несколько полигонов на каждой итерации для проведения анализа методом конечных элементов.

Согласно учебникам , однажды меня sh экземпляр генерируется, его можно сохранить в файл .msh с помощью метода write(), например:

gmsh::initialize();
// ...
// Geometry definition
// ...
gmsh::model::mesh::generate(2);
gmsh::write("myfile.msh");

А в файле .msh я вижу все узлы, элементы и другая информация.

Теперь, как я уже упоминал выше, мне нужен только вывод gm sh, чтобы провести некоторый анализ с некоторыми функциями, которые я уже написал, и которым мне нужно только передать std::vector или Eigen::Vector, содержащий узлы и векторы.

Один (неэффективный) способ сделать это, конечно, экспортировать файл .msh, а затем проанализировать его, чтобы создать std::vector out узловой информации. Я ищу способ просто получить доступ к узлам и элементам, чтобы я мог сохранить их в std::vector (или Eigen::Vector) напрямую.

Есть ли способ избежать выгрузки всего в локальный файл ? Я знаю, что могу перепроектировать эту операцию, пройдя метод write() и посмотрев, как узловая информация сохраняется в файле, но:

  1. Мне кажется, что должна быть какая-то функция API, которая служит именно этой цели
  2. Я бы предпочел не обращаться к огромным исходным файлам, чтобы самостоятельно выяснить эту информацию, так как мне нужно, чтобы это программное обеспечение было завершено как можно скорее
...