Экспорт векторных данных и неструктурированных тетраэдрических данных me sh из MATLAB в VTK - PullRequest
0 голосов
/ 20 февраля 2020

Я работаю с MATLAB для обработки данных, и целью является использование paraview для постобработки. У меня есть неструктурированный тетраэдрический элемент me sh, состоящий из 3 векторов-столбцов для x, y и z и матрицы связности № Ele x 4. Кроме того, у меня есть некоторые узловые векторные данные поля магнетизма c, которые представлены в виде векторов столбцов с узлами длины № для Bx, By, Bz и скалярного поля B_mag, которое также имеет такую ​​же длину.

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

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

VTKwrite кажется наиболее популярным решением для экспорта в VTK. Код вида:

vtkwrite(filename,'unstructured_grid',x,y,z,'vectors','B_field',Bx, By, Bz,'scalars','B_mag',B_mag)

Работает над выводом узловой информации и позволяет визуализировать paraview, но структурная информация из тетраэдрической сетки связности явно не включена - результат в paraview представляет собой просто серию точки. «3D-векторы Matlab для Paraview (через двоичный файл VTK)» работают почти так же, хотя в некоторых визуализациях они имеют странные связи между строками. VTKwrite имеет альтернативную опцию для включения тетраэдрических сеток в качестве 'полиданных':

vtkwrite(filename,'polydata','tetrahedron',x,y,z,ele)

Но это не содержит данных решения, с которыми я sh смогу покрасить карту. Прочитав GITHUB, я подумал, что включение обоих наборов команд, например:

vtkwrite(filename,'polydata','tetrahedron',x,y,z,ele,'unstructured_grid',x,y,z,'vectors','B_field',Bx, By, Bz,'scalars','B_mag',B_mag)

, поможет, но это просто генерирует один из двух предыдущих типов файлов в зависимости от того, в каком порядке даны команды. Эти два файла - nodal_data и poly_data в прикрепленном zip на странице matheworks. Экспорт рабочей области в виде workspace.mat также предоставляется по ссылке на вопрос по математике.

Если это не так, запишите файл BINARY VTK для тетраэдрической сетки со скалярными и векторными данными, что кажется идеальным решением. Использование учебного сценария и чтение комментариев к функциям дает мне:

filename=(['B_analytic_',num2str(n),num2str(m)]);
data_title='B_target over tetras';
data_struct.type = 'scalar';
data_struct.name = 'B_mag';
data_struct.data = B_mag';
data_struct(2).type = 'vector';
data_struct(2).name = 'B_components';
data_struct(2).data = [Bx;By;Bz]';
flipped = false; %True causes function to crash    
vtk_write_tetrahedral_grid_and_data(filename,data_title,nodes(:,opt_nodes)',opt_ele',data_struct,
...flipped);  %Transposed used to ensure correct data format

Однако полученный файл просто вылетает при открытии в paraviewer. Первые два VTK могут быть рассмотрены в считывателе MATLAB как организованные списки чисел (т.е. координаты и связности), этот открывается как символы и прочее.

Я знаю, что это то, что может быть достигнуто, но я действительно изо всех сил пытается реализовать любое из решений, которые я нашел. Будем весьма благодарны за любые советы или указания, чтобы правильно экспортировать мои данные в .VTK (или что-то еще, что может прочитать параграф).

...