Projekt zaliczeniowy z Programowania

Podobne dokumenty
Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Projekt zaliczeniowy z Programowania

Obliczenia iteracyjne

Wprowadzenie do programu Mathcad 15 cz. 1

Programowanie - wykład 4

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

I. Podstawy języka C powtórka

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Pomorski Czarodziej 2016 Zadania. Kategoria C

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Dokąd on zmierza? Przemieszczenie i prędkość jako wektory

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

- prędkość masy wynikająca z innych procesów, np. adwekcji, naprężeń itd.

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Złożoność obliczeniowa zadania, zestaw 2

Podstawy MATLABA, cd.

Instrukcja obsługi programu SWWS autorstwa Michała Krzemińskiego

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Równanie przewodnictwa cieplnego (II)

ZADANIE 1. Ważenie (14 pkt)

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Wstęp Sterowanie Utworzenie, wybór i kasowanie gracza. utworzenia nowego gracza Nowy gracz Nastawienie gracza

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie i techniki algorytmiczne

EGZAMIN MATURALNY Z INFORMATYKI 13 MAJA 2019 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

lekcja 8a Gry komputerowe MasterMind

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

Temat 20. Techniki algorytmiczne

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Monika Wrzosek (IM UG) Programowanie obiektowe 21 / 25

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

1 Symulacja procesów cieplnych 1. 2 Algorytm MES 2. 3 Implementacja rozwiązania 2. 4 Całkowanie numeryczne w MES 3. k z (t) t ) k y (t) t )

Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

Programowanie strukturalne i obiektowe. Funkcje

Wielomian interpolacyjny Hermite a

PętlaforwOctave. Roman Putanowicz 13 kwietnia 2008

Tablice. Jones Stygar na tropie zmiennych

1 Powtórzenie wiadomości

Projekty zaliczeniowe Podstawy Programowania 2012/2013

4. Funkcje. Przykłady

Rozdział 1 PROGRAMOWANIE LINIOWE

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

FUNKCJA LINIOWA, RÓWNANIA I UKŁADY RÓWNAŃ LINIOWYCH

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Odwrócimy macierz o wymiarach 4x4, znajdującą się po lewej stronie kreski:

Podstawy Programowania C++

Lekcja : Tablice + pętle

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Metody numeryczne I Równania nieliniowe

LABORATORIUM METODA ELEMENTÓW SKOŃCZONYCH

Nazwisko i imię: Zespół: Data: Ćwiczenie nr 9: Swobodne spadanie

Podstawy Programowania.

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Wykład 2 - model produkcji input-output (Model 1)

Równanie przewodnictwa cieplnego (I)

Zadanie 1. Suma silni (11 pkt)

Wojewódzki Konkurs Przedmiotowy z matematyki dla uczniów gimnazjów województwa kujawsko-pomorskiego

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

1. Opis okna podstawowego programu TPrezenter.

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Zadania z rysowania i dopasowania funkcji

Układy równań i nierówności liniowych

3. Macierze i Układy Równań Liniowych

UMOWY INSTRUKCJA STANOWISKOWA

Kilka prostych programów

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Rozwiązywanie równań różniczkowych cząstkowych metodą elementów skończonych - wprowadzenie

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Metoda Elementów Skończonych. Projekt: COMSOL Multiphysics 3.4.

dr inż. Cezary Żrodowski Wizualizacja Informacji WETI PG, sem. V, 2015/16 b) Operacja wyciągnięcia obrotowego z dodaniem materiału - uchwyt (1pkt)

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

Metoda eliminacji Gaussa

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Rozdział 1 PROGRAMOWANIE LINIOWE

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Aby przejść do edycji w tym module należy wybrać zakładkę "Dla Pracowników" -> "Sprawdziany".

Podstawy programowania. Wykład: 11. Trochę różnych przykładów. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Laboratorium nr 1. i 2.

Rozwiązywanie układów równań liniowych

Od programowania wizualnego do tekstowego

Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną.

