Akademia górniczo-hutnicza



Pobieranie 0,79 Mb.
Strona5/5
Data24.02.2019
Rozmiar0,79 Mb.
1   2   3   4   5
Moduł Solvera wykorzystywany jest głównie przez moduł problemowy biblioteki MES, choć może też być używany niezależnie. Celem modułu jest rozwiązanie układu równań zadanego przez uzytkownika. Do poprawnego funkcjonowania wymagane jest stworzenie obiektów macierzy i wektora oraz wypełnienie ich wartościami otrzymanymi podczas rozwiązywania problemu technicznego.


  • Stwórz macierz/wektor -opracowany solver operuje na instancjach klas matrix i vector. Pierwszym krokiem do uzyskania wyniku jest przygotowanie tych obiektów.




  • Wprowadź dane -moduł problemowy uzupełnia macierz i wektor na podstawie dostępnych informacji o rozwiązywanym problemie technicznym.




  • Odczyt danych –moduł zapewnia możliwość prostego odczytu zapisanych w macierzy wartości.




  • Ustaw właściwości macierzy –użytkownik opisuje własności jakie posiada stworzona macierz, np. czy jest trójkątna lub dodatnio określona. Służy to solverowi do optymalizacji obliczeń.




  • Wykonaj obliczenia –rozwiązanie zadanego układu równań. Metoda rozwiązywania jest wybierana przez algorytm solvera, choć użytkownik może wymusić użycie konkretnej metody.


Diagram sekwencji

Powyższy diagram ukazuje przebieg działania modułu. Początkową czynnością jest stworzenie instancji klas matrix i vector i wypełnienie ich wartościami. Użytkownik ustawia szczególne właściwości macierzy wejściowej. Następnie moduł problemowy tworzy instancję solvera (lub korzysta z instancji przygotowanej wcześniej). Gdy wszystkie czynności przygotowawcze zostały przeprowadzone można już wywołać metodę solve która rozwiąże zadany układ równań.


Podsumowanie i wnioski

Celem powyższego projektu było stworzenie projektu modułu obliczeniowego do MES. Myślę że praca przedstawiła w sposób wyczerpujący zagadnienie. Do pracy dołączono kod biblioteki umożliwiający wykorzystanie podstawowych możliwości planowanego modułu. Kod ten nie jest ukończony, będzie rozwijany w ramach dalszych prac nad biblioteką. Podczas tworzenia tego projektu udało mi się jednak zaimplementować podstawowe funkcjonalności, tzn struktury danych i metody umożliwiające przeprowadzenie poprawnych obliczeń.

Częścią pracy jest również dokumentacja techniczna, stworzona przy pomocy systemu Doxygen. Jego zastosowanie znacznie przyspieszyło wykonanie projektu. Dokumentacja zawiera dokładny opis napisanego kodu, udostępniony interfejs oraz wyjaśnienie szczegółów implementacji.

Praca nad projektem pokazała skalę zagadnienia. Należało dokładnie zapoznać się z metodą elementów skończonych oraz ze sposobami wykonywania obliczeń numerycznych.

Ponieważ poszczególne moduły były tworzone przez kilka osób, konieczne było wcześniejsze ustalenie stosowanych konwencji i interfejsów. Pisanie projektu poprzedził szereg spotkań zespołu, mających na celu napisanie ogólnego planu biblioteki.

Bibliografia



  1. http://home.agh.edu.pl/~milenin/Dydaktyka/mes.html [dostęp: 01-01-2011]

  2. http://www.netlib.org/lapack/ [dostęp: 03-01-2011]

  3. www.cplusplus.com [dostęp: 03-01-2011]

  4. http://brasil.cel.agh.edu.pl/~09sbfraczek/home,1,1.html [dostęp: 06-01-2011]

  5. Fortuna Z. Metody Numeryczne ,Wydawnictwa Naukowo-Techniczne, Wydanie Trzecie

  6. Jurlewicz T., Skoczylas Z. Algebra liniowa 1. Definicje, twierdzenia, wzory, Wydanie ósme, Wrocław 2001

Dokumentacja Doxygen

Class Documentation

matrix Class Reference


Reprezentacja macierzy.

#include

Public Member Functions


  • matrix ()

Konstruktor domyslny.

  • matrix (int s)

Konstruktor glowny.

  • matrix (matrix &source)

