{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![](obrazki/P1177600-PANO.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Planowanie eksperymentu w ANSYS Workbench" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stworzenie skryptu w ANSYS APDL" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Należy: \n", "\n", "* uruchomić **Mechanical APDL Product Launcher**\n", "* wybrać katalog roboczy (**Working Directory**) jako np. **ANSYS/Planowanie_Eksperymentu**\n", "* uruchomić **ANSYS Mechanical APDL** poprzez **Run**\n", "* w katalogu roboczym przy pomocy dowolnego edytora tekstu stworzyć plik **skrypt.inp** (bez pierwszej linii %%file ...)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Created file 'D:\\ANSYS\\Planowanie_Eksperymentu\\skrypt.inp'.\n" ] } ], "source": [ "%%file D:\\ANSYS\\Planowanie_Eksperymentu\\skrypt.inp\n", "! skrypt opisujący model\n", "\n", "! parametry wejciowe\n", "w=0.1\n", "h=0.1\n", "\n", "! parametry modelu\n", "L=1\n", "Q=1e5\n", "E=1e11\n", "\n", "! parametry wyjsciowe\n", "delta_max = (3*L**4*Q)/(2*E*h**3*w)\n", "sigma_max = (3*L**2*Q)/(h**2*w)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* wczytać i uruchomić plik skryptowy poprzez wybranie w menu górnym **File -> Read input from**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wynik działania skryptu obserwować można wybierając w menu górnym **Parameters -> Scalar Parameters** :" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](obrazki/1.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "lub w **Output Window** :\n", "\n", "![](obrazki/2.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stworzenie projektu ANSYS Workbench" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Należy:\n", "\n", "* Zamknąć **ANSYS Mechanical APDL**\n", "* Uruchomić **Workbench 19.0** lub **Workbench 14.5** \n", "* Zapisać projekt w katalogu roboczym **File -> Save as** pod wybraną nazwą\n", "* Przeciągnąć z drzewka z prawej w obszar projektu **Component Systems -> Mechanical APDL**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](obrazki/3.jpg)\n", "\n", "* W oknie projektu prawym klawiszem myszy otworzyć menu **Analysis** i poprzez **Add input file->Browse** wybrać stworzony plik skryptowy \n", "\n", "* Otworzyć **Analysis** Zdefiniować parametry wejściowe i wyjściowe\n", "\n", "![](obrazki/4.jpg)\n", "\n", "Wynikiem działań powinien być projekt:\n", "\n", "![](obrazki/5.jpg)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* zapisać projekt **File -> Save**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zaplanowanie i przeprowadzenie eksperymentu komputerowego" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Należy:\n", "\n", "* otworzyć **Design of Experiments**\n", "* zdefiniować granice parametrów wejściowych **Lower Bound** i **Upper Bound** np. [0.1, 0.2]\n", "* wybrać rodzaj planu eksperymentu jako **Central Composite Design -> Face Centered -> Standard** \n", "* w górnym menu wybrać **Preview**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](obrazki/6.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Uruchomić eksperyment poprzez **Update**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Po przeprowadzeniu eksperymentu wyniki można obserwować w tabeli lub na **Parallel Chart** (wybranym na drzewku)\n", "\n", "![](obrazki/7.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dodatkowo warto wyeksportować tabelę do **.csv** poprzez **Eksport Table Data as CSV** \n", "\n", "Wczytanie danych w MATLAB:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "D = \n", "\n", " struct with fields:\n", "\n", " data: [9x5 double]\n", " textdata: {4x1 cell}\n", "\n", "\n" ] } ], "source": [ "D=importdata('D:\\ANSYS\\Planowanie_Eksperymentu\\wyniki.csv')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "opis =\n", "\n", " 4x1 cell array\n", "\n", " {'# Design Points of Design of Experiments' }\n", " {'# Central Composite Design : Face-Centered : Standard'}\n", " {'# ,P1 - W,P2 - H,P3 - DELTA_MAX,P4 - SIGMA_MAX' }\n", " {'Name,P1,P2,P3,P4' }\n", "\n", "\n", "dane =\n", "\n", " 1.0e+08 *\n", "\n", " 0.0000 0.0000 0.0000 0.0000 0.8889\n", " 0.0000 0.0000 0.0000 0.0000 1.3333\n", " 0.0000 0.0000 0.0000 0.0000 0.6667\n", " 0.0000 0.0000 0.0000 0.0000 2.0000\n", " 0.0000 0.0000 0.0000 0.0000 0.5000\n", " 0.0000 0.0000 0.0000 0.0000 3.0000\n", " 0.0000 0.0000 0.0000 0.0000 1.5000\n", " 0.0000 0.0000 0.0000 0.0000 0.7500\n", " 0.0000 0.0000 0.0000 0.0000 0.3750\n", "\n", "\n" ] } ], "source": [ "opis = D.textdata\n", "dane = D.data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analiza wyników eksperymentu komputerowego" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Należy \n", "\n", "* otworzyć **Response Surface**\n", "* wybrać rodzaj powierzchni jako **Full 2nd Order Polynomial** \n", "\n", "![](obrazki/8.jpg)\n", "\n", "* przedstawić wyniki powierzchni (na drzewku **Response Points->Response->Mode** jako 2D, 3D, lub 3D slices koniecznie z zaznaczeniem punktów eksperymentu **Response Points->Response->Show Design Points** \n", "\n", "![](obrazki/9.jpg)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* przeprowadzić weryfikację aproksymacji modelu MES poprzez wylosowanie dodatkowych punktów **Response surface->Properties->Generate Verification Points** ustalając wybraną ich liczbę **Number of Verification Points**\n", "* sprawdzić wartości parametrów opisujących jakość aproksymacji **Quality->Goodness Of Fit** w tabeli i na wykresie\n", "\n", "![](obrazki/10.jpg)\n", "\n", "* zapisać projekt **File -> Save**" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Zadania do samodzielnego rozwiązania\n", "\n", "### Zadanie 1\n", "\n", "Zmienić rodzaj planu eksperymentu na **centralny kompozycyjny rotatabilny** i porównać uzyskane parametry jakości aproksymacji\n", "\n", "### Zadanie 2\n", "\n", "Zmienić rodzaj planu eksperymentu na rozszerzony ze **Standard** na **Enhanced** i porównać uzyskane parametry jakości aproksymacji\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Zadanie 3\n", "\n", "Bazując na stworzonym projekcie stworzyć nowy plik tekstowy definiujący problem oraz dodając blok **Response Surface Optimisation** przeprowadzić optymalizację, której celem jest znalezienie minimum funkcji\n", "\n", "$$f(x_1,x_2)=(x_1-3)^2+(x_2-3)^2$$\n", "\n", "przy spełnieniu ograniczeń\n", "\n", "$$g_1(x_1,x_2)=3x_1+x_2-6 \\leq 0$$\n", "$$h_1(x_1,x_2)=x_1-x_2 = 0$$\n", "\n", "Porównać wyniki co najmniej dwu metod znalezienia rozwiązania (Screening, MOGA, NLPQL, MISQP) oraz zapisać wnioski" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Matlab", "language": "matlab", "name": "matlab" }, "language_info": { "codemirror_mode": "octave", "file_extension": ".m", "help_links": [ { "text": "MetaKernel Magics", "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" } ], "mimetype": "text/x-octave", "name": "matlab", "version": "0.15.0" } }, "nbformat": 4, "nbformat_minor": 2 }