Zasady budowania algorytmów z klocków Początek pracy Klocki Podstawowe

Laboratorium MATLA. Ćwiczenie 4. Debugowanie. Efektywności kodu. Wektoryzacja.

Układ równań liniowych

Instrukcja laboratoryjna cz.0

1 Automaty niedeterministyczne

5. Rozwiązywanie układów równań liniowych

Transkrypt:

Projekt zaliczeniowy z Programowania dla Energetyki i Chemii Jądrowej i Inżynierii Nanostruktur 216/217 Program, który nie kompiluje się na komputerach w pracowni OKWF nie podlega ocenie! Równanie przewodnictwa cieplnego zadane jest wzorem: u( x, t) t które w przypadku jednowymiarowym redukuje się do: u(x, t) t = f( x, t) + α( x) 2 u( x, t), = f(x, t) + α(x) 2 u(x, t) x2 gdzie u(x, t) jest rozkładem temperatury w chwili czasu t, α(x) jest zależnym od położenia współczynnikiem przewodnictwa cieplnego, a f(x, t) opisuje źródła ciepła (np. stałe zwiększanie temperatury o u). Zadaniem projektowym jest zilustrowanie rozchodzenia się ciepła w przypadku jednowymiarowym (np. pręt), czyli napisanie programu, który wczyta odpowiednie paremetry, początkowy rozkład temperatury u(x, ), współczynnik przewodnictwa cieplnego α(x), a następnie znajdzie ewolucje czasową rozkładu temperatury oraz stacjonarne rozwiązanie powyższego równania. Końcowe wyniki powinny zostać przedstawione graficznie przy pomocy programu gnuplot Program powinien: 1. poprosić użytkownika o podanie nazwy pliku, w którym znajdują się parametry 2. w przypadku nie podania żadnej nazwy program powinien podjąć próbę wczytania pliku o nazwie parametry.dat, a jeśli taki plik nie istnieje przerwać działanie z komunikatem o braku pliku 3. wczytać plik z parametrami, w którym znajdują się po kolei (każdy w oddzielnej linii, poza miejscami umieszczenia źródeł)): liczba komórek N liczba całkowita M używana do zapisu do pliku, oznaczająca co ile iteracji zapisywany będzie aktualny rozkład temperatury liczba oznaczająca liczbę źródeł Z jeśli liczba oznaczająca liczbę źródeł jest większa od : Z linii oznaczających komórki w których zaczyna i kończy się dane źródło oraz liczba zmiennoprzecinkowa oznaczająca zmianę temperatury, którą powoduje źródło i-ta linia opisuje i-te źródło, łącznie 3 liczby w linii np.: 1 3 1.5 które oznaczają źródło w komórkach od z p = 1 do z k = 3, które zmienia temperaturę o u = 1.5 przy każdym kroku liczba oznaczająca warunki brzegowe (wyjasnienie dalej) krok czasowy t krok przestrzenny x 1

