Dydaktyka

Mapa strony:




Przykłady zastosowań Fortranu i Technik wizualizacyjnych

1. Wprowadzenie

W dziale "Przykłady zastosowania Fortranu i technik wizualizacyjnych" zebrałem różne programy komputerowe nawiązujące do mechaniki i fizyki. Pierwotnie były tu same programu autorskie, ale od roku 2008 postanowiłem zamieszczać co ciekawsze programy Studentów - realizowane na przedmiocie Języki Programowania lub też będące efektem prac przejściowych, inżynierskich i magisterskich. Programy te chciałem przedstawić z następujących powodów:

UWAGA: do poprawnego działania niektórych programów wymagane jest środowisko GNU Plot. Po zainstalowaniu tego środowiska należy skojarzyć pliki o rozszerzeniu PLT z programem WGNUPLOT.EXE, znajdującym się w katalogu BIN tego środowiska. Środowisko GNU Plot jest również elementem składowym pakietu EDI.

2. Program Bernoulli - rozkład ciśnień i prędkości w kanale płaskim

Program stanowi ilustrację równania Bernoulliego i równania ciągłości. Oba te równania rozwiązywane są dla dowolnego kanału płaskiego, którego dolna ścianka jest linią prostą zaś ścianka górna opisana jest funkcją dyskretną. Geometrię kanału (wartości dyskretne opisujące górną ściankę kanału) można pobrać z dodatkowego pliku tekstowego poprzez podanie jako parametru wywołania jego nazwy. Liczba punktów geometrii kanału może być dowolna, przy czym w pierwszej linii pliku z geometrią należy podać ich liczbę. Jeżeli nie poda się parametru wywołania przyjęta zostanie geometria domyślna. W pakiecie programu przygotowane są trzy przykłady kanałów płaskich oraz odpowiednie skrypty BPL je uruchamiające. Po wczytaniu geometrii należy podać natężenie przepływu oraz format rysunku wynikowego. Rysunek tworzony jest z użyciem biblioteki DISLIN i może być wyświetlany w oknie graficznym (opcje XWIN i CONS) lub też zapisany do pliku (dostępne formaty to GIF, PNG, PPM, BMP i PDF). Wynikiem działania programu jest tablica wartości współrzędnych x i y ścianki kanału [m], oraz prędkość [m/s] i ciśnienie [Pa] w każdym jego punkcie (a właściwie w połowie jego szerokości). Program podaje również całkowity czas działania. Program napisany jest w Fortranie 90/95.


Równanie Bernoulliego
Rys. Równanie Bernoulliego
c0 - prędkość średnia na wlocie do kanału,
ci - prędkość średnia w i-tym przekroju,
p0 - ciśnienie całkowite na wlocie do kanału,
pi - ciśnienie całkowite w i-tym przekroju,
z0 - wysokość położenia środka wlotu,
zi - wysokość położenia środka i-tego przekroju,
r - gęstość płynu,
g - przyspieszenie ziemskie.

Równanie ciągłości
Rys. Równanie równanie ciągłości
Qm - masowe natężenie przepływu, ci - prędkość średnia w i-tym przekroju,
Ai - pole kanału w i-tym przekroju.

Przykład działania programu Przykład działania programu Przykład działania programu

Rys. Rozkład prędkości i ciśnień w kanale płaskim (3 geometrie):

3. Program Bifurkacje

Program służy do wizualizacji zagadnienia bifurkacji wykrytego przez Feigenbauma. Po uruchomieniu programu można wybrać rodzaj funkcji do wizualizacji - dostępne funkcje to: Feigenbaum 1, Feigenbaum 2, Feigenbaum 3, Verhulst i Stewart. Jako funkcję sterującą użyto we wszystkich przypadkach (oprócz Feigenbaum 1, w której nie ma funkcji sterującej) funkcję trygonometryczną TAN(x). Dodatkowe dane początkowe takie jak liczba cykli iteracji, liczba iteracji w cyklu, parametr bifurkacji (zdefiniowany oddzielnie dla każdej funkcji), skok parametru bifurkacji oraz wartość początkowa funkcji odczytywane są z pliku tekstowego "bifurkacje.dat". Po wyliczeniu wartości funkcji jest ona wizualizowana w środowisku GNU Plot poprzez automatycznie generowany i uruchamiany plik wsadowy. Program napisany jest w Fortranie 90/95. Dodatkowo w pakiecie znajduje się rozszerzona wersja programu napisana w Delphi.

Feigenbaum 1 Feigenbaum 2 Feigenbaum 3

