Hình dung của lưới tứ giác & octree


10

Cái gọi là lưới quadtreeoctree khá hấp dẫn cho các ứng dụng đòi hỏi phải tinh chỉnh lưới thích ứng. Chúng là ví dụ được sử dụng trong GerrisParamesh . Có ai biết một định dạng tệp tốt cho các lưới như vậy và hỗ trợ phần mềm trực quan không? Xem thêm câu trả lời này trong Câu hỏi thường gặp về Gerris. Ứng cử viên tiềm năng duy nhất mà tôi hiện đang biết đến là lớp VTK HyperOctree , nhưng dường như gần như không có tài liệu nào.

Như một ví dụ cụ thể về lưới, hãy xem xét lưới octree được tinh chỉnh thưa thớt, bao gồm hộp, mỗi hộp chứa ô. Các chiến lược hiện tại của tôi trong Visit / Paraview là:1048×8×8=512

  1. Viết lưới dưới dạng tệp VTK không cấu trúc. Điều này rất tốn kém cho các bộ dữ liệu lớn hơn và không khai thác 'cấu trúc' của quad / octree.
  2. Thu thập các 'hộp' lân cận trong cây thành các khối lớn hơn và viết lưới có cấu trúc khối. Điều này liên quan đến khá nhiều mã bổ sung và mất thông tin kết nối được nhúng trong quad / octree.

Cập nhật Nếu hiện tại không có định dạng khả thi để viết và hiển thị trực tiếp lưới octree, tôi sẽ đánh giá cao các đề xuất cho định dạng tệp có thể được sử dụng để viết octree dưới dạng lưới có cấu trúc khối. Lý tưởng nhất là định dạng này:

  1. Có một định nghĩa / triển khai tương đối đơn giản, nguồn mở lý tưởng và có khả năng tương thích C / Fortran.
  2. Có thể xử lý hiệu quả một số lượng lớn các khối lưới (ví dụ 1000 trở lên).
  3. Cho phép dễ dàng chỉ định kết nối của các khối lưới, đặc biệt là tại các ranh giới sàng lọc.

Tôi hiện đang sử dụng Silo cho mục đích này, nhưng tôi đang tìm kiếm thứ gì đó đạt điểm cao hơn ở ba điểm trên (nhỏ hơn, nhanh hơn, đơn giản hơn).


1
Tại sao lưới không cấu trúc tạo ra quá nhiều dữ liệu? Nó sẽ chỉ là 5 triệu tế bào. Đó là một bộ dữ liệu khá nhỏ để tôi hình dung trong Visit hoặc Paraview.
Wolfgang Bangerth

Bởi vì tọa độ và kết nối được chỉ định cho mỗi ô, thay vì chỉ một lần trên mỗi hộp (chứa ví dụ 512 ô). Đối với các bộ dữ liệu lớn hơn (ví dụ, 20 triệu ô trở lên), trực quan hóa trở nên chậm hơn nhiều so với lưới có cấu trúc khối, đặc biệt nếu các phần quan trọng của lưới có cùng mức tinh chỉnh.
Jannis Teunissen

Có lẽ danh sách các định dạng tệp được hỗ trợ trong Lượt truy
Jannis Teunissen

1
Cũng có thể nhìn vào những gì CHOMBO, SAMRAI vv làm cho trực quan?
Abhilash Reddy M

1
Thêm BoxLib vào danh sách. Họ đã phát triển một gói có tên AMRVis để trực quan hóa dữ liệu AMR. Mã này có sẵn từ trang web LBL.
Abhilash Reddy M

Câu trả lời:


2

Trong trường hợp của tôi khi tôi đang thực hiện sàng lọc đa cấp, tôi thường viết các tệp lưới ở các cấp khác nhau. Thông thường mức 0 là một lưới thô cơ sở vẫn cố định. Và đối với cấp 1 trở lên, tôi đã sử dụng các tệp khác nhau cho các bản vá khác nhau. Giả sử nếu bạn có 5 bản vá tốt ở cấp 1, chiến lược của tôi là viết năm tệp khác nhau vào cuối chương trình của tôi, đại loại như Level_1_Patch_1, Level_1_Patch_2 ... có thể được thực hiện một cách linh hoạt trong C (không bao giờ hoạt động ở Fortran).

        char filename1[64];
        sprintf(filename1, "Patch%d.dat", patch_number);

        FILE *file;
        file= fopen(filename1, "wb");

Tôi nên đề cập ở đây rằng tôi đã sử dụng một sự khác biệt hữu hạn, hệ thống lưới có cấu trúc.

Vì vậy, một khi tôi đã có tất cả các cấp độ và các tệp .PLT hoặc .DAT của chúng. Tôi nhập tất cả chúng trong TecPLOT. Ví dụ, khi tôi đang viết mã hai cấp của mình với một vài bản vá tốt ở cấp 1, lưới của bạn sẽ trông như thế này trong Tecplot.

nhập mô tả hình ảnh ở đây

Tôi không quen lắm với việc xử lý các lưới không có cấu trúc nhưng các lưới có cấu trúc được xử lý tốt trong Tecplot


Thật thú vị khi đọc về cách tiếp cận của bạn, nhưng điều này dường như không khả thi đối với một quãng tám lớn, sau đó bạn sẽ phải viết và đọc hàng ngàn tệp, thường khá chậm.
Jannis Teunissen

1
@JannisTeunissen: Nếu bạn đang tìm kiếm một giải pháp có cấu trúc khối, đối với Tecplot, tất cả các khối có thể được ghi vào cùng một tệp dưới dạng "Vùng" riêng biệt (thuật ngữ tecplot). Chúng không phải là các tệp riêng biệt. Tuy nhiên, I / O song song không có. Bộ dữ liệu lớn sẽ bị sặc. Các tệp tecplot có thể được tải vào ParaView mặc dù (Tecplot là độc quyền). Định dạng ascii rất đơn giản. Với một số nỗ lực, bạn có thể trực tiếp viết các tệp nhị phân ở định dạng tecplot. Có một thư viện chính thức tên là TecIO mà bạn có thể liên kết mã của mình để tạo các tệp dễ dàng hơn.
Abhilash Reddy M

Tôi không nghĩ rằng nó sẽ hoạt động tốt hơn cách tiếp cận hiện tại của tôi với Silo, mà (quan trọng) là nguồn mở. Lưu ý rằng các tệp ASCII không thực sự khả thi cho vấn đề này.
Jannis Teunissen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.