Konstruktor kopiujacy.

  • int getSize ()

  • double getVal (int x, int y)

  • void setVal (int x, int y, double val)

Ustawia wartosc elementu macierzy.

  • matrix copy ()

Tworzy kopie macierzy.

  • void setProperty (char *name, int val)

Ustawienie wlasciwosci.

Private Attributes


  • int size

Rozmiar macierzy.

  • double * arr

Tablica danych.

  • int isBand

Pasmowosc macierzy.

  • int isTriagonal

Trojkatnosc macierzy.

  • int isPositiveDefinite

Dodatnie okreslenie.

  • int isSymmetric

Symetrycznosc.

  • int isLU

Rozklad LU.

Friends


  • class solver



Detailed Description


Reprezentacja macierzy.

Constructor & Destructor Documentation

matrix::matrix (int s) [inline]


Konstruktor glowny.

Najczesciej uzywany konstruktor klasy matrix.

Parameters:

s Deklarowany rozmiar macierzy

matrix::matrix (matrix & source) [inline]


Konstruktor kopiujacy.


Parameters:

source Macierz zrodlowa, kopiowana przy pomocy konstruktora kopiujacego

Member Function Documentation

matrix matrix::copy () [inline]


Tworzy kopie macierzy.


Returns:

Macierz bedaca kopia macierzy dla ktorej uzyto funkcji

int matrix::getSize () [inline]



Returns:

Rozmiar macierzy

double matrix::getVal (int x, int y) [inline]



Parameters:

x Numer wiersza

y Numer kolumny
Returns:

Wartosc elementu we wskazanym wierszu i kolumnie macierzy

void matrix::setProperty (char * name, int val) [inline]


Ustawienie wlasciwosci.

Ustawia oznaczenie wlasciwosci macierzy.

Parameters:

name Nazwa ustawianej wlasciwosci. Mozliwe wartosci to Band,Triag,PosDef,Symm,LU

val Wartosc na jaka ustawiane jest oznaczenie. Mozliwe wartosci to 0,1,2

void matrix::setVal (int x, int y, double val) [inline]


Ustawia wartosc elementu macierzy.


Parameters:

x Numer wiersza

y Numer kolumny

val Wartosc ustawiana we wskazanym miejscu macierzy

Member Data Documentation

double* matrix::arr [private]


Tablica danych.

Wewnetrzna reprezentacja elementow macierzy. Konkretny wymiar i sposob przechowywania wartosci zalezy od wybranego typu macierzy.

int matrix::isBand [private]


Pasmowosc macierzy.

Oznaczenie wskazujace czy macierz jest macierza pasmowa. Mozliwe wartosci to: 0- nieustalone 1- wlasciwosc aktywna 2- wlasciwosc nieaktywna

int matrix::isLU [private]


Rozklad LU.

Oznaczenie wskazujace ze macierz jest produktem rozkladu LU Mozliwe wartosci to: 0- nieustalone 1- wlasciwosc aktywna 2- wlasciwosc nieaktywna

int matrix::isPositiveDefinite [private]


Dodatnie okreslenie.

Oznaczenie wskazujace czy macierz jest dodatnio okreslona Mozliwe wartosci to: 0- nieustalone 1- wlasciwosc aktywna 2- wlasciwosc nieaktywna

int matrix::isSymmetric [private]


Symetrycznosc.

Oznaczenie wskazujace czy macierz jest symetryczna. Mozliwe wartosci to: 0- nieustalone 1- wlasciwosc aktywna 2- wlasciwosc nieaktywna

int matrix::isTriagonal [private]


Trojkatnosc macierzy.

Oznaczenie wskazujace czy macierz jest macierza trojkatna. Mozliwe wartosci to: 0- nieustalone 1- wlasciwosc aktywna 2- wlasciwosc nieaktywna

int matrix::size [private]


Rozmiar macierzy.

Okresla liczbe kolumn i wierszy macierzy.

The documentation for this class was generated from the following file:


  • sources/solver.h

solver Class Reference


Solver MES.

#include

Public Member Functions


  • solver ()

Konstruktor domyslny.

  • void setSaveMatrix (bool setting)

Ustawienie trybu zapisywania macierzy.

  • void solve (matrix *A, vector *b, vector *w)