dokładność ɛ osiągniętego rozwiązania stacjonarnego N linii z początkowym rozkładem temperatury N linii z rozkładem współczynnika przewodnictwa cieplnego α(x) W przypadku rozkładów należy je wczytać do tablicy lub wektora STL. 4. sprawdzić kompletność danych w pliku, jeśli nie są kompletne wyświetlić odpowiedni komunikat i zakończyć działanie 5. używając w pętli poniższych punktów, przeewoluować w czasie rozkład temperatury (numerując komórki wzdłuż pręta od 1 do N): (a) przeprowadzić zmianę rozkładu temperatury zadaną przez drugą część równania przewodnictwa który opisuje dyfuzję ciepła, wynikające z równania Fouriera : Dla każdej, poza skrajnymi komórkami oblicz nową wartość temperatury na podstawie jej starego rozkładu i współczynnika przewodności cieplnej: u(i, t + t) = u(i, t) + t α(i) u(i 1, t) 2u(i, t) + u(i + 1, t) x 2 (b) jeśli ilość źródeł jest większa od w podanych komórkach w pliku zwiększyć temperaturę o podaną temperaturę (pierwsza część równania przewodnictwa cieplnego) i (zp,z k ) u(i, t + t) = u(i, t + t) + t u programujemy zatem przypadek funkcji f źródeł o stałej mocy dostarczającej taką samą ilość ciepła w jednostce czasu (c) jeśli wartość parametru warunków brzegowych jest równa dla skrajnych komórek używać warunków brzegowych Dirichleta, czyli przepisać taką samą wartość temperatury, jaka była poprzednio u(1, t + t) = u(1, t) oraz u(n, t + t) = u(n, t) zaś dla wartości równej 1 używać periodycznych warunków brzegowych, czyli wykonać krok czasowy dla skrajnych komórek w następujący sposób: u(n, t) 2u(1, t) + u(2, t) u(1, t + t) = u(1, t) + t α(x) x 2 analogicznie dla drugiej skrajnej komórki (d) co M-tą iterację pętli dopisać do pliku o nazwie wynik.dat, aktualny rozklad temperatury w postaci: t 1 u(t, 1) t 2 u(t, 2) t N u(t, N) t + t 1 u(t + t, 1) t + t 2 u(t + t, 2) czyli każdy rozkład zapisany jest w N wierszach, gdzie w każdym wierszu pierwsza liczba oznacza czas, druga miejsce (numer komórki), a trzecia temperaturę, a pomiędzy dwoma kolejnymi rozkładami jest pusta linia (e) obliczyć sumę kwadratów różnic, między komórkami rozkładu temperatury dla czasu t, a komórkami rozkładu dla czasu t + t, 2

(f) jeśli powyższa różnica jest mniejsza niż ɛ, program powinien wypisać na ekranie komunikat o osiągnięciu stanu stacjonarnego oraz podać ilość iteracji potrzebnych do jego osiągnięcia i wyjść z pętli 6. zapisać do pliku wynik2.dat końcowy rozkład ciepła, w postaci: 1 u(t, 1) 2 u(t, 2) N u(t, N) 7. utworzyć pliki wykres.gp i wykres2.gp i wpisać do nich: do wykres.gp: plot "wynik2.dat" do wykres2.gp: plot "wynik.dat" with image a następnie wywołać komendy systemu Linux: gnuplot -persist wykres.gp gnuplot -persist wykres2.gp Kod powinien być przejrzysty, zaś każda powyższa operacja powinna odbywać się poprzez wywołanie odpowiedniej napisanej przez Ciebie funkcji, w tym: wykonanie kroku czasowego (punkt 5a powyżej), zwiększenie temperatury przez źródło, wczytanie pliku, wypisanie do pliku czy wyliczenie sumy kwadratów różnic, tak aby można było go łatwo zmodyfikować, np. poprzez dodanie nowych źródeł. Uwaga: nie używamy tablic globalnych Wskazówka: jedną z możliwości wygodnego korzystania ze starego rozkładu temperatury jest użycie dwóch zmiennych tablicowych u in i u out, jeden u in dla poprzedniego rozkładu temperatury, a drugi dla aktualnego rozkładu u out, do którego będziesz wpisywać nowe wartości. Po wykonaniu wszystkich operacji na nim, można zamienić ich wartości u in u out tak, że dla następnej iteracji aktualny obecnie rozkład znajdzie się w u in, zaś wartości starego rozkładu, które będą w u out zostaną zastąpione najnowszym rozkładem. Wskazówka 2: spróbuj zmodyfikować dane wejściowe, dodać nowe źródła, zwiększyć ilość kodu wpisywanego do skryptów gnuplota i przetestuj program Uwaga: osiągnięty przez program stan stacjonarny będzie stanem stacjonarnym tylko do zadanej dokładności ɛ, może on się różnić od rzeczywistego, gdyż bardzo wolno zmieniające się rozkłady, pomimo iż nie są stacjonarne, generują bardzo małe ɛ. Aby otrzymać rzeczywisty stan stacjonarny należy zadać ɛ =, lecz często czas oczekiwania na ustalenie się takiego stanu jest dość długi. Podstawowe kryteria oceniania (maksymalnie 2 pkt): program dobrze wczytuje plik, sprawdza kompletność parametrów, przeprowadza ewolucję w czasie rozkładu temperatury, aż do znalezienia rozwiązania stacjonarnego z zadaną dokładnością, zapisując do pliku rozkład co M-tą iterację oraz stan ustalony (końcowy), zapisuje skrypty, wywołuje gnuplota oraz rysuje poprawne wyniki, a ponadto program jest napisany w sposób modularny 2 pkt program wykonujący wszystkie zadania, ale bez modułowej konstrukcji maksymalnie 1 pkt program wykonujący część zadań, ale z modułową budową maksymalnie 15 pkt program nie kompiluje się w pracowni OKWF pkt Powyższa punktacja jest tylko poglądowa i nie uwzględnia m.in. takich kryteriów jak czytelność kodu, wycieki pamięci czy źle wypisywane pliki, za które punktacja może zostać obniżona. 3