Rys. Przykłady funkcji Faigenbaum 1, Faigenbaum 2 i Faigenbaum 3

Verhulst Stewart

Rys. Przykłady funkcji Verhulsta i Stewarta

Program Bifurkacje

Rys. Program Bifurkacje w wersji napisanej w środowisku Delphi

4. Program Drgania - drgania ciężarka zamocowanego na sprężynie

Program generuje wykresy przemieszczeń y i prędkości u ciężarka o masie m, zamocowanego na sprężynie o stałej k. Pod uwagę brane są również współczynniki tłumienia, oddzielnie dla ruchu w górę i w dół. Dane do obliczeń zawarte są w dodatkowym pliku o rozszerzeniu ".dat". Jeżeli nie ma pliku z parametrami lub też plik ten nie jest poprawny, do obliczeń przyjmowane są dane przykładowe. Wykres końcowy może być wyświetlony w oknie graficznym (CONS, XWIN) lub też zapisany do pliku graficznego w formacie PS, EPS, PDF, WMF, SVG, GIF, TIFF, PNG, PPM, IMAG, BMP, VIRT, CGM, GKSL. Przedstawiony program posiada również napisaną w Delphi nakładkę graficzną, ułatwiającą konfigurację i oferującą dodatkowe opcje. Z poziomu nakładki można wygenerować wykres w oknie graficznym z użyciem komponentu XYGraph. Innym rozszerzeniem jest możliwość uruchomienie skryptu GNU Plota (skrypty muszą być wcześniej skojarzone z programem GNU Plot). Program obliczeniowy został napisany w Fortranie 77.


Równanie drgań
Rys. Równanie drgań
m - masa,
g - przyspieszenie ziemskie,
k - stała sprężyny,
w0 - napięcie wstępne sprężyny,
c - stała tłumienia tłumika,
y - przyspieszenie pionowe ciężarka,
t - czas.
Drgania - DISLIN Drgania - nakładka Drgania - XYGraph Drgania - GNU Plot

Rys. Przykład obliczeń z zastosowaniem równania drgań:
a) wykres przemieszczeń i prędkości uzyskany z biblioteki DISLIN
b) nakładka graficzna na program konsolowy napisany w Fortranie
c) wykres przemieszczeń i prędkości uzyskany bezpośrednio z nakładki graficznej (komponent XYGrapch do Delphi)
d) wykres przemieszczeń i prędkości uzyskany w środowisku GNU Plot

5. Program Fale 2D - równanie falowe

Program demonstruje modelowanie zjawisk falowych z użyciem tzw. równania falowego. W programie zastosowano bibliotekę DISLIN do wizualizacji fal w trakcie obliczeń (dostępne są 3 tryby wizualizacji) oraz skrypty GNU Plota do zapisu rysunków na dysku. Skrytpy GNU Plota są generowane i uruchamiane automatycznie z poziomu programu. Parametry układu definiowane są w pliku "fale2d.txt" - ich opis i wartości widoczne są na ekranie po wczytaniu pliku (lub po przyjęciu wartości domyślnych w przypadku braku pliku lub błędów odczytu). W pliku "fale2d.bc" definiuje się sumaryczną liczbę komórek "ścianek" i komórek "źródłowych" (w pierwszym wierszu). W pozostałych wierszach podaje się po kolei: numer iteracji, od której ma działać warunek brzegowy, numer iteracji, do której ma działać warunek brzegowy, położenie warunku brzegowego (jego numer "wiersza" i numer "kolumny") oraz wartość. Warunkiem brzegowym może być w programie "ścianka" lub też "źródło", czyli komórka inicjująca powstawanie fal. W przykładzie dostępnym w pakiecie programu zdefiniowane są dwa źródła oraz ścianka ze szczelinami, pokrywająca się z 70 kolumną obszaru (ścianka nie jest bezpośrednio widoczna na rysunkach - widać jedynie skutki jej istnienia). Program podaje również całkowity czas działania. Program napisany jest w Fortranie 90/95.


Równanie falowe
Rys. Równanie falowe
U - wychylenie z położenia równowagi,
c - prędkość fali,
x, y, z - współrzędne w układzie kartezjańskim,
t - czas.

Równanie falowe - DISLIN Równanie falowe - DISLIN Równanie falowe - DISLIN Równanie falowe - GNU Plot

Rys. Przykład obliczeń z zastosowaniem równania falowego:
a) wizualizacja biblioteką DISLIN - rozkład ciągły
b) wizualizacja biblioteką DISLIN - rozkład isolinii
c) wizualizacja biblioteką DISLIN - rozkład isolinii z etykietą
d) wizualizacja przy użyciu środowiska GNU Plot

