Próbuję zoptymalizować rozdzielacz przepływu w zbiorniku, tak aby rozkład prędkości i temperatury na dowolnym przekroju był względnie jednolity. Istnieje wiele parametrów, które mogę dostosować do maksymalnej jednorodności przekroju, takie jak liczba rur wlotowych, ich położenie, orientacja i kierunek. Wiem, że mogę utworzyć wiele różnych geometrii i przetestować każdą z nich osobno, ale jest to bardzo czasochłonne. Chciałbym móc napisać program, który może iteracyjnie testować kilka przypadków jednocześnie (równolegle) i adaptacyjnie wybrać nowy zestaw geometrii do przetestowania na podstawie poprzednich wyników. Jak najlepiej to zrobić?
optimization
Paweł
źródło
źródło
Odpowiedzi:
To, co chcesz zrobić, to optymalizacja kształtu za pomocą metod opartych na gradientach. Zasadniczo oznacza to, że musisz obliczyć gradient funkcji celu wrt do parametrów modelu.
W przypadku niewielkiej liczby parametrów można użyć FD, ale w przypadku dużej liczby parametrów należy przyjrzeć się metodom powiązanym. Jeśli używasz kodu komercyjnego lub kodu innej osoby, który nie może rozwiązać równań sąsiednich, wówczas jedyną opcją jest FD.
Przejrzyj podstawowe podstawowe książki dotyczące optymalizacji kształtu.
Edycja: W przypadku problemów strukturalnych z FE można zapoznać się z książką Choi oraz Kim I i II
źródło
Jeśli odpowiednio sparametryzujesz geometryczną część konstrukcyjną, jest to problem optymalizacji czarnej skrzynki z mieszanymi parametrami dyskretnymi i ciągłymi.
DAKOTA http://dakota.sandia.gov/ i NOMAD http://www.gerad.ca/NOMAD/Project/Home.html to dwa przydatne pakiety, które pozwalają automatycznie wybierać najlepsze parametry. (DAKOTA ma lepszą obsługę aplikacji, ale NOMAD prawdopodobnie ma lepsze optymalizatory).
Aby zróżnicować geometrię, wprowadź dyskretny lub ciągły parametr dla każdej kontrolki, za pomocą której chcesz wpływać na geometrię, i zautomatyzuj budowę geometrii z kolekcji kontrolek. Zauważ, że metody bez pochodnych są dość powolne w dużych wymiarach, więc utrzymuj liczbę parametrów na względnie niskim poziomie.
Po zakończeniu eksploracji przestrzeni za pomocą jednego z powyższych pakietów możesz udoskonalić analizę, wykonując dokładniejszą optymalizację, w której ustalone są wszystkie dyskretne parametry i wszystkie parametry ciągłe, dla których nie można uzyskać pochodnej analitycznej. Możesz jednak zwiększyć liczbę parametrów kształtu ciągłego, w odniesieniu do których możesz obliczyć pochodne analityczne, ponieważ optymalizator oparty na gradiencie (taki jak IPOPT https://projects.coin-or.org/Ipopt ) może skutecznie obsługiwać znacznie większe problemy .
Jeśli nie wiesz, jak uzyskać pochodną, ale zależność jest płynna, możesz rozważyć użycie programu automatycznego różnicowania lub kodowania ciągłego problemu w AMPL, w którym to przypadku interfejs solver zajmie się pochodnymi.
Aby zapoznać się z podstawami optymalizacji kształtu, patrz np. Haftka, RT i Grandhi, RV, trukturalna optymalizacja kształtu - ankieta, Metody komputerowe w mechanice stosowanej i inżynierii 57 (1986), 91-106. (Ufaj opisowi modelowania, ale nie korzystaj z polecanych przez nich solverów, ponieważ technologia optymalizacji znacznie się poprawiła).
źródło
Jeśli chodzi o parametryzację geometrii (jak Geoff wskazał, że nie jest trywialna) - mogę szczerze polecić Brendę Kulfan - Uniwersalną metodę reprezentacji geometrii parametrycznej, J. Aircraft, Vol.45, No.1.2008 .
Opisane podejście ma zastosowanie w optymalizacji aerodynamicznej samolotów.
źródło
Istnieje również optymalizacja przestrzeni przyległej, która wydaje się być znacznie szybsza niż standardowa optymalizacja parametryczna w CFD. Ostatnio ma duży wzrost popularności w społeczności CFD, aw szczególności w OpenFOAM. Obecnie organizujemy warsztaty na temat OpenFOAM i otrzymaliśmy wiele abstrakcyjnych zgłoszeń dotyczących tej metody. Jeśli jesteś zainteresowany, sprawdź to , aby uzyskać więcej informacji, po prostu google „Optymalizacja kształtu sąsiedniej przestrzeni w CFD”.
Dodatkowe informacje:
Jeśli możesz użyć OpenFOAM, istnieje biblioteka oparta na języku Python, która jest używana do takich rzeczy, aby manipulować dużą liczbą przypadków i zmieniać ich parametry o nazwie PyFoam . W przypadku prostej geometrii można zdefiniować siatkę jako prosty blok Siatka i iterować w dowolny sposób. W prostym przypadku chodzi o napisanie kilku pętli w Pythonie. Oto jak wygląda skrypt, jeśli zmienisz prędkość warunku brzegowego „wlotowego”. Proste zmiany geometrii siatki byłyby jeszcze kilkoma liniami kodu ...
źródło
Potrzebujesz:
Kluczowe znaczenie dla narzędzia CFD mają następujące funkcje:
Mogę więc polecić następujące oprogramowanie:
Zaawansowana biblioteka symulacji, która oferuje
Wysoka wydajność:
Wysoka elastyczność i sympatia:
Generowanie i manipulowanie prymitywami geometrycznymi .
źródło