W załączeniu przykładowe pliki z parametrami i wyniki wygenerowane na ich podstawie. Te ostatnie pokazane są również poniżej. Opis przykładowych parametrów: W pliku parametry.dat mamy do czynienia z przypadkiem bezźródłowym. Mamy pręt o długości N = 1 oraz początkowy rozkład temperatury to T = 1 dla komórek od 4 do 6 oraz T = poza nimi. Pręt składa się z dwóch materiałów, pierwsza połowa o współczynniku α =.1 zaś druga połowa o współczynniku α =.1 stosunek przewodności analogiczny do stosunku współczynników dla drewna i żelbetu. Patrzymy na rozpływanie się tej temperatury wzdłuż preta z dwoma różnymi prędkościami, zależnymi od współczynnika przewodnictwa cieplnego. Wyniki dla parametry.dat 25 "wynik2.dat" "wynik.dat" 1 9 2 8 8 7 15 6 6 5 1 4 4 3 5 2 2 1 1 2 3 4 5 6 7 8 9 1 5 1 15 2 25 W pliku parametry2.dat mamy do czynienia z zerowym początkowym rozkładem temparatury oraz włączonymi dwoma źródłami z u = ±1. Ponadto mamy jednorodny pręt, czyli współczynnik przenikalności jest taki sam wzdłuż całego pręta. Ponadto pręt ten jest zagięty w okręg, czyli początek połączony jest z końcem (periodyczne warunki brzegowe). Kawałek pręta jest podgrzewany, zaś kawałek jest ochładzany, tak że łączna ilość ciepła dostarczana do pręta jest równa temperatura całego pręta nie będzie się ciągle podnosić, jest to ważne by znaleźć stan stacjonarny. Patrzymy na nagrzewanie się ciała i dążenie do stanu staacjonarnego. Wyniki dla parametry2.dat 25 "wynik2.dat" "wynik.dat" 25 2 9 2 15 8 15 1 7 1 5 6 5 5-5 4-5 -1 3-1 -15 2-15 -2 1-2 -25 1 2 3 4 5 6 7 8 9 1 Literatura 1 2 3 4 5 6 7-25 [1] Równanie przewodnictwa cieplnego równanie Fouriera, https://pl.wikipedia.org/wiki/r%c3%b3wnanie_przewodnictwa_cieplnego 4