Fale 2D - film

Film. Przykład obliczeń z zastosowaniem równania falowego

6. Program Fourier - przepływ ciepła

Program służy do obliczania rozkładu temperatury w jednolitej ścianie, na brzegach której zadane są różne temperatury. Do obliczeń należy zdefiniować następujące parametry: grubość ściany, liczbę punktów dyskretyzacji, współczynnik przewodzenia ciepła, współczynnik przejmowania ciepła, ciepło właściwe materiału ściany, gęstość materiału ściany, temperatury po lewej i prawej stronie ściany oraz czas obliczeń. Parametry definiuje się w pliku "fourier.dat", wczytywanym na początku działania programu. Jeżeli pliku nie będzie lub też będzie on nieprawidłowy, do obliczeń przyjęte zostaną wartości domyślne. Po wczytaniu parametrów, są one wyświetlone na ekranie. W wyniku działania programu przedstwiany jest rozkład temperatury wzdłuż przekroju ściany oraz przebieg zmian temperatury w wybranych trzech punktach tego przekroju. Rysunki generowane są przy użyciu biblioteki DISLIN - dostępne tryby wizualizacji to ekran monitora (XWIN i CONS) lub pliki graficzne (formaty GIF, PNG, PPM, BMP i PDF). W trybie wizualizacji na ekranie widoczny jest końcowy efekt obliczeń. W przypadku wizualizacji do plików, pliki graficzne zapisywane są na dysku dla każdej iteracji, co umożliwia podgląd przebiegu nagrzewania się ściany. Program napisany jest w Fortranie 90/95 z użyciem biblioteki graficznej DISLIN.


Równanie Fouriera
Rys. Równanie Fouriera
T - temperatura,
t - czas,
l - współczynnik przewodzenia ciepła w betonie,
cp - współczynnik pojemności cieplnej betonu,
r - gęstość betonu,
x - współrzędna mierzona w poprzek ściany.

Fourier przekrój Fourier punkty

Rys. Przykład obliczeń przepływu ciepła przez ścianę:
a) rozkład temperatur w przekroju ściany
b) rozkład zmian temperatury w wybranych punktach ściany

Fourier - film

Film. Przykład obliczeń przepływu ciepła przez ścianę

7. Program Jednostki

Jest to bardzo prosty program do przeliczania kilku najpopularniejszych jednostek ciśnienia. Po uruchomieniu należy podać wartość wyjściową a następnie jej jednostkę. Obsługiwane jednostki to Pascal, bar, mm H2O, atmosfera fizyczna, atmosfera techniczna i Tor.

8. Program Lepkość i Gęstość Wody

Program stanowi zapis fragmentu tablic termodynamicznych wody. Po uruchomieniu podaje się temperaturę dla jakiej potrzebne są wartości lepkości i gęstości. Program wylicza wartość metodami interpolacyjnymi a następnie przedstawia go na ekranie. Po zakończeniu obliczeń rysowany jest wykres lepkości i gęstości, z zaznaczoną wartością wpisaną przez użytkownika. Program napisany jest w Fortranie 90/95, do wizualizacji zaś wykorzystywane jest środowisko GNU Plot (poprzez automatycznie tworzony skrypt i pliki z danymi).

Lepkość wody Gęstość wody

Rys. Wykres lepkości i gęstości wody z zaznaczoną wartością wpisaną przez użytkownika

9. Program Lissajous

Program służy do wyznaczania tzw. krzywych Lissajous (zapis toru ruchu ciężarka o masie M zawieszonego na linie o długości L). Dane do obliczeń wczytywane są z pliku tekstowego "lissajous.dat" - są to: wartość przyspieszenia ziemskiego, masa wahadła, długość ramienia wahadła, amplitudy wychyleń dla x-ów i y-ów oraz krok czasowy. Jeżeli nie ma pliku z parametrami lub jest on niepoprawny, wczytywane są parametry domyślne. Wynikiem działania programu jest wykres, przy czym dostępne są tu opcje wizualizacji z użyciem biblioteki DISLIN (XWIN, CONS, GIF, PNG, PPM, BPM, PDF) lub środowiska GNU Plot. Program napisany został w Fortranie 77. Dodatkowo w pakiecie programu umieszczono wersję programu napisaną w środowisku Delphi.


Równanie wahadła matematycznego
Rys. Równanie wahadła matematycznego
T - kąt odchylenia od położenia pionowego,
r - długość ramienia wahadła,
g - przyspieszenie ziemskie.
Lissajous DISLIN Lissajous GNU Plot