Przeprowadzenie obliczen.

  • void solveLU (vector *b, vector *w)

Przeprowadzenie obliczen przy pomocy rozkladu LU.

Private Attributes


  • matrix t

Kopia macierzy.

  • bool saveMatrix

Zachowanie macierzy.

  • int * savedPivot

Zachowanie indeksow pivotingu.

Detailed Description


Solver MES.

Instancje tej klasy umozliwiaja przeprowadzenie obliczen i rozwiazanie ukladow rownan.



Member Function Documentation

void solver::setSaveMatrix (bool setting) [inline]


Ustawienie trybu zapisywania macierzy.

Wlacza/wylacza tryb zapisywania macierzy do ponownych obliczen.

Parameters:

setting Nowe ustawienie trybu zapisywania. False- macierz nie bedzie zachowana. True- macierz zostanie zachowana

void solver::solve (matrix * A, vector * b, vector * w) [inline]


Przeprowadzenie obliczen.

Wykonuje obliczenia na zadanej macierzy i wektorowi przy zadanych wczesniej parametrach symulacji. Wynik obliczen jest zapisywany do wskazanego przez uzytkownika wektora.

Parameters:

A wskaznik na macierz na ktorej maja byc przeprowadzane obliczenia

b wskaznik na wektor obciazen

w wskaznik na wektor do ktorego funkcja ma zapisac wynik obliczen

void solver::solveLU (vector * b, vector * w) [inline]


Przeprowadzenie obliczen przy pomocy rozkladu LU.

Wykonuje obliczenia wykozystujac stworzony wczesniej rozklad LU. Wynik obliczen zapisywany jest do wskazanego przez uzytkownika wektora.

Parameters:

b wskaznik na wektor obciazen

w wskaznik na wektor do ktorego funkcja ma zapisac wynik obliczen

Member Data Documentation

int* solver::savedPivot [private]


Zachowanie indeksow pivotingu.

Tablica indeksow pivotingu dla dla zapisanej macierzy LU. Konieczna dla poprawnego dzialania funkcji Lapack.

bool solver::saveMatrix [private]


Zachowanie macierzy.

Oznaczenie wskazujace czy macierz po przeprowadzeniu obliczen nalezy zachowac do kolejnych symulacji.

matrix solver::t [private]


Kopia macierzy.

Kopia macierzy przechowywana do ponownych obliczen

The documentation for this class was generated from the following file:


  • sources/solver.h

vector Class Reference


Reprezentacja wektora.

#include

Public Member Functions


  • vector ()

Konstruktor domyslny.

  • vector (int s)

G³owny konstruktor.

  • vector (vector &source)

Konstruktor kopiujacy.

  • int getSize ()

  • double getVal (int x)

  • void setVal (int x, double val)

Ustawia wartosc elementu wektora.

  • vector copy ()

Tworzy kopie wektora.

Private Attributes


  • int size

Rozmiar macierzy.

  • double * arr

Tablica danych.

Friends


  • class solver



Detailed Description


Reprezentacja wektora.

Constructor & Destructor Documentation

vector::vector (int s) [inline]


G³owny konstruktor.

Najczesciej uzywany konstruktor klasy vector

Parameters:

s Deklarowany rozmiar wektora

vector::vector (vector & source) [inline]


Konstruktor kopiujacy.


Parameters:

source Wektor zrodlowy, kopiowany przy pomocy konstruktora kopiujacego

Member Function Documentation

vector vector::copy () [inline]


Tworzy kopie wektora.


Returns:

Wektor bedacy kopia macierzy dla ktorej uzyto funkcji

int vector::getSize () [inline]



Returns:

Rozmiar wektora

double vector::getVal (int x) [inline]



Parameters:

x Numer elementu
Returns:

Wartosc wskazanego elementu wektora

void vector::setVal (int x, double val) [inline]


Ustawia wartosc elementu wektora.


Parameters:

x Numer elementu

val Wartosc ustawiana we wskazanym miejscu wektora

Member Data Documentation

double* vector::arr [private]


Tablica danych.

Wewnetrzna reprezentacja elementow wektora

int vector::size [private]


Rozmiar macierzy.



Okresla liczbe elementow wektora.

The documentation for this class was generated from the following file:


  • sources/solver.h


1   2   3   4   5


©operacji.org 2017
wyślij wiadomość

    Strona główna