Strona Tytułowa
Wprowadzenie
Opis Fourier'a
Metody numeryczne
Założenia programu
Podsumowanie
Załączniki
Bibliografia
Aplet symulacyjny
Program symulacyjny HEAT

Najważniejszą część pracy stanowi program symulacyjny (aplet) demonstrujący zagadnienie przewodnictwa temperaturowego ciał stałych.

 

   Model obiektowy programu

Programowanie obiektowe zbliża się do sposobu, w jaki człowiek pojmuje otaczającą go rzeczywistość. Praca mózgu ukierunkowana jest na posługiwanie się definicjami obiektów i wnioskowaniem na ich podstawie o otoczeniu, nawet jeśli fizyczne egzemplarze obiektów nie posiadają wszystkich wyróżniających je cech. Szukając na przykład krzesła w nie znanym nam pomieszczeniu, patrzymy, czy znajduje się tam przedmiot, który ma płaszczyznę do siedzenia i oparcie, a więc dokonujemy pewnej klasyfikacji wszystkich przedmiotów. Na podstawie cech,  jakimi krzesło się wyróżnia spośród innych przedmiotów dokonujemy użytecznego dla nas wyboru bardziej wygodnego miejsca do siedzenia. Taki sposób myślenia odwzorowuje analiza obiektowa, w której obiekty wyróżniane są z otoczenia na podstawie przypisywanych im cech. Ukrywanie wewnętrznych mechanizmów budowy i funkcjonowania obiektów, przyczynia się do lepszego zrozumienia wymagań projektowych, bardziej przejrzystych projektów i ułatwia utrzymywanie systemów. Jednak chyba najważniejsze w projektowaniu obiektowym jest to, iż pozwala ono na myś lenie o danym problemie w kategoriach otaczającej nas rzeczywistości, a nie pojęć stosowanych w technice komputerowej.

Cykl rozwoju oprogramowania obiektowego ma charakter ewolucyjny. Proces rozwoju systemów obiektowych polega na ciągłym, iteracyjnym doskonaleniu szczegółów powstałych klas, obiektów oraz związków między nimi. Proces ten różni się od tradycyjnych sposobów rozwoju oprogramowania tym, że nie występują w nim wyraźne granice oddzielające analizę projekt i implementację.

 

Cykl rozwoju oprogramowania obiektowego można podzielić na fazy:

  • wyróżnienie obiektów/klas
  • określenie zachowań i metod
  • zdefiniowanie klas
  • zdefiniowanie metod
  • projekt architektury obiektowej
  • projekt szczegółowy
  • implementacja klas
  • implementacja programu
  • testowanie

 

Wielu twórców oprogramowania zastanawiało się nad różnymi formami prowadzenia analizy  i zapisywania jej wyników. Po pewnym czasie powstał pewnego rodzaju standard - ujednolicony język modelowania (Unified Modeling Language).  UML jest wizualnym językiem modelowania, którego używa się do tworzenia zorientowanych obiektowo modeli, które następnie można implementować za pomocą wielu różnych języków programowania, takich jak C++, Smalltalk, Ada lub Java.

 

Pełny model UML zawiera sześć typów schematów:

  • schematy klas (class diagramas) - informują o istnieniu poszczególnych klas i o występujących między nimi zależnościach,
  • schematy przypadkow użycia (use cases diagrams) - używane do okreś lania funkcjonalności i działania całej aplikacji współdziałającej z jednym lub większą ilością użytkowników lub części programu  wykorzystujących tę funkcjonalność,
  • schematy interakcji (interaction diagrams) - to schematy sekwencji i schematy wspołdziałania, z których pierwsze uwydatniają przebieg interakcji w czasie, a drugie - sekwencję komunikatów implementujących daną operację lub transakcję,
  • schematy komponentów (component diagrams) - stosowane do przedstawiania zależności występujących między pakietami komponentów a pojedynczymi kom
  • schematy stanów (state diagrams) - zwane także schematami zmiany stanów, przedstawiają przestrzeń stanów danej klasy, zdarzenia, które powodują przejście z jednego stanu do innego, a także działania wynikające ze zmiany stanu,
  • schematy przypisań (deployment diagrams) - pojedynczy schemat pokazujący sposób przypisania procesów do procesów.

 

