Program MONITOR służy do śledzenia wyników symulacji molekularnej. Szczegóły impementacyjne oraz organizacja programu zostaną przedstawione w części dokumentacyjnej niniejszej pracy. Rozdział ten ma na celu opisanie sposobu efektywnego posługiwania się programem MONITOR.
Wszelkie rysunki zawarte w pracy - prezentujące wygląd programu głównego, zostały stworzone podczas pracy programu w środowisku OPENWINDOWS wersja 2.0. Program może działać bez żadnych problemów w innych środowiskach, np. X-WINDOWS wersja 5, jednak wygląd poszczególnych elementów jak i samego programu głównego może się różnić od tego, który jest pokazany w mojej pracy.
Generalne założenia towarzyszące projektowaniu programu MONITOR dotyczyły jego niezależności i możliwości współpracy z różnymi programami symulacyjnymi MD. Zmiany wprowadzone do programu MD powinny być jak najmniejsze i skupione w jednym fragmencie kodu. Zmodyfikowany program symulacyjny powinien również pracować w trybie tradycyjnym ( tj. bez obecności programu MONITOR). Program MONITOR może być uruchomiony i przerwany w dowolnej chwili pracy programu symulacyjnego.
W trakcie śledzenia symulacji, zbierania i wyświetlania wyników, programy komunikują się poprzez plik. Sposób ten został wybrany ze względu na to, że program symulacyjny i tak produkuje plik z danymi potrzebnymi do ew. dalszej obróbki Off line. Jest to plik ASCII, w którym kolumny opisują przebiegi czasowe poszczególnych zmiennych. Każda kolumna może być opatrzona nazwą (użytą w opisie osi wykresów).
;1-a linia komentarza ;2-a linia komentarza ... ;n-ta linia komentarza <nazwa 1-ej kolumny> <nazwa 2-ej kolumny> ... <nazwa m-tej kolumny> <dana 1.1> <dana 1.2> ... <dana 1.m> <dana 2.1> <dana 2.2> ... <dana 2.m> ... ... ... <dana n.1> <dana n.2> ... <dana n.m> <eof>Początkowe linie zaczynające się znaku ``;'' są traktowane jako komentarz i są opuszczane podczas czytania pliku.
Bezpośrednio za liniami komentarza, znajduje się wiersz z nazwami
kolumn. Poszczególne nazwy są oddzielone białymi znakami.
Program MONITOR po wczytaniu tej linijki tworzy na jej podstawie w
ramce z nazwami osi przyciski o nazwie <nazwa 1-ej kolumny>
, <nazwa 2-ej kolumny> , ..., <nazwa m-tej
kolumny> (funkcja read_names_of_column()).
Ponieważ nazwy kolumn są rozdzielane białymi znakami, dlatego w
nazwie kolumny nie może wystąpić żaden biały znak.
Następne linijki, aż do końca pliku zawierają dane. Dane te
są pogrupowane kolumnami tzn. w kolumnie o nazwie <nazwa i-tej
kolumny> znajdują się liczby charakteryzujące wymieniony
``i-ty'' parametr symulacji. Dane te są czytane przez program i na ich
podstawie rysowany jest wykres.
Program MONITOR uruchamiamy poleceniem: monitor [<plik z danymi>] [-<PID>]
Po uruchomieniu, program ładuje automatycznie podany plik, inicjuje
połączenie przez kolejkę komunikatów z procesem o numerze
<PID>
i wyświetla fragment wykresu utworzonego przez punkty, których
współrzędne znajdują się w pliku wejściowym w
kolumnie pierwszej oraz automatycznie przechodzi
do stanu Off line-Unfixed (podrozdział 2.1.4).
Jeżeli przy wywołaniu
programu MONITOR
nie podano nazwy pliku z danymi, pierwszą czynnością powinno
być
załadowanie pliku w sposób podany w dalszej części
opracowania.
Rysunek 2.1 pokazuje wygląd głównego okna programu. Okno to składa się z następujących elementów:
Sterowanie programem wyświetlającym odbywa się za pomocą przyszpilanego menu, dostępnego po naciśnięciu w obszarze graficznym prawego klawisza myszy. Aby wybrać daną pozycję należy nakierować kursor na daną pozycję i przycisnąć lewy klawisz myszy. Jeżeli dana pozycja posiada przy swojej nazwie symbol grota strzałki oznacza to, że do tego symbolu jest dołączone podmenu. Naciskając prawy klawisz myszy, powodujemy rozwinięcie podmenu. Naciśnięcie lewego klawisza myszy na wymienionej pozycji powoduje wybranie pierwszego elementu podmenu, bez rozwijania go.Główne menu ma 5 opcji. Oto ich ogólny opis:
Opcja ta powoduje zmianę statusu programu z Off line, na On line (śledzenie pliku danych) i na odwrót.
Opcja ta powoduje zmianę statusu wykresu z Unfixed (zmienna skala wykresu, dostosowująca się do danych) na Fixed (stała skala wykresu) i na odwrót.
Służy ona do wczytania pliku z danymi. Otwiera okienko pomocnicze, w którym wpisujemy nazwe pliku z danymi. Po otwarciu pliku z danymi następuje wczytanie pierwszej porcji danych.
Otwiera nowe podmenu, w którym można ustawiać dodatkowe parametry, takie jak:
Ustala numer kolumny wyświetlany na osi Y. Defaultowo jest wyświetlana pierwsza kolumna.
Ustalenie maksymalnej i minimalnej wartości wyświetlanej na osi Y, dla stanu Fixed.
Otwiera okno pomocnicze w którym można zmieniać inne parametry programu, takie jak: czy wartości na osi X mają być uporządkowane rosnąco, okres odświeżania wykresu, miejsce rozpoczęcia ponownego wyświetlania wykresu.
Wysłanie danych do procesu sterowanego.
Wywołanie tej opcji powoduje zakończenie pracy programu.
Rozdział ten jest uzupełnieniem poprzedniego. Zawiera on szczegółowe informacje dotyczące sposobu posługiwania się programem.
Wybierając opcję On lineÓff line zmieniamy status programu na przeciwny. Po uruchomieniu programu program jest automatycznie przechodzi do stanu Off line. W tym stanie są możliwe następujące działania:
W stanie On Line, co ustalony kwant czasu następuje wczytanie kolejnej grupy współrzędnych, po czym następuje uaktualnienie wykresu.
Opcja Fixed/Unfixed pozwala na zmianę statusu wykresu. W stanie Unfixed (przyjętym domyślnie) wykres jest tworzony w taki sposób , aby wypełniał on w maksymalnym stopniu powierzchnię okienka. Wczytanie nowej porcji danych powoduje natychmiastową zmianę maksymalnych i minimalnych wartości osi Y, tak aby dokładność wykresu była jak największa. Jeżeli chcemy aby wczytanie nowej porcji danych nie powodowało zmiany krańcowych wartości osi Y ( za wyjątkiem sytuacji, gdy współrzędna Y danego punktu wykracza poza ten przedział); w takim przypadku należy wybrać opcję Fixed. Dodatkowo w stanie Fixed mamy możliwość ustalenia wartości krańcowych osi Y (Opcja Y axis limit).
Pozycja Directory określa katalog z którego będzie wczytywany plik z danymi. Jeżeli podany katalog nas nie zadawala, należy skasować podaną nazwę (bądź jej część) klawiszem Delete (Back Space), a następnie wpisać nową i wcisnąć klawisz Return.
Po określeniu nazwy katalogu, w wierszu File wpisujemy nazwę pliku z danymi dla programu. Nasz wybór zatwierdzamy klawiszem Return, bądź przyciskiem Load w okienku pomocniczym.
Jeżeli podany plik nie istnieje, podaliśmy złą nazwę pliku lub dany plik nie jest dostępny, w takim przypadku w obszarze stopek zostanie wyświetlony odpowiedni komunikat.
Wywołując podopcję Set X axis values lub Set Y axis values powodujemy otwarcie okna zawierającego nazwy parametrów symulacji, zawarte w pliku z danymi (Rysunek 2.3). Naciskając lewy klawisz myszy na nazwie wybranego parametru, powodujemy natychmiastową zmianę wartości wyświetlanych na danej osi. Program automatycznie przerysowuje cały wykres, wypisując nazwę parametru symulacji wraz z jednostką (o ile takowa była podana w pliku danych) nad daną osią.
Wybranie podopcji Set Others otwiera okienko parametrów programu (rysunek 2.5). Okno to składa się z trzech linii. Każdy parametr znajduje się w osobnej linijce.
Parametr Sort X axis określa czy wartości na osi X mają być posortowane rosnąco czy też nie. Jeżeli sortowanie jest wyłączone kolejne wartości na osi X są umieszczane według porządku ich występowania w pliku wejściowym. Parametr ten można zmieniać, wciskając lewy klawisz myszy na klawiszu Yes (jeżeli sobie życzymy sortowania wartości na osi X) lub No (w przeciwnym przypadku.). Defaultową wartością tego parametru jest: ``No Sort''.
Parametr Period mówi jaki jest odstęp czasowy pomiędzy kolejnymi aktualizacjami wykresu. Okres aktualizacji jest wyrażony w sekundach. Można go zmieniać wpisując odpowiednią wartość do panela numerycznego, występującego po słowie Period [s], bądź wciskając lewym klawiszem myszy przyciski potencjometrów , umiejscowione z prawej strony panela numerycznego. Defaultowo wartość parametru Period wynosi 5 sekund.
Ostatnia linia w oknie parametrów zawiera 4 przyciski, służące do zmiany miejsca od którego ma się rozpocząć ponowne wyświetlanie wykresu (w stanie Off line). Przyciski te mają następujące znaczenie:
Aby tego dokonać należy:
Ten rozdział jest poświęcony krótkiemu omówieniu mechanizmu komunikacji zastosowanego w programie MONITOR. Komunikacja została zorganizowana przy pomocy mechanizmu IPC (Inter-Process Communication), a konkretnie w oparciu o kolejki komunikatów (messages).
Kolejki komunikatów są praktycznym mechanizmem w środowiskach sieciowych. Proces zapisuje do ``skrzynki pocztowej'' komunikat przeznaczony dla innego procesu. Jeżeli proces czytający trafia na pustą skrzynkę, to zawiesza się w oczekiwaniu na komunikat (analogicznie proces wysyłający, natrafiający na pełną skrzynkę). Warto zauważyć, że kolejka nie jest typu FIFO.
Więcej informacji na temat kolejek komunikatów i innych mechanizmów komunikacji w systemie UNIX zostanie podanych w części dokumentacyjnej niniejszego opracowania.
Aby program dokonujący symulacji mógł otrzymywać dane sterujące od programu wyświetlającego wyniki, należy skorzystać z funkcji: void init_queue( int mode ) i int leave_queue( void ) oraz ze zmiennej, która jest zadeklarowana następująco: double *New_data. Deklaracje podanych funkcji oraz zmiennej są zawarte w pliku: com.h. Plik ten należy dołączyć do programu symulacji instrukcją: #include. Natomiast plik com.c zawiera definicje wymienionych funkcji.
Aby więc korzystać z funkcji komunikacyjnych należy w programie symulacyjnym umieścić następujące instrukcje i funkcje:
... #include "com.h" ... /* na poczatku pliku umieszczamy */ New_data=&<zmienna sterowana>; signal(SIGUSR1,rcv_data); init_queue(Q_CLIENT); ... /* przed wyjsciem z programu umieszczamy funkcje */ (void)leave_queue() ...
W miejsce symbolu <zmienna sterowana>, należy
wpisać nazwę zmiennej, której wartość ma być zmieniana
przez program wyświetlający wyniki.
Dołączenie funkcji komunikacyjnych do programu symulacyjnego w FORTRANIE jest również proste. Aby tego dokonać należy:
#include "com.h"
void FUNKCJA1_(argument)
double *argument;
{
New_data = argument;
signal(SIGUSR1,rcv_data);
init_queue(Q_CLIENT);
}
void FUNKCJA2_()
{
(void)leave_queue();
}
...
C BEGIN OF PROGRAM
CALL FUNKCJA1(<zmienna sterowana>)
...
C END OF PROGRAM
CALL FUNKCJA2()
Przykładowy przebieg trwa 1000 kroków czasowych, co przy długości
kroku dt =
s daje 10ps. W kroku 300 i 600 temperatura układu jest
przeskalowana odpowiednio do 580K i 730K (użyta opcja Send w programie
MONITOR).
Przebieg temperatury przedstawiony jest na rysunku 2.8. Reakcja energii potencjalnej i całkowitej układu pokazana jest na rysunku 2.9 i 2.10.
Przykładowa symulacja prowadzona jest w pudle obliczeniowym o zmiennej objętości, fluktuującej tak by zachować stałe średnie ciśnienie wewnętrzne układu. Zmienną objętość pudła obliczeniowego przedstawiono na rysunku 2.11.
Możliwość wyboru dwóch dowolnych zmiennych do przedstawienia na osi X i Y pozwala np. na pokazanie zależności energii potencjalnej układu w funkcji temperatury (rysunek 2.12).