VisNow – czytanie danych regularnych Krzysztof S. Nowiński visnow@icm.edu.pl
Siatka - struktura+geometria Siatka regularna równoległościenna Struktura tablicy 1- 2- lub 3-wymiarowej (komórki są odpowiednio odcinkami, czworokątami lub sześciościanami) Do opisu struktury wystarczą jej wymiary, np. 100x128x256
Geometria Geometria: siatka prostokątna Siatka równoległościenna Najprostszy opis geometrii – brak opisu: Punkt (i,j,k) ma współrzędne i,j,k: Często wystarczający opis geometrii: rozmiary Wystarczy podać zakresy, np. [-1,1]x[-1,2]x[0,4] Siatka równoległościenna Punkt początkowy p0(x0,y0,z0) Wektory v0, (v1, v2) w zależności od wymiaru siatki określające komórkę elementarną. Punkt o indeksach (i,j,k) będzie leżał w p0+i*v0+j*v1+k*v2) Alternatywnie można podać wektory w0, (w1, w2) określające krawędzie całej siatki. Będzie wtedy np. v0=w0/(dim0-1) Siatka równoległościenna nieprostokątna pojawia się zwykle w krystalografii a niekiedy w obrazowaniu Siatka dowolna Opis: Tablica coords[nSpace*dim0(*dim1*dim2)] Wszystkie współrzędne muszą być explicite podane (przeczytane z pliku)
Pole: siatka + wartości Wartości są przechowywane w komponentach name – nazwa używana przy wyborze komponenty type – typ danych w tablicy - od DataArray.BOOLEAN do DataArray.DOUBLE i DataArray.STRING veclen – 1 gdy dane skalarne, >1 gdy wektorowe nData – liczba elementów danych Dane w tablicy o długości veclen * nData Dodatkowo: Unit – nazwa jednostki fizycznej (przy tekście legendy barwnej) User data – do dowolnego wykorzystania przez użytkownika
Przykład I – prościej już się nie da #VisNow regular field dims 100 100 100 component ear byte file ear_uniform.vnd binary ear Wiersz obowiązkowy – VisNow rozpoznaje po nim plik Konieczne: pole będzie miało wymiary 100x100x100, czyli 106 punktów I jedną komponentę typu byte Plik binarny leży w tym samym katalogu I zawiera tablicę wartości naszej komponenty Wynik: najprostsza siatka sześcienna z danymi bajtowymi
Przykład II – trochę za mało danych #VisNow regular field fdim 80 80 30 x -1 1 y -1 1 z -1 1 component ear byte file=../AVSfld/ear.dat binary ear Wiersz obowiązkowy – VisNow rozpoznaje po nim plik Konieczne: pole będzie miało wymiary 80x80x30, Wypełni kostkę [-1,1]x[-1,1]x[-1,1] I jedną komponentę typu byte Plik binarny leży w sąsiednim katalogu I zawiera tablicę wartości naszej komponenty Wynik: prostopadłościenna siatka niejednorodna
Przykład III – z ukosa i nie od samego początku #VisNow regular field field CT_sample, dim 156 366 170 Origin 0 0 0 v0 1 0 0 v1 0 1 0 v2 0.4 0.4 1 component density byte file=../volume/CTsample.dat binary skip=13 density Wiersz obowiązkowy – VisNow rozpoznaje po nim plik Tym razem pole ma nazwę Punkt początkowy I wektory wyznaczające komórkę jednostkową I jedną komponentę typu byte Plik binarny leży w sąsiednim katalogu I zawiera tablicę wartości naszej komponenty Ale na początku trzeba pominąć 13 bajtów Wynik: siatka ukośnokątna
Przykład III – z ukosa i nie od samego początku #VisNow regular field field CT_sample, dim 156 366 170 Origin 0 0 0 v0 1 0 0 v1 0 1 0 v2 0.4 0.4 1 component density byte file=../volume/CTsample.dat binary skip=13 density Wiersz obowiązkowy – VisNow rozpoznaje po nim plik Tym razem pole ma nazwę Punkt początkowy I wektory wyznaczające komórkę jednostkową I jedną komponentę typu byte Plik binarny leży w sąsiednim katalogu I zawiera tablicę wartości naszej komponenty Ale na początku trzeba pominąć 13 bajtów Wynik: siatka ukośnokątna
Przykład IV – wszystko krzywe A ile danych… #VisNow regular field field bluntfin, dim 40 32 32, coords component density float component momentum float, vector 3 component stagnation float file=../AVSfld/blntfinx.bin binary skip 12 coord.0 coord.1 coord.2 file=../AVSfld/blntfinq.bin binary skip 28 density momentum.0 momentum.1 momentum.2 stagnation Tym razem pole ma nazwę, wymiary i współrzędne czytane z pliku 3 komponenty float, w tym jedna wektorowa Plik binarny w sąsiednim katalogu 12 początkowych bajtów opuszczamy Kolejno czytamy pierwszą współrzędną wszystkich punktów, Następnie drugą i trzecią współrzędną W drugim pliku opuszczamy 28 bajtów i czytamy kolejno komponentę density, 3 składowe komponenty momentum i komponentę stagnation Każdy wiersz po wierszu file opisuje sekcję pliku Wynik: siatka krzywoliniowa
Przykład V A czas płynie… #VisNow regular field field met, dim 433 601 x -216 216 y -300 300 comp orography float, unit m comp 10_metre_wind float, veclen 2, unit m/s comp pressure_at_mean_sea_level float, unit Pa file 2011Dec02_00/00033 binary timestep 0 orography pressure_at_mean_sea_level end timestep 1 10_metre_wind …… Tym razem pole ma nazwę, zakres (prostokąt) i trzy komponenty typu float, w tym jedną wektorową z podanymi jednostkami fizycznymi Plik binarny zawiera kolejne kroki czasowe dla różnych chwil o różnej zawartości Uwaga: ponieważ sekcja zawiera po prostu 10_metre_wind, będzie czytana kolejno punktami: v0x,v0y,v1x,v1y,v2x,v2y…. – tak, jak jest przechowywana w pamięci
Dziękuję za uwagę! visnow@icm.edu.pl