Istnieje wiele narzędzi programowych pomagających w tworzeniu modeli graficznych w oparciu o język UML. Zwykle określa się je skrótem CASE (Computer-Aided Software Engineering). Pomagają one informatykowi w taki sam sposób, w jaki narzędzia CAD pomagają architektowi. Niektóre z najpopularniejszy programów można znaleźć na stronach producentów:

Więcej na temat użycia UML do projektowania oprogramowania można znaleźć w pracach [16, 18].

 

    1.2 Charakterystyka programu

Program symulacyjny stworzony jest w oparciu o coraz powszechniej stosowany w środowiskach akademickich język programowania Java.

 Java umożliwia między innymi pisanie programów wykorzystujących sieć WWW, które jeśli uruchamiane bezpośrednio ze stron internetowych, nazywają się apletami. Stosowanie Javy pozwala na wzbogacenie stron internetowych  dodatkową funkcjonalnością, począwszy od prostych animacji internetowych a skończywszy na symulacjach numerycznych, czy zdalnej obsłudze eksperymentów. Java jest językiem obiektowym podobnym do C++, tym zapewne, jak i szybkim rozwojem internetu, można tłumaczyć wielką popularność Javy w kręgach akademickich. Jeżeli jeszcze weźmie się pod uwagę, że do programów w Javie można w sposób stosunkowo prosty podłączać obiekty (biblioteki) napisane w innych językach programowania (np. ogromna biblioteka CERNu procedur fortranowych), staje się oczywistym fakt wielkiego zainteresowania tym językiem.

Niewątpliwie zaletą języka jest to, że narzędzia potrzebne do pisania programów w Javie są dostępne bezpłatnie w internecie.

Programiści stosujący Javę mogą tworzyć aplety uruchamiane za pomocą przeglądarki współpracującej z tym językiem (czyli obecnie większości przeglądarek internetowych). Język umożliwia także pisanie samodzielnych programów nie korzystających z sieci.

Przygotowany w ramach niniejszej pracy aplet symulacyjny umożliwia wprowadzenie oraz zmianę parametrów regulujących przebieg symulacji numerycznej przewodnictwa temperaturowego ciał stałych. Należą do nich: funkcja pracy chłodnicy i grzejnika, temperatura początkowa materiału, jego rodzaj z uwzględnieniem parametrów fizycznych takich jak. gęstość, ciepło właściwe i przewodność cieplna.

Program pozwala na rozmieszczenie czujników temperaturowych oraz rejestrację ich wskazań.

W celu zaprezentowania wyników symulacji w programie umieszczono animację pozwalającą na prostą wizualizację przepływu ciepła z wykorzystaniem wybranej legendy kolorów.

Wyniki symulacji prezentowane są na wykresach :

  • rozkładu temperatury w obrębie materiału w danej chwili czasu
  • prędkości zmian temperatury w obrębie materiału w danej chwili czasu
  • wskazań poszczególnych mierników w trakcie trwania całego eksperymentu, oraz
  • w postaci kolorowej animacji przedstawiającej w sposób symboliczny przepływ ciepła

 

    Rozwiązanie eksportu danych symulacyjnych

Aplet jest programem napisanym w Javie i przeznaczonym do uruchomienia na stronach internetowych. Projektanci Javy, tworząc założenia nowego języka, zabezpieczyli użytkowników internetu przed niepożądaną ingerencją z poziomu internetowych, specjalnie przygotowanych, programów. Wiąże się to z pewnymi ograniczeniami funkcjonalności apletów. Najważniejszym z nich jest fakt, że nie mogą one wykonywać operacji I/O na komputerach użytkowników. Pozwolono tylko na bierne czytanie danych, a i to, tylko z internetowego serwera i tylko przez protokół sieciowy (a nie bezpośrednio).