Rys. Przykłady krzywych Lissajous:
a) M = 0.5 [kg], L = 2 [m], Ax = 0.3927, Ay = 0.2618 (wizualizacja w DISLIN)
a) M = 0.5 [kg], L = 2 [m], Ax = 0.5, Ay = 0.15 (wizualizacja w GNU Plot))

Program Lissajous

Rys. Wersja programu napisana w Delphi

10. Program Poisson

Program służy do demonstracji rozwiązywania równania Poissona (równanie to stosowane jest np. do wyliczania rozkładu ciśnień cieczy). Dane do obliczeń brane są z pliku "boundary.dat" oraz "source.dat". Pierwszy z nich zawiera wartości funkcji na poszczególnych brzegach obszaru obliczenioweg (S,N,W i E). Drugi plik zawierda definicję tzw. żródeł, czyli niejsc w obszarze obliczeniowym posiadających na sztywno zadane wartości funkcji. Obecnie w programie można zdefiniować jedno źródło - w pliku należy podać minimalny i maksymalny zakres źródła na kierunku x, minimalny i maksymalny zakres źródła na kierunku y oraz wartość tego źróła. Wymiki zapisywane są do plików tekstowych a następnie - poprzez skrypty środowiska GNU Plot - do plików graficznych. Kształt obszaru oraz liczba punktów dyskretyzacji jest w obecnej wersji stała (kwadrat 30x30). Po zakończeniu obliczeń program wyświetla dodatkowe informacje o czasie swojego działania. Program napisany został w Fortranie 90/95.


Równanie Poissona
Rys. Równanie Poissona

Poisson

Rys. Przykład rozwiązania równania Poissona


Poisson

Film. Przykład rozwiązania równania Poissona

11. Program Profil - profil prędkości płynu w kanale płaskim

Program rozwiązuje pewien szczególny przypadek równania Naviera-Stocksa i daje możliwość wyliczenia profilu prędkości w kanale płaskim. Podstawowe parametry odczytywane są z pliku "profil.dat". Plik ten zawiera następujące parametry: szerokość kanału, liczbę komórek w kierunku poprzecznym do przepływu, wartość lepkości dynamicznej i gęstości płynu (definiujące jego rodzaj), gradient ciśnienia, minimalną liczbę Reynoldsa oraz kryterium zbieżności. Po wczytaniu parametrów są one wyświetlane na ekranie komputera. Pojawi się tam również menu, służące do wyboru metody rozwiązania. Pierwotnie dostępna była tylko jedna metoda. Pozostałe metody - dwie metody bezposrednie i trzy iteracyjne - zebrał i zaimplementował jeden z moich dyplomantów w trakcie realizacji pracy magisterskiej. Dyplomant ten dodał również do programu pewne opcje związane z porównywaniem metod rozwiązywania równiań i badaniem zbieżności. Kształt profilu widoczny jest po zakończeniu obliczeń, przy czym można tu skorzystać z biblioteki DISLIN lub środowiska GNU Plot. Po przeliczeniu przykładu wszystkimi metodami można skorzystać z dodatkowych skryptów GNU Plota. Skrytpy te znajdują się w pakiecie programu i służą do obserwacji i porównania wyników uzyskanych różnymi metodami rozwiązywania układów równań liniowych oraz do obserwacji przebiegu zbieżności (w przypadku metod iteracyjnych). Program napisany jest w Fortranie 77. Dodam dla uściślenia, że prezentowany tu program nie jest programem Studenta, lecz moim programem, ale wykorzystującym udostępnione mi przez Studenta dodatkowe algorytmy.


Równanie Profilu
Rys. Równanie Naviera-Stokesa (przypadek szczególny)
u - prędkość,
p - ciśnienie statyczne,
m - współczynnik lepkości dynamicznej,
x, y - współrzędne kartezjańskie.

Profil - GNU Plot profil Profil - GNU Plot zbieżność

Rys. Przykład wyznaczenia kształtu profilu prędkości w kanale płaskim metodą SOR (widoczny profil i przebieg procesu zbieżności)

12. Program Siatka