Zadanie na ocenę celującą 5! Warunkiem pozwalającym na ubieganie się o ocenę celującą jest przygotowanie programu, jak wyżej, ale dla przypadku dwuwymiarowego. Uwaga: wystarczy napisać jedną wersję programu, jednakże w przypadku złego działania programu (lub jego braku) można nadal wrócić do zaliczenia zwykłym trybem na maksymalną ocenę 5. Zmiany w stosunku do wersji jednowymiarowej: równanie w przypadku dwuwymiarowym: ( ) u(x, y, t) 2 = f(x, y, t) + α(x, y) t x 2 + 2 y 2 u(x, y, t) zamiast pracować na jednowymiarowych tablicach/wektorach STL o rozmiarze N, będą potrzebne tablice/wektory STL, który będzą w stanie przechować siatkę N 1 N 2 dyfuzyjna część kroku czasowego zadana jest przez: Dla każdej, poza skrajnymi, komórkami oblicz nową wartość temperatury na podstawie jej starego rozkładu i współczynnika przewodności cieplnej: + t α(x) u(i, j, t + t) = u(i, j, t)+ ( u(i 1, j, t) 2u(i, j, t) + u(i + 1, j, t) x 2 + źródła są kwadratami o zadanych w pliku wymiarach ) u(i, j 1, t) 2u(i, j, t) + u(i, j + 1, t) y 2 warunki brzegowe analogicznie jak w przypadku jednowymiarowym, mają sprawiać, że lewa krawędź siatki będzie połączona z prawą, a górna z dolną ponieważ gnuplot nie ma możliwości tworzenia animacji, tym razem należy wypisać dane i wyrysować wykres (mapkę) tylko dla stanu ustalonego (z podaną dokładością ɛ) domyślnym plikiem z parametrami będzie parametry2d.dat w pliku znajdują się kolejno: linia z N 1 linia z N 2 linia z ilością źródeł Z Z linii z łącznie pięcioma liczbami, w tym czterema całkowitymi z x,p, z y,p, z x,k, z y,k oznaczajacymi pary liczb opisujące początek i koniec źródła (dwa przeciwległe punkty kwadratu), oraz jedną zmiennoprzecinkową oznaczającą zmianę temperatury u wnoszoną przez źródło linia z krokiem czasowym t linia z krokiem przestrzennym x ( y = x) linia z dokładnością ɛ N 1 N 2 linii z początkowym rozkładem temperatury N 1 N 2 linii z rozkładem współczynnika przewodności cieplnej Opis przykładowych parametrów W pliku parametry2d.dat mamy do czynienia z częściowo nagrzaną wcześniej płytką o rozmiarze 1x1 w kwadracie od (4,4) do (6,6) temperatura poczatkowa wynosi 1, a poza nim temperatura początkowa wynosi. Lewa połowa płytki jest wykonana z materiału, ktory ma 1-krotnie wyższy współczynnik przewodnictwa cieplnego, niż jej prawa połowa taki sam stosunek jak w przypadku żelbet, a drewno. Poprzez zadanie dość dużej wartości ɛ obserwujemy tutaj stan, który nie jest jeszcze stanem ustalonym, aczkolwiek dalsza dyfuzja temperatury następuje juz bardzo powoli. Zauważymy, iż płytka zwiększyła swoją 5

temperaturę bardziej po lewej niż po prawej stronie. W pliku parametry2d2.dat mamy do czynienia z płytką o rozmiarze 1x5, która cała początkowo ma temperaturę wynoszącą, zaś jej współczynnik przewodnictwa cieplnego jest jednorodny (wszędzie taki sam). Ponadto mamy dwa źródła w kwadratach: (3,3) do (4,4) (źródło dodatnie) oraz (6,1) do (7,2) (źródło ujemne). Ponadto mamy periodyczne warunki brzegowe, lewa krawędź jest połączona z prawą, a górna z dolną (czyli jest to powierzchnia torusa). Obserwujemy stan ustalony. Powinniśmy zauważyć m.in. że niższa temperatura jest wyraźnie zauważalna również na górnej krawędzi, a wyższa temperatura na dolnej krawędzi, co wynika z periodycznych warunków brzegowych. Wyniki dla plików parametry2d.dat oraz parametry2d2.dat 1 "wynik2d.dat" 35 5 "wynik2d.dat".4 3.3 8 25 4.2 6 2 3.1 4 15 2 -.1 2 1 1 -.2 5 -.3 2 4 6 8 1 2 4 6 8 1 -.4 6