Aplet symulacyjny Heat ma możliwość prezentowania obliczonych danych symulacyjnych na standardowym urządzeniu wyjścia (StdOut), czyli w większości przypadków, na ekranie. Przeglądarki internetowe przechwytują wszystkie informacje wysyłane przez "standardowe wyjście" i udostępniają użytko wnikom; w przypadku przeglądarki Netscape, użytkownik ma do dyspozycji okienko "java console" (Communicator-Tools-Java Console), na którym gromadzona jest zawartość StdOut.  Właśnie ten mechanizm posłużył ominięciu ograniczeń apletów podczas eksportu danych symulacyjnych.

Aplet symulacyjny Heat posiada na głównym panelu sterowania (interfejs użytkownika) przycisk "Zapisz". Jego naciśnięcie powoduje wysłanie na StdOut (czyli Java Console) po pierwsze ustawień eksperymentu (pozycji mierników, rodzaju materiału, temperatur grzejnika i chłodnicy i in.) , a po drugie wyników symulacji przedstawionych w postaci tabeli wartości oddzielonych znakami tabulacji. Pozwala to na proste skopiowanie tych danych do jakiegokolwiek innego programu.

 

    Opis interfejsu

Jednym z elementów programu jest interfejs użytkownika w postaci interaktywnego ekranu pozwalający na płynną zmianę parametrów symulacji oraz umożliwiający wizualizację otrzy manych wyników.

Rysunek  przedstawia widok całego ekranu symulacji.

 

W ramach interfejsu użytkownika mamy kilka funkcjonalnych grup  :

  • charakterystyka grzejnika - pozwala na ustawienie pracy grzejnika, czyli wybór jego charakterystyki czasowej T(t),
  • charakterystyka chłodnicy - to samo, ale dla chłodnicy,
  • charakterystyka materiału - pozwala na wybór rodzaju materiału lub zdefiniowanie dowolnego zestawu parametrów opisujących materiał (wartości zaczerpnięto z prac [3, 20] )
  • charakterystyka mierników - pozwala na wybór iloś ci i rozmieszczenia mierników,

 

  •  
  • charakterystyka metody numerycznej i animacja - umożliwia ustawienie parametrów metody numerycznej, czyli przede wszystkim jej rodzaju, wielkoś ci siatki numerycznej oraz wielkości kroku czasowego.

 

  • wykresy Ľ służą wizualizacji wyników. Program posiada trzy struktury danych przeznaczone do przechowywania danych symulacyjnych. Są nimi: tablica aktualnego rozkładu temperatury w materiale Ľ ładu temperatury w poprzednim kroku obliczeń Ľperatury w materiale oraz "wektory" wskazań czujników w czasie symulacji.  (Zaletą użytego podejścia, czyli wykorzystania obiektów "java.util.Vector" jest to, że nie ograniczmy długości trwania symulacji, ponieważ struktury te pozwalają na stopniową inkrementację obszaru danych - u nas, co 700 kroków czasowych). Bardzo ważnym elementem wykresów jest ich automatyczne skalowanie Ľna każdym kroku obliczeń sprawdzany jest przedział obszaru danych; jeśli istnieje taka konieczność, następuje przeskalowanie .

 

     

     

    Realizacja programistyczna

W przypadku prezentowanej symulacji numerycznej jaką jest aplet symulacyjny Heat, przejście całego procesu projektowania byłoby niewspółmiernie uciążliwe do wielkości projektu. Jednak patrząc z drugiej strony wykonanie pełnej analizy obiektowej i sporządzenie spójnego projektu mogłoby ułatwić w przyszłości rozbudowę programu i/lub jego modyfikację.