Program służy do generacji siatek strukturalnych w obszarach prostokątnych z użyciem tzw. funkcji rozpinających. Funkcje takie pozwalają sterować stopnim zagęszczania się węzłów siatki w określonym kierunku. Definiowanie parametrów zadania może odbywać się na kilka sposobów, przy czym najkorzystniejszym sposobem jest modykiacja pliku "siatka.dat". Plik ten zawiera następujące parametry: długość obszaru na kierunku x (lx), długość obszaru na kierunku y (ly), liczbę węzłów na kierunku x (nx), liczbę węzłów na kierunku y (ny), zmienną określającą typ rozpinania (dostępne opcje to: 1 - rozpinanie liniowe, 2 - rozpinanie niesymetryczne, 3 - rozpinanie symetryczne), zmienną określającą rodzaj funkcji rozpinającej (dostepne opcje to: 1 - EXP(), 2 - TANH(), 3 - SINH()), współczynnik zagęszczenia węzłów (alfa) oraz trzy zmienne logiczne określające, czy rozpinanie ma się odbywać na kierunku X, na kierunky Y oraz czy rozpinanie ma być rozpoczęte od końca obszaru (odwrotnie). Wynikiem działania programu są pliki zawierające współrzędne węzłów leżących na poszczególnych brzegach obszaru (pliki: "brzeg_AB.txt", itp.) oraz współrzędne wszystkich węzłów ("siatka_wezly.txt") i środków komórek ("siatka_srodki.txt"). Węzły i środki można wizualizować za pomocą załączonych skryptów GNU Plota. Program napisany został w Fortranie 90. Wcześniejsze wersje programu - napisane w Delphi - dostępne są w dziale Projekty - Projekty Inne (programy Grid i Grid2).

Siatka Siatka

Rys. Przykłady rozpinania siatek (wizualizacja w środowisku GNU Plot)


Poisson Poisson Poisson

Film. Przykłady rozpinania siatek

13. Program Straty

Program służy do wyliczania strat liniowych i lokalnych w dowolnie zdefiniowanym rurociągu. Rurociąg opisuje się w pliku tekstowym (którego nazwa stanowi później argument wywołania programu) według zasad opisanych w pliku "straty.txt". Jako pomoc mogą rónież służyć cztery pliki przykładowe. Po sprawdzeniu ile jest elementów rurociągu, program oblicza po kolei straty liniowe i lokalne i zapisuje je w odpowiednich tablicach. Na koniec wyniki obliczeń są zapisywane do plików i wywoływany jest skrypt GNUPlota. Dodam, że pomysł na program pochodził od Studentów. Ogólna struktura logiczna i niektóre fragmenty algorytmu zostały wykonane według moich wskazówek (lub wręcz gotowych fragmentów kodu). Przed publikacją dokonałem też pewnych modyfikacji w kodzie - dotyczyły one głównie sposobu zarządzania przykładami.

Wykres strat w rurociągu

Film. Przykłady wykresów strat

14. Program Tablice - gęstość i lepkość wody

Program służy do wyliczenia gęstości i lepkości wody w zależności od temperatury. Dodatkowo można wizualizować tablice w bibliotece DISLIN lub środowiski GNU Plot. Ciekawą funkcją jest możliwość eksportu tablic do odpowiednio sformatowanych plików tektowych i wczytanie ich z poziomu programu do arkuszy kalkulacyjnych Calc (OpenOffice) oraz Gnumeric. Aby opcja ta zadziałała, należy w pliku konfiguracyjnym "tablice.dat" podać ścieżki do tych programów. W celu ułatwienie tego zadania (ścieżki muszą być w formie skróconej) w pakiecie programu umieściłem dadatkowy (napisany w Delphi) programik Skracacz. Jeżeli wszystko zostanie skonfigurowane poprawnie, po wybraniu odpowiedniej opcji, uruchomiony zostanie Calc lub Gnumerik, a dane zostaną wczytane. W programie Calc na początku pojawi się dodatkowe okno związane z konwersją formatu pliku. Aby skorzystać z danych wprowadzonych do Calca lub Gnumerika należy jeszcze zamienić kropki na przecinki. Program napisany został w Fortranie 90.

Tablice gęstość wody Tablice lepkość wody

Rys. Wykresu gęstości i lepkości wody uzysnane przy pomocy środowiska GNU Plot

Tablice Calc

Rys. Okna importu danych programu Calc

15. Program Współczynnik Oporu

Program służy do wyliczenia wartości współczynnika oporu CD cząstki sferycznej poruszającej się w ośrodku płynnym dla Re > od 3. Po uruchomieniu programu pojawia sie pytanie o wartość liczby Reynoldsa, dla której wykonane mają być obliczenia. Następnie program oblicza wartości według 15 zaimplementowanych modeli, a na koniec przedstawia wykres CD = CD(Re).

Tablice Calc

Rys. Formuly opisujace wartosc wspolczynnika oporu czastki sferycznej

góra strony



http://www.uwm.edu.pl/edu/sobieski