Zasadniczo FEM wydaje się problemem, który jest w zasadzie „rozwiązany”. Istnieje wiele potężnych frameworków, takich jak Trilinos, PETSc, FEniCS, Libmesh lub MOOSE.
Łączy je jedno: są wyjątkowo „ciężkie”. Po pierwsze, instalacja zwykle jest bardzo bolesna. Po drugie, ich interfejs / API jest gruby i ciężki - musisz przełożyć cały swój pomysł na myślenie o odpowiedniej bibliotece. Oznacza to również, że interoperacyjność i możliwość rozszerzenia specjalnych wymagań lub istniejącego kodu jest trudna.
Inne projekty, takie jak (losowe przykłady) Boost, LibIGL, Aztec (solver liniowy), Eigen lub CGAL pokazują, że absolutnie możliwe jest pisanie potężnych bibliotek, które bezproblemowo integrują się z kodem C ++ lub Python, z bardzo wąskim i czystym interfejsem, bez potrzeby instalacji super ciężkich ram.
Czy istnieje naprawdę lekki pakiet dla MES? Nie szukam łatwego, automagicznego rozwiązania - szukam biblioteki, która oferuje potężne funkcje przy jednoczesnym zachowaniu wąskiego interfejsu, interoperacyjności z typowymi strukturami danych (na przykład C ++ STL) i lekkiej instalacji (na przykład tylko nagłówek).
Odpowiedzi:
Opracowałem lekką bibliotekę elementów skończonych w Pythonie 2.7, wykorzystując moc tablic NumPy i rzadkich macierzy SciPy. Ogólna idea jest taka, że biorąc pod uwagę siatkę i element skończony, masz mniej lub bardziej bezpośrednią zgodność między formą dwuliniową a (rzadką) macierzą. Użytkownik może następnie użyć wynikowej macierzy według własnego uznania.
Pozwól mi przedstawić kanoniczny przykład, w którym rozwiązujemy równanie Poissona w kwadracie jednostkowym z ładunkiem jednostkowym.
Inne komentarze:
Możesz znaleźć projekt w GitHub .
Wersja kodu Python 3 można znaleźć tutaj .
źródło
Myślę, że masz trochę zamieszania. PETSc nie należy do tej samej ligi co Fenics, Libmesh, Moose itp. W rzeczywistości wszystkie te (ciężkie) pakiety używają PETSc do algebry liniowej.
IMHO PETSc jest tak lekki, jak tylko możesz. Wymaga tylko kompilatorów C / Fortran i Pythona (używanych tylko do konfiguracji), a bibliotekę można zbudować na laptopie w niecałe 5 minut. Ponadto, najbardziej skomplikowaną częścią kodu FE jest montaż równoległy i rozwiązywanie, a PETSc zajmuje się obydwoma. Reszta (np. Obliczenia na poziomie elementu) jest raczej prosta.
Trillinos, OTOH to znacznie więcej niż szkielet algebry liniowej, np. Aztec (solver liniowy), o którym wspominasz, jest jego częścią. W pewnym sensie Azteków w Trillinos można porównać do PETSc.
źródło
Mogę polecić orzechy .
nutils spełnia co najmniej kilka wymagań dotyczących „lekkości”.
źródło