Poniżej znajduje się schemat klas projektu oraz opis funkcji, jakie poszczególne obiekty mają pełnić. Jest to podejście pośrednie pomiędzy wykonaniem całej analizy obiektowej, a nie wykonywaniem jej w ogóle. Schemat prezentuje strukturę programu, jego budowę obiektową, a następujący po nim opis precyzuje zadania poszczególnych elementów. Celem niniejszej pracy nie jest przedstawienie metod projektowania obiektowego a tylko zasygnalizowanie, że takie podejście do symulacji numerycznych może skutkować większą przejrzystością kodu programu, odseparowaniem logiki numerycznej od części czysto programistycznej, a i tę można łatwo podzielić na niezależne części - zbieranie parametrów, symulację, prezentację wyników.


 

      Schemat klas dla apletu symulacyjnego Heat

 

 

Znaczenie poszczególnych klas i interfejsów:

 

  • HeatApplet - główny obiekt programu. Do niego należą inne obiekty (widać to na diagramie). Głównym zadaniem tej klasy jest nadzór nad pętlą symulacyjną programu i zebranie wszystkich innych elementów razem z ich metodami i atrybutami. Na jeden obiekt HeatApplet przypadają trzy Wykresy, jeden Schemat, jedna Legenda i jeden element interfejsu użytkownika HeatGUI - to w warstwie prezentacyjnej, natomiast "za kulisami" obiekt ten współpracuje ściśle z klasą Numerki oraz z Chłodnicą i Grzejnikiem.
  • grzejące - w programie symulującym przepływ ciepła trudno obejść się bez źródeł. Interfejs grzejące precyzuje zachowanie takich źródeł: każda klasa, która ma dostarczać do układu energię lub też ją odbierać musi implementować ten interfejs, a to za sobą pociąga posiadanie funkcji zwracającej temperaturę takiego źródła w zależności od czasu.
  • Grzejnik - implementując interfejs grzejące staje się źródłem ciepła, pozwala na ustalenie pewnych parametrów początkowych tj. rodzaj zmian temperatury i parametry z tym związane, a w rezultacie zwraca wartość temperatury w zależności od czasu,
  • Chłodnica - tak jak grzejnik, jest elementem grzejącym, czyli implementuje interfejs grzejące i zwraca wartość temperatury w danym czasie. Zakłada się, że temperatura grzejnika powinna być wyższa od temperatury chłodnicy, ale jest to tylko założenie dotyczące nazewnictwa,
  • Numerki - klasa odpowiedzialna za obliczenia numeryczne. Definiuje tablice danych i pozwala na wykonanie kolejnego kroku obliczeń - czyli otrzymanie tablicy z wartościami do wykreślenia,
  • Legenda - klasa odpowiedzialna za przeliczanie odpowiednich temperatur na odpowiednie kolory. Pozwala na zdefiniowanie skrajnych wartości temperatur i dostarcza metod przeliczania danej wartości na kolor - klasa ta jest niezbędna przy kreśleniu wykresów,
  • Schemat - klasa obrazująca schemat doświadczalny. Głównym jej zadaniem jest wykreślenie ch łodnicy, grzejnika, materiału (z jego rozkładem temperatury) oraz liczby i położenia mierników.
  • Wykres - to klasa odpowiedzialna za gra ficzną prezentację wykresów. Zawiera dwie osie z automatyczym skalowaniem danych.  Zadaniem tej klasy jest odpowiednie skalowanie oraz prezentacja danych.
  • Axis - to klasa definiująca osie współrzędnych. Właśnie ta klasa zawiera w sobie obliczenia, które umożliwiają skalowanie.
  • HeatGUI - to interfejs użytkownika, czyli miejsce gdzie może on definiować parametry. Klasa ta odpowiada również za obsługę zdarzeń, np. naciśnięcie przycisku Start.

 

     

[Strona Tytułowa] [Wprowadzenie] [Opis Fourier'a] [Metody numeryczne] [Założenia programu] [Podsumowanie] [Załączniki] [Bibliografia] [Aplet symulacyjny]