/* Obliczanie naprężeń i kierunków głównych w węzłach siatki - kostka 3D z dyskretyzacją siatką regularną, analiza skalowalności - pthreads Miłosz Czarnota i Bzowski Krzysztof gr 1. IS/IMiIP Ogólny sens: Klasa punkt reprezentuje jeden węzeł. Celem jest stworzenie dużej ilości punktów (umieszczonych w tablicy) a nastepnie policzenie dla nich naprężeń głównych. Tensor reprezentowany jest przez tablicę 3x3. Tworzymy więc tablicę wskaźników składającą się z 3 komórek, a potem w każdej tworzymy kolejną tablicę trój-elementową - dostajemy macież 2-wymiarową 3x3. Zapełniamy ją losowymi liczbami z zachowaniem jednak reguły, że musi być to tensor symetryczny (jak we wzorze z pdfa). Liczymy współczynniki (zmienne I1, I2, I3) równania III rzędu - stosując wzory z PDFa. Tworzymy równanie 3-rzędu. Za pomocą wzorów Cardana obliczamy pierwiastki tego równania, które są zarazem naprężeniami głównymi w punkcie. Czas operacji mierzymy za pomocą dedykowanej biblioteki stworzonej przez dr Krzysztofa Banasia. */ #include #include #include #include #include //------------------------------ #include "pomiar_czasu.c" #include "punkt.h" unsigned int rozmiar; int debug; void *thread_func( void *vptr_args ); punkt *cube; pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; //------------------------------ using namespace std; main (){ do { cout<<"Debug Mode [0/1]: "; cin >> debug; } while(debug !=0 && debug !=1); cout<<"Ilosc wezlow: "; cin>>rozmiar; punkt *cube = new punkt[rozmiar]; cout<<"$$ OBLICZENIA SEKWENCYJNE $$"<