Aproksymacja Wyników Badań Plastometrycznych

za pomocą Programu komputerowego „Reology.exe

 

1 Wstęp

Program Reology.exe (autor programu A.Milenin) jest przeznaczony dla aproksymacji wyników badań plastometrycznych na podstawie plików danych wygenerowanych przez opragomowanie WinTA 6.2 plastometru - dylatometru DIL 805 A/D produkcji firmy BAHR Thermoanalyse GmbH Company. (RFN).

 

2. Porządek instalacji Programu

Program dostarcza się użytkowniku na dysku CD. Do kompletu Programu zawiera roboczą część oraz źródłowe kody programu. Opracowanie Programu dokonano w środowisku Microsoft Visual Studio w języku programowania Fortran 6.0 w części obliczeniowej i VC++ w części interfejsu użytkownika.

Projekty, które niezbędne są dla rozszerzenia lub uzupełnienia Programu przez żądanie użytkownika, znajdują się w katalogu ReoRoll. Wykonywane module Programu oraz przykłady wstępnych danych rozmieszczono w katalogu SETUP. Ten katalog zawiera teczkę REOLOGY, którą należy skopiować na twardy dysk Waszego komputera. Ta teczka zawiera jeden wykonywany plik Rheology.exe oraz niezbędne biblioteki. Program działa w systemu operacyjnym Win 9x oraz  wersji późniejszych.

 

3. Kolejność działania Programu

Uruchomić plik Rheology.exe. W otwieranym oknie znajduje się „toolbar”, który na początku ma wygląd pokazany na rys. 1.

 

 

.

Rys.1. Wygląd okna „toolbar” programu Rheology.exe

 

Poszczególne opcję (ikony) tego okna są następujące:

*      - otwarcie nowego pliku dla prowadzenia aproksymacji nowego materiału. Dane o tym materiału będą zawierali zbiór eksperymentalnych krzywych ściskania próbek pobranych z plastometru, a mianowicie wielkości naprężenia uplastyczniającego i odpowiadającym im wielkości odkształcenia dla różnych temperatur i prędkości odkształcenia.

Po jednokrotnym naciśnięciu tej ikony pojawi się zaproszenie wpisać (nazwę) imię pliku bez spacji. Jest polecono by imię pliku kojarzyło się z nazwą materiału (rys.2).

 

Rys. 2. Otwarta ikona wprowadzenia

imienia pliku nowego materiału.

 

*      - Otwarcie istniejącego pliku materiału przy, na przykład, celem aproksymacji eksperymentalnych danych dla tego materiału inną funkcją lub dodawania (uzupełnić) nowych danych, otrzymanych w innych warunkach obciążenia t4rgo samego materiału.

*      - dodawanie nowego pliku do istniejącego, który zawiera dodatkową informacje, która otrzymana podczas dodatkowych badań plastomwtrycznych tego samego materiału. Te pliki wygenerowane są przez oprogramowanie plastometru DIL 805 A/D w tekstowym formacie z rozszerzeniem *.asc (rys. 3). Po naciśnięciu tej ikony będą wyświetlone zaproszenie podać ścieżkę znalezienia dodatkowych plików. Po wprowadzeniu ścieżki dodatkowego pliku należy wpisać warunki odkształcenia wprowadzanej próbki: temperaturę i prędkość odkształcenia, które odpowiadają temu eksperymentu (rys. 4 ).

 

         .

 

Rys.3. Okno dialogowe podawania ścieżki dodatkowego pliku wyników badań *.asc.

Rys. 4. Okno wprowadzenia warunków eksperymentu.

 

Maksymalna ilość wprowadzanych plików eksperymentalnych danych nie może przekroczyć liczbę 200. Zwykle ilość plików, zawierających dane naprężenie – odkształcenie równa się ok. 30.

 - ikona wyświetlania spisku wybranych plików. Program automatycznie zamienia nazwę pliku źródłowego na format nazw odpowiadającym warunkom prowadzenia eksperymentu

*     - wywołanie dialogu sposobu aproksymacji eksperymentalnych danych (rys. 5)

 

Rys. 5. Widok otwartego okna * sposobu aproksymacji eksperymentalnych danych

 

W tym oknie wyświetla się ostania funkcja, wykorzystana użytkownikom dla aproksymacji wybranego materiału, oraz współczynniki i błąd aproksymacji (średni kwadratowy i bezwzględny maksymalny). Otwierający się spis okienka z lewej strony pozwala wybrać żądaną dla aproksymacji funkcję. Obliczenie współczynników aproksymacji prowadzi się programem naciśnięciem przycisku .

Program umożliwia automatyczny wybór funkcji według kryteria minimalnego błędu naciśnięciem .

Otwierający się w okienku spis w prawej stronie otwartego okna * pozwala wyświetlić tak wszystkie wykresy we współrzędnych „naprężenie – odkształcenie” eksperymentalne z rezultatami aproksymacji jak i jakikolwiek pojedynczy wykres dla żądanych warunków odkształcenia (temperatury i prędkości odkształcenia). Po zakończeniu aproksymacji Program generuje plik progr.f90, który zawiera tekst podprogramu w języku FORTRAN 90, obliczający naprężenie uplastyczniające według współczynników korelacji.

 

