110 likes | 266 Views
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 )
E N D
VisNow – czytanie danych regularnych • Krzysztof S. Nowiński • visnow@icm.edu.pl
Siatka - struktura+geometria • Siatkaregularnarównoległościenna • Strukturatablicy 1- 2- lub3-wymiarowej (komórkisąodpowiednioodcinkami, czworokątamilubsześciościanami) Do opisu struktury wystarczą jej wymiary, np. 100x128x256
Geometria • Geometria: siatkaprostokątna • 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] • Siatkaró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.DOUBLEi 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 fdim80 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.41 • 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.41 • 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 krzyweA 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 skip12 coord.0 coord.1 coord.2 file=../AVSfld/blntfinq.bin binary skip28 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 VA 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 comppressure_at_mean_sea_levelfloat, unit Pa file 2011Dec02_00/00033binary timestep 0 orography pressure_at_mean_sea_level end timestep 1 pressure_at_mean_sea_level 10_metre_wind end timestep1 10_metre_wind end …… 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