Od ostatniego wpisu udało mi się usprawnić dwa aspekty modelowania. Dodałem tłumienie fal P i S zgodne z modelem PREM oraz przyspieszyłem obliczenia poprzez wykorzystanie wielowątkowości w środowisku matlab.
Wstępną (ze względu na brak czasu na razie jedyną) animację pokazującą rozchodzenie się fal z tłumieniem można zobaczyć poniżej (lub tutaj):
Szukając różnych materiałów dotyczących analizy danach sejsmicznych w środowisku matlab trafiłem na stronę internetową Mike’a Thorne’a – docenta w departamencie geologii i geofizyki uniwersytetu w Utah: http://web.utah.edu/thorne/. Można tam znaleźć między innymi różne animacje pokazujące propagację fal sejsmicznych. Jest między innymi animacja pokazująca model PREM. Skromnie jednak uważam, że moja jest… ciekawsza 🙂
Pracując ostatnio nad symulacją rozchodzenia się fal sejsmicznych natknąłem się na problem związany z wygenerowaniem animacji w środowisku Matlab. We wspominanym przed chwilą opisie można zobaczyć efekt jaki udało mi się uzyskać, czyli animację w wysokiej rozdzielczości.
Matlab oferuje dwie standardowe drogi wygenerowania animacji z serii figur (zawierających np. wykres). Jedna droga to stworzenie obiektu avi i dodawanie do niego kolejnych klatek animacji. Druga metoda to stworzenie zmiennej (struktury) z kolejnymi klatkami i zapisanie jej do pliku avi. Metody różnią się wykorzystaniem pamięci programu i zapewne wydajnością (coś za coś).
Niestety obie metody mają wadę, której nie dało mi się w nich wyeliminować: rozdzielczość i jakość filmu jest marna a na dodatek jego rozmiar ze względu na kiepską kompresję jest ogromny.
Mój pomysł na wygenerowanie animacji jest odmienny. Każdą klatkę filmu zapisujemy do pliku graficznego, nadając plikom kolejne nazwy. Wystarczy użycie funkcji print(). Dla przyspieszenia procesu można nie wyświetlać wykresów na ekranie i rysować w pamięci. W poniższym przykładzie rysujemy 50 wykresów z losowymi punktami i każdy wykres zapisujemy do pliku bez wyświetlania:
figure('Visible','Off') % Otwieramy "ukryte" okno
for i=1:50 % 50 powtórzeń
plot(rand(1,100),rand(1,100),'.'); % Rysujemy 100 punktów
print(gcf, '-r120', '-dpng', [num2str(i) '.png']); % Zapisujemy
% wykres do pliku .png
clf; % Czyścimi okno
end
close all; % Zamykamy okno
Szczegóły funkcji print() można znaleźć w dokumentacji.
Oczywiście to nie koniec przygody. Czas przerobić klatki w film. Bardzo prosto można to zrobić programem VirtualDub. Uruchamiamy program i przeciągamy pierwszą klatkę (ważne są kolejne numery klatek) do głównego okna programu.
W menu “video” możemy ustawić ilość klatek na sekundę “Frame Rate” i kompresję oraz jej parametry “Compression”. Następnie z menu file wybieramy “Save as AVI”. Otrzymujemy gotową animację. Możemy generować obrazu różnej wielkości (rozdzielczości) a co za tym idzie rozdzielczość animacji. Różnica w jakości wyjściowej i potrzebnej pamięci (zarówno w RAM i na dysku twardym) jest ogromna, więc polecam tą metodę.
Kroki w programie Virtual Dub opisałem pobieżnie, ale mam nadzieję, że każdy sobie poradzi.
Jestem mieszkańcem Warszawy od urodzenia. Parę lat temu doceniłem uroki obszarów wiejskich i od tamtej pory każdą wolną chwilę spędzam poza miastem. Niestety zmuszony studiami na wspaniałym Uniwersytecie Warszawskim i pracą muszę do stolicy przyjeżdżać. Od kilku lat regularnie staje się to coraz trudniejsze. Przybywa mieszkańców i samochodów, a komunikacja miejska, drogi i ulice pozostają niezmienione i niewydolne. Godziłem się z takim losem. Niestety ostatnie decyzje władz miasta spowodowały, że moje codzienne próby dotarcia do centrum Warszawy są istnym koszmarem. Nie rozumiem idei “bus pasów”. Tym bardziej nie rozumiem dlaczego mieszkańcom celowo uniemożliwia się płynnego wjazdu na Trasę Łazienkowską. To są tylko pojedyncze przykłady dużego problemu.
Przejdźmy jednak do konkretów – po co napisałem ten list? Otóż nie chcę zwalczać decyzji władz, o których pisałem wyżej. Wiem, że polityk nie wycofa się tak łatwo ze złej decyzji aby nie okazać swojej słabości. Chciałbym zaproponować pewne rozwiązanie mające na celu poprawę warunków życia Warszawiaków, pobudzenie gospodarki i zbudowanie dobrego wizerunku Warszawy za granicą. Rozwój technologii pozwolił na konstruowanie ekologiczny i tanich w eksploatacji samochodów elektrycznych. Pani prezydent próbowała nas ostatnio do takich pojazdów zachęcić otwierając jedną stację ładowania – traktuję to jako niepoważny żart (wyłącznie z powodu ilości). Zachęćmy mieszkańców Warszawy do zakupu i używania pojazdów elektrycznych poprzez zaproponowanie im ulg i przywilejów: jedziesz cichym i niesmrodzącym samochodem elektrycznym? Parkujesz za darmo, możesz jechać bus pasem, możesz ładować swój samochód płacąc za prąd preferencyjne stawki itp.
Zysk dla miasta jest oczywisty: hałas i ekologia. Ale tak na prawdę zyskujemy wszyscy. Taka akcja pobudza popyt na tego typu pojazdy. Rynek zaczyna rosnąć, więc producentom opłaca się wprowadzać coraz to nowe technologie i obniżać ceny tak, żeby więcej ludzi mogło sobie pozwolić na zakup elektrycznego samochodu. Przepływ pieniędzy pobudza gospodarkę. Dostawcy energii elektrycznej powinni (jak RWE w Berlinie) z chęcią wspierać akcję poprzez oferowanie zniżek na prąd do ładowania samochodów, gdyż w przyszłości będzie to ogromny rynek o wielkim potencjale – a wszyscy wiedzą, że aby wygrać trzeba być pierwszym.
Właściciel samochód elektrycznego zyskuje dziś oszczędność na paliwie – to trochę mało, aby zdecydować się na zakup (na razie) bardzo drogiego pojazdu. W momencie gdy zaproponujemy kierowcy dodatkowe przywileje, o których marzy stojąc godzinami w korku, jestem przekonany że zechce kupić samochód elektryczny dla dobra wszystkich mieszkańców – czy jeździmy samochodami, autobusami czy na rowerze tak samo trujemy się spalinami “zwykłych” samochodów.
Mój pomysł jest prosty i logiczny. Mam nadzieję, że uda mi się z nim dotrzeć do władz Warszawy z Panią prezydent na czele.
Z poważaniem,
Marcin Polkowski
P.S. Czytelniku – proszę przekaż link do tego listu do swoich znajomych.
Niektórych dziwi fakt, że na wydziale Fizyki Uniwersytetu Warszawskiego można się zajmować geofizyką, bo jest ona bardziej geo niż fizyką. Okazuje się, że są dwa rodzaje geofizyki: geofizyka i geofizyka. Postanowiłem skierować swoją uwagę w kierunku tej drugiej. Ponieważ z wielu tematów obejmowanych przez geofizykę najbardziej zainteresowała mnie sejsmologia to własnie tym tematem chcę się dalej zajmować.
Jestem fanem poglądu, że z samej teorii to człowiek się niczego nie nauczy postanowiłem wspierać swoją edukację elementami praktycznymi. Niestety, do wykonania doświadczenia związanego z sejsmologią potrzeba niemałych nakładów, więc pierwsze kroki skierowałem do modelowania komputerowego. Podobno można w tej dziedzinie jeszcze dużo zdziałać, więc mam przynajmniej kilka powodów dla których warto.
Ponieważ od około roku jestem miłośnikiem środowiska Matlab, wykorzystałem je do stworzenia swojego modelu.
Krótki wstęp teoretyczny dla (prawie) niefizyków
Model pokazuje kierunki rozchodzenia się fal sejsmicznych w ziemi i nie zajmuje się takimi zagadnieniami jak częstotliwości fal.
Fale sejsmiczne nie rozchodzą się po prostych, ponieważ w środku Ziemi prędkości fal nie są stałe i w modelu jednowymiarowym zależą wyłącznie od głębokości. Fala pokonuje drogę między dwoma punktami taką trasą, aby czas pokonania tej drogi był jak najkrótszy (dla zainteresowanych Prawo Snelliusa, Zasada Fermata).
W miejscach, gdzie prędkości fal zmieniają się wraz z głębokością płynnie sprawa jest dość prosta – promienie (czyli kierunki fal) po prostu sobie skręcają.
W miejscach gdzie gdzie istnieje ostra granica (czyli skokowa zmiana prędkości) dochodzi dodatkowo do zjawiska konwersji fal. W tym miejscu należy wspomnieć, że istnieją różne rodzaje fal sejsmicznych. We wnętrzu Ziemi mamy do czynienia z falami podłużnymi (oznaczane literką P) i poprzecznymi (oznaczane literką S) – dla zainteresowany: Fala sejsmiczna. Fale P i S rozchodzą się z różnymi prędkościami. W momencie gdy na granicę pada fala (P lub S) powstają w danym miejscu 4 fale: odbita P, odbita S, załamana P i załamana S. Z rożnych względów (całkowite wewnętrzne odbicie, zerowa prędkość fal S) czasami powstaje mniej niż 4 fale po konwersji. Dodatkowo energia i amplituda fal po konwersji jest rożna dla każdej z nich, co zależy od własności granicy.
Model
W dopiero co stworzonej pierwszej wersji modelu rozpatruję przekrój przez środek Ziemi czy badam tory promieni w dwóch wymiarach.
Budowę Ziemi (a dokładnie rozkład prędkości) przyjąłem jako jednowymiarową (czyli prędkości fal P i S oraz gęstość zależą wyłącznie od głębokości) według modelu Preliminary Reference Earth Model (PREM) (Dziewonski & Anderson, 1981).
Przyjąłem istnienie 6 granic, na których zachodzi konwersja fal (6368 km, 6346.6 km, 6151 km, 5701 km, 3480 km, 1221.5 km). Dla każdej granicy obliczyłem współczynniki konwersji fal (czyli amplitudy fal powstały w stosunku do amplitudy fali padającej w zależności od parametrów granicy i kąta padania).
Jeden z wyników
Ciekawych wyników z takiego modelu można uzyskać bardzo dużo. Tutaj chcę pokazać jeden z pierwszych (gdyż liczenie trwa bardzo długo) rezultatów – animację.
Realizując opisany model poprzez wygenerowanie w źródle (na głębokości 241 km) 360 promieni fal P i numeryczną symulację ich rozwoju (czyli torów, odbić i załamań) udało mi się stworzyć bardzo ładną animację pokazującą rozchodzenie się fal we wnętrzu Ziemi. Gdyby film poniżej nie działał to można go zobaczyć tutaj. Ponieważ przeciętnie udała mi się legenda wyjaśniam, że kolorem zielonym zaznaczone są fale P a czerwonym fale S.
Moim skromnym zdaniem efekt jest bardzo atrakcyjny :).
Tyle wstępu do problemu – jak dostanę kolejne ciekawe rezultaty na pewno się podzielę. Mam w planie podzielić się również spostrzeżeniami dotyczącymi Matlaba, gdyż nauczyłem się przez ostatnie kilkanaście dni wielu ciekawych rzeczy.
Tytuł jest celowo sprzeczny z moim przekonaniem, że tak na prawdę nie ma czego świętować z okazji zmiany dwóch (tym razem wyjątkowo dwóch) cyferek w kalendarzu. Dzień jak każdy inny a mimo to przeciętny obywatel czuje potrzebę (wysuszaną przez społeczeństwo) do zabawy. Podejrzewam, że sednem tej zabawy jest pożegnanie kiepskiego roku i powitanie nowego który “na pewno będzie lepszy”. Sęk w tym, że robimy to co roku więc są dwie możliwości: albo każdy kolejny rok jest coraz lepszy (a zależność jest wykładnicza), albo to całe to świętowanie jest o przysłowiowy kant dupy…
Na takim skromnym wstępie zakończę swoje marudzenie, gdyż wiem jak mało popularne są niektóre moje poglądy na temat społeczeństwa i jego zachowań.
Przypuszczam, że rok temu obiecałem to samo co obiecam za chwilę, ale tym razem już bez żartów. Pisałem tutaj dużo mniej niż miałem ochotę – cały czas chodzą za mną jakieś fajne i ciekawe tematy i brakuje determinacji do ostatniego kroku – usiąść i napisać. W tym roku obiecuję się poprawić i przelewać na ekran to co mam do powiedzenia i pokazania.
Obowiązek społeczny nakazuje życzyć wszystkim szczęśliwego nowego roku co niniejszym czynię! 🙂
Dla nadania kontekstu przypomnę, że od ponad pół roku korzystam z telefonu komórkowego BlackBerry Bold. Jednym z atutów tego systemu jest fakt, że jest bardzo popularny w USA, dzięki czemu liczący się na rynku gracze pamiętają o tworzeniu swoich aplikacji również w wersji na BB. Mowa głównie o Google, które zapewnia pełną współpracę pomiędzy terminalem a usługami Google. Nie jest inaczej w przypadku aplikacji Google Maps, która bardzo dobrze współpracuje z wbudowanym w urządzenie GPS-em i systemem A-GPS. W aplikacji tej zintegrowana jest usługa Google Latitude, która w Polsce jest jeszcze mało znana.
Google Latitude przesyła informacje o naszym położeniu na serwer i umożliwia udostępnianie tej wiadomości znajomym (a bezpośrednio w programie widzimy na mapie swoich znajomych). Możemy udostępnić taką informację w swoim opisie w Google Talk (status automatycznie się uaktualnia) albo umieścić na mapie na swojej stronie. Dodatkowo Google może pamiętać nasze położenie, dzięki czemu możemy zobaczyć na mapie historię miejsc pobytu i wyeksportować do Google Earth.
Aby nie powodować nadmiernego zużycia baterii aplikacja nie używa GPS gdy jest uruchomiona w tle, tylko korzysta z A-GPS, czyli aproksymuje lokalizację na podstawie informacji o “widzianych” przez telefon nadajnikach GSM. Zwykle dokładność takiego określenia pozycji wynosi od kilkuset metrów do kliku kilometrów. Im więcej nadajników (miasto) tym informacja dokładniejsza.
Przechodząc do sedna sprawy: uruchomiłem wczoraj aplikację u siebie na wsi. Google Maps pokazało kropkę na mapie w prawie idealnym miejscu (+- 20 metrów) i napisało “Your location within 100 meters. Waiting for GPS”. Bez sygnałów z satelitów udało mu się określić “dokładną” pozycję. Krótki test pokazał, że stało się tak dzięki temu, że telefon był w tym czasie podłączony do prywatnego, domowego WiFi (stąd pewnie dokładność 100 metrów odpowiadająca zasięgowi WiFi). Pomyślałem, że dziwne i stwierdziłem że nie będę zawracał sobie tym głowy. Przyjechałem do Warszawy i powtórzyłem test. Bez WiFi lokalizacja jest z dokładnością rzędu 1000 metrów. Włączyłem WiFi i od razu osiągnąłem dokładność 100 metrów (bez GPS!), a kropka oznaczająca pozycję jest na mapie umieszczona w idealnym miejscu. I teraz pytanie: Skąd Google wie gdzie jest moje WiFi? Przyznam, że nie umiem udzielić odpowiedzi na to pytanie. Jestem świadomy, że Google wie o nas wszystkich dużo, ale czy czasami nie za dużo? Skąd oni biorą informacje (oba WiFi podłączone do neostrady w dwóch różnych województwach)?
Może ktoś umie udzielić odpowiedzi na to pytanie? Jeśli ktoś posiada Google Maps, niech spróbuje czy ma taki sam objaw.
Wykonałem “za ciosem” jeszcze jedną próbę: odpaliłem na iPod Touch podłączonym do WiFi Google Maps, ale program stwierdził, że nie potrafi znaleźć mojej lokalizacji.
Zapraszam do podzielenia się własnymi uwagami na ten temat.
W związku z rozwojem firmy iStudio, której jestem współwłaścicielem poszukujemy chętnego do współpracy programisty aplikacji internetowych.
Opis stanowiska
Do zadań osoby na tym stanowisku należeć będzie implementacja i testowanie aplikacji, a następnie ich uruchomienie w środowisku produkcyjnym. Programista Web powinien spodziewać się bezpośredniego kontaktu z klientami i projektantami grafiki przy realizacji ciekawych projektów dla małych i średnich firm. Oferujemy atrakcyjne wynagrodzenie, elastyczny czas pracy oraz możliwość pracy zdalnej.
Blackberry jest urządzeniem, którego idea opiera się na ciągłym dostępie do potrzebnych w pracy informacji: e-mail, kontakty, kalendarz. Są to rzeczy, do których dostęp zapewnia każdy nowoczesny telefon. Blackberry rozszerza wspomniany dostęp do ciągłego utrzymywania aktualnych informacji po stronie urządzenia i serwera. E-mail pojawia się w urządzeniu od razu po pojawieniu się na serwerze (serwer wymusza przesłanie wiadomości – w zwykłym telefonie to on wymusza pobrania nowych wiadomości). Podobnie współdzielone są kontakty i kalendarz. Z poziomy Blackberry można wyszukiwać informacje we wszystkich wiadomościach znajdujących się na serwerze – nie tylko tych pobranych do urządzenia. E-mail, który przeczytamy na urządzeniu zostaje oznaczony jako przeczytany na serwerze. I tak dalej. Super funkcjonalność – prawda?
Jak zwykle istnieje tak zwana druga strona medalu. W praktyce nie jest już tak pięknie. Po pierwsze korzystanie z Blackberry wymaga wykupienia specjalnej usługi u operatora (np. w Plusie mam ją za 19 zł netto – w tym nielimitowany dostęp do sieci z poziomu urządzenia). Nie jest to jednak problem tak znaczący jak fakt, że istnieją dwa rodzaje usługi dostępu do informacji przez Blackberry. BIS i BES:
BIS (Blackberry Internet Service) – usługa którą posiadam – przeznaczony do zastosowania prywatnego i w małych firmach, nie posiadających własnego serwera pocztowego (bądź specjalnego hostowanego). Można skonfigurować sobie do 10 kont e-mail (POP3 i IMAP), z których wiadomości będą pobierane co kilkanaście minut i przesyłane do urządzenia. Nie ma synchronizacji kontaktów, kalendarza, wiadomości przeczytanych itd. Jednym słowem bieda.
BES (BlackBerry Enterprise Server) – przeznaczony dla dużych firm obsługujących pocztę przez Microsoft Exchange lub Lotus Domino. Wymaga specjalnego, drogiego oprogramowania na serwerze. W zamian zapewnia wszystkie udogodnienia, o których wspominałem wcześniej.
Wydawałoby się, że sprawa jest przegrana dla użytkowników indywidualnych nie mogących pozwolić sobie na usługę BES. Na szczęście na przeciw potrzebom wychodzi Google z usługą Gmail. Skonfigurowanie w ramach BIS dostępu do konta Gmail zapewnia od kliku dni (wcześniej nie była dostępna funkcjonalność zaznaczona pogrubieniem) dostęp do następujących funckji:
Poczta dostarczana jest do urządzenia bez opóźnień.
Poczta przeczytana na urządzeniu jest oznaczana jako przeczytana na serwerze.
Poczta wysłana z urządzenia umieszczana jest w folderze wysłane na serwerze.
Wiadomości na urządzeniu prezentowane są w postaci wątków.
Wyszukiwanie z poziomu urządzenia wiadomości z serwera.
Przenoszenie wiadomości do archiwum.
Oznaczanie wiadomości gwiazdką.
Oznaczanie wiadomości jako spam.
Obsługa etykiet z poziomu urządzenia.
Jakby tego było mało pod zainstalowaniu na urządzeniu specjalnej wtyczki do systemu zyskujemy pełną synchronizację kontaktów pomiędzy Gmail a urządzeniem. Wtyczka pozwala również na synchronizację koalendarza z usługą Google Calendar.
Zdaję sobie sprawę, że większość z opisanych funkcji można używać za pomocą specjalnych programów na innych urządzeniach, ale dopiero ich połączenie z obsługą e-mail Push, gdzie e-maile przychodzą na urządzenie szybko jak smsy daje pełną swobodę działania. Dla mnie rewelacja. Mam nadzieję, że jacyś użytkownicy Blackberry potwierdzą moją opinię!
Dzisiaj odkryłem dwie rewelacyjne funkcje Gmaila, które postanowiłem dla porządku opisać w oddzielnych wpisach. Pierwszą jak widać we wcześniejszym wpisie było umożliwienie wysyłana z dodatkowych kont przez IMAP. Druga dotyczy dodatku dostępnego w ramach Laboratorium o nazwie “Odpowiedzi bazujące na szablonach“. Dziś okazało się, że jest to dokładnie funkcja której od dawna szukałem, która została zwyczajnie źle nazwana.
Po pierwsze jej działanie nie dotyczy wyłącznie odpowiednia, a wszystkich edycji wiadomości wraz z tworzeniem nowej. Po drugie ma niewiele wspólnego z szablonami. Uruchomienie funkcji powoduje dodanie dodatkowego menu w oknie edycji wiadomości:
Za pomocą tego menu możemy zdefiniować dowolnie dużo gotowych treści (może być to cały mail, jedno zdanie, podpis – cokolwiek), które później możemy również za pomocą menu umieszczać w czasie edycji wiadomości. Treść jest wstawiana w miejscu, gdzie znajduje się kursor, co jest bardzo wygodne. Wiemy co chcemy osiągnąć, więc po kolei jak to zrobić
Po pierwsze potrzebujemy zdefiniować swoje gotowe treści. Tworzymy w tym celu pustą, nową wiadomość i w jej treści wpisujemy wyłącznie tekst, który chcemy zapisać na przyszłość. Klikamy w nowe menu i wybieramy “nowa odpowiedź bazująca na szablonie”:
Pojawi się okienko, w którym należy wpisać nazwę nowego “szablonu”. Po utworzeniu potrzebnego zestawu tekstów możemy ich swobodnie używać. Podczas edycji ustawiamy kursor w wybranym miejscu i z menu wybieramy, który tekst chcemy wstawić. Do jednej wiadomości można wstawić kilka tekstów.
Możemy zapisać szablon z formatowaniem. Należy tylko pamiętać, aby użyć go gdy w wiadomości mamy włączone formatowanie.
Funkcja jest bardzo potrzebna. Wymaga rozwoju (dla tego należy do Laboratorium). Menu mogłoby być bardziej intuicyjne. No i najważniejsze: nazwy – to nie są szablony. Tak czy inaczej – kolejne dzisiaj brawa dla Google!
24 lutego napisałem na moronach artykuł o moich 5 życzeniach dotyczących Gmail (5 wishes about Gmail). Wielka była moja radość, gdy dzisiaj odkryłem, że pierwsze i najważniejsze życzenie zostało spełnione. Już mówię o co chodziło. Do tej pory mieliśmy możliwość skonfigurowania wielu kont pocztowych (do 5), z których Gmail okresowo pobierał pocztę. Przy każdym z tak skonfigurowanych kont mogliśmy zaznaczyć, że chcemy również z danego konta wysyłać pocztę za pomocą interfejsu Gmail. Problem polegał na tym, że wiadomości wysyłane przez dodatkowe konta trafiały do adresatów rzeczywiście z dobrego adresu e-mail, ale z dodatkową adnotacją (widoczną w niektórych klientach pocztowych). Pole “od” zamiast adresu zawierało notkę: “konto …@gmail.com w imieniu Imię Nazwisko [adres@domena]“. Niby działało, ale do kontaktów biznesowych z klientami jakoś nie pasowało.
Dzisiaj dodawałem nowe konto do swojego głównego konta Gmail i odkryłem pojawienie się przy konfiguracji nowej opcji:
Zaznaczając “Wyślij poprzez serwery SMTP” i poprawnie konfigurując dane serwera zyskujemy możliwość wysyłanie przez interfejs Gmail pełnoprawnych wiadomości poprzez dodatkowe konta. Rewelacja. Dziękuję ci Google!
Aby zmienić konfigurację do konta, które już jest ustawione w Gmail, należy wejść w ustawienia, przejść na zakładkę “konta i importowanie”, a następnie w sekcji “Wyślij pocztę jako” wybrać “edytuj informacje” przy danym koncie.