SUBROUTINE CalcReo(H,Eps,t,Ks);

implicit none;

real*8 :: H,Eps,t,Ks;

real*8 :: A(10);

A(1)= 900.087038

A(2)= 1235.092988

A(3)= 34.630524

A(4)= -1.264157

A(5)= -4141.156072

A(6)= -3.060175

A(7)= 0.000398

A(8)= 4279.494467

Ks = A(1) + A(2)*Eps + A(3)*H + A(4)*t + &

    A(5)*Eps**2 + A(6)*H**2 + A(7)*t**2 + A(8)*Eps**3;

END SUBROUTINE CalcReo;

 

*       - ikona dla graficznego wyświetlenia wszystkich doświadczalnych i aproksymujących wykresów zależności naprężenia uplastyczniającego od odkształcenia.

 

         Rys. 6. Widok graficznego przedstawienia eksperymentalnych i

aproksymujących wykresów reologicznych własności materiału.

 

*     - ikona dla graficznego wyświetlenia pojedynczych doświadczalnych i aproksymujących wykresów zależności naprężenia uplastyczniającego od odkształcenia i prędkości odkształcenia dla żądanej temperatury w postaci trójwymiarowej. Po jej naciśnięciu pojawia się zaproszenie wpisać żądaną temperaturę:

 

 

.

Rys. 7.Widok prezentacji naprężenia uplastyczniającego w

układzie 3D przy T=const

 

Przy tym w dolnym prawym kątku ekranu wyświetla się wielkości naprężenia uplastyczniającego, prędkości odkształcenia i odkształcenia, odpowiadające bieżącemu położeniu wskaźnika myszy. Obracanie wykresu prowadzi się lub myszą lub za pomocą klawiszy sterowania kursorem.

 

3. Struktura Programu

Struktura pliku *.mat przedstawiona poniżej:

 

            m_matFile.Open( NameOfFile, CFile::modeRead );

            m_matFile.Read(&m_Nfiles, sizeof(m_Nfiles));

            m_matFile.Read(&m_SumNumPoints, sizeof(m_SumNumPoints));

            for (i=0; i<m_Nfiles; i++)

            {

                        m_matFile.Read(&arMatDatSmp[i].nPointCount, sizeof(arMatDatSmp[i].nPointCount));

                        arMatDatSmp[i].pPoints = new CPoint2D[arMatDatSmp[i].nPointCount];

                        for (j=0; j<arMatDatSmp[i].nPointCount; j++)

                        {

                                   m_matFile.Read(&arMatDatSmp[i].pPoints[j].m_Eps, sizeof(arMatDatSmp[i].pPoints[j].m_Eps));

                                   m_matFile.Read(&arMatDatSmp[i].pPoints[j].m_H, sizeof(arMatDatSmp[i].pPoints[j].m_H));

                                   m_matFile.Read(&arMatDatSmp[i].pPoints[j].m_Rdisl, sizeof(arMatDatSmp[i].pPoints[j].m_Rdisl));

                                   m_matFile.Read(&arMatDatSmp[i].pPoints[j].m_t, sizeof(arMatDatSmp[i].pPoints[j].m_t));

                                   m_matFile.Read(&arMatDatSmp[i].pPoints[j].m_Tau, sizeof(arMatDatSmp[i].pPoints[j].m_Tau));

                                   m_matFile.Read(&arMatDatSmp[i].pPoints[j].m_Ts, sizeof(arMatDatSmp[i].pPoints[j].m_Ts));

                        m_matFile.Read(&arMatDatSmp[i].pPoints[j].m_TsExp, sizeof(arMatDatSmp[i].pPoints[j].m_TsExp));

                                   arMatDatSmp[i].m_H = arMatDatSmp[i].pPoints[j].m_H;

                                   arMatDatSmp[i].m_Temp = arMatDatSmp[i].pPoints[j].m_t;

                                   arMatDatSmp[i].m_PathName = "";

                                   sH.Format(_T("H= %5.3lf "), arMatDatSmp[i].m_H);

                                   sTemp.Format(_T("Temp= %5.1lf "), arMatDatSmp[i].m_Temp);

                                   arMatDatSmp[i].m_FileName = sH+sTemp;

                        }

            }

            m_matFile.Read(&m_TypeOfFunAppr, sizeof(m_TypeOfFunAppr));

            m_matFile.Read(&m_Ncoeff_Appr, sizeof(m_Ncoeff_Appr));

//          arAppr = new double(m_Ncoeff_Appr);

            for (i=0; i<m_Ncoeff_Appr; i++)

            {

                        m_matFile.Read(&arAppr[i], sizeof(arAppr[i]));

            }

            m_matFile.Read(&m_ErrorSr, sizeof(m_ErrorSr));

            m_matFile.Read(&m_ErrorMax, sizeof(m_ErrorMax));