Substruktury (nazywane w literaturze superelementami) to specjalne elementy skończone tworzone z grup standardowych elementów pozbawionych większości stopni swobody, poza tymi, które użytkownik wskazał do zachowania w celu definiowania połączeń. Odpowiedź w obrębie substruktur jest liniowa (są to zredukowane macierze sztywności i masy wybranych elementów), ale mogą być one używane w analizach nieliniowych i podlegać dużym przemieszczeniom.
Dzięki substrukturom, całe komponenty (zwłaszcza powtarzające się) lub podzłożenia można (przy założeniu ich liniowo-sprężystej odpowiedzi) przekształcić w zredukowane macierze i umieścić w modelu globalnego złożenia. Substruktury mogą mieć wiele poziomów (do 20), co pozwala tworzyć z nich złożone konstrukcje np. pojazdów.
Substruktur można używać w krokach *STATIC, *DYNAMIC, *FREQUENCY, *COMPLEX FREQUENCY, *STEADY STATE DYNAMICS oraz *MODAL DYNAMIC w Abaqus/Standard. Można z nich też korzystać w krokach *RESPONSE SPECTRUM i *RANDOM RESPONSE, ale nie jest tam możliwe odzyskiwanie wyników z wyeliminowanych stopni swobody. W Abaqus/Explicit z substruktur można korzystać tylko pośrednio za pomocą kosymulacji.
Korzystanie z substruktur polega na:
Do generowania substruktur służy krok *SUBSTRUCTURE GENERATE (dostępny również w sekcji kroków Linear perturbation w Abaqus/CAE). Ten krok mogą poprzedzać kroki z obciążeniem wstępnym i/lub wyznaczaniem częstości drgań własnych.
Definiując krok generowania substruktury należy podać jej nazwę (analogiczna do etykiet elementów z biblioteki w Abaqus) zaczynającą się od litery Z, po której musi wystąpić dodatnia liczba całkowita n nie większa niż 9999:
*SUBSTRUCTURE GENERATE, LIBRARY=nazwa_biblioteki, TYPE=Zn
Pełna nazwa będzie miała postać nazwa_biblioteki_Zn.sim (domyślnie nazwa_joba_Zn.sim).
Alternatywnie, można użyć następującego podejścia:
*SUBSTRUCTURE GENERATE, NAME=nazwa
Pełna nazwa będzie miała postać nazwa.sim. Domyślna nazwa to nazwa_joba_Zn, gdzie n to numer kroku. To podejście jest zalecane, ale obecnie nie jest wspierane w Abaqus/CAE.
Pozostałe istotne parametry:
- OVERWRITE - nadpisanie plików (.sim, .prt, .mdl, .stt, .odb.) substruktury o tej samej nazwie jest możliwe za pomocą parametru
- RECOVERY MATRIX=YES (opcja “Evaluate recovery matrix for” w Abaqus/CAE) pozwala odzyskać wyeliminowane stopnie swobody jeśli potrzebne są wyniki w obrębie substruktury. Wartość NO znacząco oszczędza miejsce na dysku.
- MASS MATRIX=YES (opcja “Compute reduced mass matrix” w Abaqus/CAE) - generuje również zredukowaną macierz masy do analiz dynamicznych
- MODEL DATA=ODB/NONE - domyślnie aktywny zapis danych modelu substruktury do pliku nazwa_MODEL.odb w celu wizualizacji wyników odzyskanych dla substruktury
- STIFFNESS MATRIX=SYMMETRIC/UNSYMMETRIC/BOTH - możliwość ustawienia przechowywania macierzy sztywności niezależnie od ustawienia solvera, opcja BOTH (wygenerowanie instancji symetrycznej i niesymetrycznej zredukowanej macierzy sztywności) może być przydatne dla niektórych źródeł asymetrii sztywności (np. kontakt z tarciem w poślizgu), ponieważ odpowiednia macierz jest wybierana w zależności od procedury na poziomie użycia substruktury (np. symetryczna do drgań własnych i niesymetryczna do analizy statycznej). Jeśli skorzystano z opcji BOTH to na etapie użycia substruktury można skorzystać ze słowa kluczowego *SUBSTRUCTURE CHANGE, STIFFNESS UNSYMMETRY FACTOR=... w kroku *COMPLEX FREQUENCY, aby ustawić stosunek symetrycznej i niesymetrycznej instancji macierzy sztywności substruktury.
Stopnie swobody do zachowania definiuje się jako warunek brzegowy:
*RETAINED NODAL DOFS
numer_węzła, pierwszy_DOF, ostatni_DOF
Maksymalny rozmiar substruktury, wliczając zachowane i uogólnione stopnie swobody to 16 384 stopni swobody (46 340 dla substruktur generowanych do użycia poza Abaqusem – np. do analiz MBD z ciałami deformowalnymi).
Transformacje (lokalne układy współrzędnych) zachowywanych węzłów powinno się robić tylko na poziomie użycia substruktury.
Obciążenie wstępne zostaje wbudowane w substrukturę (jej generowanie działa jak każdy krok liniowo perturbacyjny). W kroku generowania substruktury należy zwolnić warunki brzegowe, które trzymały zachowane węzły podczas obciążenia wstępnego. Wyniki na poziomie globalnym i odzyskane z substruktury (oprócz np. odkształceń plastycznych) nie odzwierciedlają deformacji z obciążenia wstępnego. Ponadto, jeśli preload ma przekazywać obciążenie na inne elementy konstrukcji, należy utworzyć przypadek obciążenia substruktury (*SUBSTRUCTURE LOAD CASE) odpowiadający obciążeniom z historii preloadu a następnie zadać ten przypadek obciążenia na etapie użycia substruktury (*SLOAD).
Substruktury, podobnie jak standardowe elementy skończone, można wielokrotnie wstawiać do modelu. Ich zachowane stopnie swobody pozwalają połączyć substrukturę z resztą modelu.
W celu użycia substruktury w analizie, należy:
Składnia słów kluczowych:
1. Dla podejścia *SUBSTRUCTURE GENERATE, NAME:
*ELEMENT, TYPE=SUBSTR, ELSET=..., FILE=nazwa
numer_elementu, zachowane_węzły
*SUBSTRUCTURE PROPERTY, ELSET=..., POSITION TOL=...
przesunięcie/obrót/odbicie
2. Dla podejścia *SUBSTRUCTURE GENERATE, TYPE:
*ELEMENT, TYPE=Zn, ELSET=..., FILE=nazwa_pliku
numer_elementu, zachowane_węzły
*SUBSTRUCTURE PROPERTY, ELSET=..., POSITION TOL=...
przesunięcie/obrót/odbicie
Domyślnie Abaqus sortuje zachowane węzły układając je od najmniejszej do największej liczby i ta sama kolejność musi być zachowana przy podawaniu nowych numerów węzłów na poziomie użycia substruktury.
Warunki brzegowe na eliminowane stopnie swobody można nakładać tylko podczas generowania substruktury - zostają one wbudowane w nią i nie można ich zdjąć.
Zachowanych stopni swobody nie można eliminować więzami MPC lub liniowymi równaniami podczas generowania substruktury. Zachowując stopnie swobody, zyskuje się możliwość zmiany warunków brzegowych, nałożenia więzów lub transformacji dla zachowanych stopni swobody na poziomie użycia substruktury.
Substruktury muszą być generowane i używane w tej samej wersji programu Abaqus.
Wyniki z zachowanych stopni swobody można uzyskać bezpośrednio. Wyeliminowane stopnie swobody trzeba odzyskać (recovery) żeby otrzymać z nich wyniki. Naprężenia i odkształcenia w obrębie substruktury są wyznaczane z wyeliminowanych stopni swobody po ich odzyskaniu.
Odzyskiwanie wyeliminowanych stopni swobody stanowi dodatkowy koszt obliczeniowy. Użycie *SUBSTRUCTURE GENERATE, RECOVERY MATRIX=NO pozwala zaoszczędzić miejsce na dysku, ale wyniki w obrębie substruktury nie będą wtedy dostępne. Domyślna wartość to RECOVERY MATRIX=YES. Można również wskazać sety, dla których ma być zrobione odzyskiwanie: *SUBSTRUCTURE GENERATE, RECOVERY MATRIX=YES, ELSET=..., NSET=... (opcja “Evaluation recovery matrix for:” --> “Region:” w Abaqus/CAE).
Jeśli macierz odzyskiwania nie została utworzona, nadal można odzyskać wyniki mając dostępne pliki .sim, .mdl, .stt oraz .prt (i najlepiej też .odb) z poziomu użycia substruktury dokonując jej regeneracji z RECOVERY MATRIX=YES, kopiując nowe pliki substruktury .sim, .mdl, .stt oraz .prt w miejsce oryginalnych plików. Następnie opcją *POST OUTPUT można odzyskać dodatkowe wyniki.
Zdeformowany kształt substruktury na poziomie jej użycia można zwizualizować za pomocą zgrubnej reprezentacji geometrycznej w oparciu o wskazany elset: *SUBSTRUCTURE GENERATE, DISPLAY ELSET=... (utworzona zostanie siatka z elementów typu display).
Dla każdej substruktury na etapie jej użycia tworzony jest osobny plik .odb z numerem elementu substruktury w nazwie. Aby wyświetlić kompletny model, należy otworzyć wszystkie pliki .odb (model globalny i substruktury) jednocześnie i uwidocznić je w narzędziu Overlay Plot Layer Manager.
Dostępne jest też następujące polecenie umożliwiające połączenie 2 baz danych substruktur:
abaqus substructurecombine baseodb=... copyodb=...
Zawartość z copyodb jest dodawana do baseodb. Jeśli model zawiera więcej niż 2 substruktury, należy najpierw połączyć bazy danych dwóch z nich a następnie scalić nowo połączoną bazę z każdą z kolejnych baz substruktur. Alternatywnie, można użyć wtyczki Plug-ins --> Tools --> Combine ODBs.
Aby uzyskać wyniki dla wyeliminowanych stopni swobody, należy na etapie użycia substruktury utworzyć field output request wskazując Substructure jako Domain i wskazać dostępne sety recovery. W interfejsie słów kluczowych odpowiada za to *SUBSTRUCTURE PATH, ENTER ELEMENT=n. Wszystkie żądania wyników po tym słowie kluczowym muszą się odnosić do substruktury używanej jako element o numerze n. Z kolei parametr LEAVE pozwala zakończyć żądania wyników w obrębie bieżącej substruktury i wrócić do poprzedniego poziomu substruktur (wielokrotne użycie tego słowa kluczowego pozwala przechodzić między poziomami substruktur). Potrzebne są pliki .sim, .prt, .stt oraz .mdl z generowania substruktury (dla wszystkich poziomów substruktur). Wyniki w obrębie substruktury nie uwzględniają wpływu preloadu.
Odzyskiwanie wyników nie jest dostępne w procedurach response spectrum i random response.
Dodatkową opcją jest keyword *SUBSTRUCTURE MATRIX OUTPUT dodawany do generowania substruktury i umożliwiający odczyt jej macierzy przez zewnętrzne oprogramowanie lub przez Abaqusa (nie trzeba wtedy zachowywać plików .sim - ręczne podejście używane czasem do zaoszczędzenia miejsca na dysku). Parametry STIFFNESS, MASS, SLOAD i RECOVERY MATRIX wybierają macierze do zapisania. Parametr FILENAME wskazuje plik do zapisu w formacie .mtx.
Polecenie abaqus substructurerecover pozwala odzyskać wyniki substruktur przy pomocy modalnych macierzy odzyskiwania oszczędzając czas i miejsce na dysku oraz pozwalając na zapis naprężeń i odkształceń w dodatkowych pozycjach elementowych. Ta metoda wymaga uruchomienia analizy typu transient dynamic z substrukturą i zapisania jej uogólnionych przemieszczeń przy pomocy *SUBSTRUCTURE OUTPUT. Następnie należy użyć tego polecenia podając nazwę substruktury i plik zawierający rozwiązania dla wszystkich jej stopni swobody:
abaqus substructurerecover job=... substructure=... input=...
Odzyskane wyniki trafią do pliku .odb o nazwie wskazanej jako job.
Podczas tworzenia substruktur tworzone są też ich wektory obciążeń. Przypadek obciążenia (load case) reprezentowany przez wektor obciążeń jest nazywany przypadkiem obciążenia substruktury. Na poziomie użycia te wektory można skalować i zadawać na substruktury (jako jedyne obciążenia możliwe do zadania w obrębie substruktur). Dzięki temu unika się konieczności ponownego przeliczania wektorów obciążeń za każdym razem, gdy obciążenia (szczególnie rozłożone) zmieniają się na poziomie użycia.
W kroku generowania substruktury:
*SUBSTRUCTURE LOAD CASE, NAME=nazwa_przypadku_obciążenia
*DLOAD
numer_elementu, etykieta_obciążenia, wartość_obciążenia
W kroku użycia substruktury:
*SLOAD
numer_elementu, nazwa_przypadku_obciążenia, skala
W krokach static perturbation oraz SSD, przypadki obciążeń substruktur mogą być uwzględnione w przypadkach obciążeń kroku (w obrębie słowa kluczowego *LOAD CASE).
Przypadki obciążeń substruktur muszą być odniesione do każdego kolejnego poziomu substruktury, aby użyć ich na poziomie globalnym. Nazwy tych przypadków obciązeń na każdym kolejnym poziomie mogą być identyczne (są niezależne z poziomu na poziom).
Warunki brzegowe nie mogą być uwzględniane w przypadkach obciążeń substruktur – aby zadać niezerowy warunek brzegowy, należy zachować odpowiedni stopień swobody i zdefiniować warunek brzegowy na poziomie użycia substruktury.
Obciążenie grawitacją może stanowić część przypadku obciążenia substruktury (wtedy podlega obrotowi podążając za lokalnym układem współrzędnych substruktury podczas jej użycia) lub można wyznaczyć wektory obciążenia grawitacyjnego substruktury podczas jej generowania (wtedy działa w stałym kierunku globalnym w czasie użycia substruktury): *SUBSTRUCTURE GENERATE, GRAVITY LOAD=YES (opcja “Compute gravity load vectors” w Abaqus/CAE).
Dostępne są dwa rodzaje substruktur do analiz dynamicznych:
W przypadku konwencjonalnych substruktur w analizach dynamicznych konieczne jest wygenerowanie macierzy masy (*SUBSTRUCTURE GENERATE, MASS MATRIX=YES lub opcja “Compute reduced mass matrix” w Abaqus/CAE) i uwzględnienie gęstości i/lub punktowych mas.
Dostępne są dwie techniki redukcji dla konwencjonalnych substruktur w dynamice:
Redukcja Guyana to najprostsze podejście, w którym macierz masy jest redukowana przy pomocy takiej samej transformacji jak dla macierzy sztywności. W efekcie masa jest skupiona tylko w zachowanych stopniach swobody a wyeliminowane stopnie swobody mogą odpowiadać tylko statycznie na ruch zachowanych stopni swobody. Ta metoda jest oparta na zachowywaniu dodatkowych stopni swobody, które nie są potrzebne do połączenia substruktury z resztą modelu, po to by poprawić odpowiedź dynamiczną substruktury (zachowuje się stopnie swobody biorące istotny udział w spodziewanych drganiach). Minusem tej metody jest konieczność starannego doboru zachowywanych stopni swobody (zachowanie tylko tych używanych do połączeń daje niską dokładność) biorąc pod uwagę rosnący rozmiar macierzy. Ta metoda jest dokładna, jeśli efekty bezwładnościowe są niewielkie.
Dodawanie postaci dynamicznych eliminuje konieczność doboru dodatkowych zachowywanych stopni swobody. Aby skorzystać z tej metody, należy poprzedzić generowanie substruktury krokiem *FREQUENCY i określić, które postaci drgań własnych mają zostać zachowane (keyword *SELECT EIGENMODES lub opcja “Specify retained eigenmodes by” w Abaqus/CAE). Zachowanie postaci drgań własnych znacznie zwiększa dokładność zredukowanej macierzy mas (dodając jednak pewien koszt obliczeniowy związany z dodatkowym krokiem *FREQUENCY). Istnieje kilka podejść do warunków brzegowych generowanych substruktur w procedurze eigenfrequency extraction:
Dwie ostatnie metody mogą niekiedy zapewnić większą dokładność przy miejszej liczbie postaci drgań w porównaniu do metody fixed interface, w przypadku której określenie potrzebnej liczby modów może być trudne (związany model może mieć wyższe częstotliwości drgań własnych niż docelowy model globalny). Czas generowania substruktury może się jednak znacząco wydłużyć w porównaniu z tą samą liczbą modów fixed interface. Istotne zwiększenie wydajności i zmniejszenie wymaganego miejsca na dysku można osiągnąć za pomocą solvera AMS (nie wspiera on jednak obciążeń grawitacją i przypadków obciążeń substruktur, jak również substruktur sprzężonych akustyczno-strukturalnych).
Parametr RESIDUAL MODES słowa kluczowego *SUBSTRUCTURE GENERATE pozwala dodać resztkowe postaci drgań własnych (wyznaczane we wcześniejszych analizach statycznych perturbacyjnych) do substruktury w celu poprawienia jej przybliżenia odpowiedzi modelu w wysokich częstotliwościach.
Substruktury otrzymują wkład z tłumienia materiałowego, elementowego i globalnego podczas ich generowania. Z kolei tłumienie substruktur na poziomie ich użycia uwzględnia tłumienie elementowe, proporcjonalne i modalne.
Możliwe jest generowanie zredukowanych macierzy tłumienia:
Do istniejącej macierzy tłumienia wiskotycznego można też dodać tłumienie tarciowe – parametr FRICTION DAMPING=YES.
Dodatkową konstrolę nad macierzami tłumienia zapewnia słowo kluczowe *DAMPING CONTROLS, VISCOUS=..., STRUCTURAL=... (wartości: ELEMENT – tylko tłumienie materiałowe i elementowe, FACTOR – tylko wsp. tłumienia globalnego, COMBINED - domyślne, mieszane tłumienie, NONE – brak tłumienia).
Z kolei kontrolę nad tłumieniem substruktur na poziomie ich użycia zapewnia słowo kluczowe *SUBSTRUCTURE DAMPING CONTROLS, VISCOUS=..., STRUCTURAL=... (parametry analogiczne jak wyżej).
Jeśli tłumienie nie było zdefiniowane na poziomie generowania substruktury, może się przydać możliwość zdefiniowania go na poziomie użycia substruktury:
Poza konwencjonalnymi substrukturami, dostępne są też substruktury oparte o częstotliwości, które używają informacji o sztywności, bezwładności, tłumieniu i częstotliwości do wygenerowania pojedynczego, zespolonego, skondensowanego operatora dla każdego określonego punktu częstotliwościowego. W przeciwieństwie do konwencjonalnych substruktur biorą pod uwagę właściwości zależne od częstotliwości dla wszystkich podanych częstotliwości. Dają dokładną odpowiedź dla punktów częstotliwościowych wskazanych dla kondensacji (pomiędzy nimi odpowiedź jest przybliżona). Konwencjonalne substruktury w analizach statycznych stanowią dokładną reprezentację modelu. Podobnie substruktury oparte o częstotliwości stanowią dokładną reprezentację modelu, ale tylko w analizach direct SSD. Nie są wspierane obciążenia substruktur.
Generowanie (muszą używać tych samych zachowanych stopni swobody):
*STEADY STATE DYNAMICS, DIRECT
*RETAINED NODAL DOFS
...
*SUBSTRUCTURE GENERATE
*RETAINED NODAL DOFS
...
Dla zwiększenia wydajności (ograniczonej przez użycie obu tych procedur w jednej analizie), można skorzystać z techniki restartu analiz.
Użycie w analizach direct SSD:
*SUBSTRUCTURE PROPERTY, FREQUENCY BASED=MATCHED/ALL/NO FREQUENCIES
Wartość MATCHED FREQUENCIES (domyślna) oznacza użycie tych substruktur tylko dla pasujących częstotliwości (dla pozostałych używane są konwencjonalne substruktury), ALL FREQUENCIES to ich użycia dla wszystkich częstotliwości a NO FREQUENCIES to używanie tylko konwencjonalnych substruktur.
Technika tworzenia i używania substruktur pozwala na znaczne przyspieszenie obliczeń dużych złożeń, zwłaszcza z powtarzającymi się komponentami i podzłożeniami, pod warunkiem, że można założyć ich liniową odpowiedź. Pozwala również odizolować nieliniowości poza substrukturą - obszar z lokalnymi nieliniowościami (np. kontaktem) jest modelowany w standardowy sposób, podczas gdy reszta modelu korzysta z substruktur.
Dzięki kosymulacji, substruktury można nawet stosować w Abaqus/Explicit. Są one również bardzo przydatne w analizach z grupy liniowej dynamiki, ale wymagają dodatkowych działań przy tworzeniu. Można je też z powodzeniem stosować razem z symetrią cykliczną. Ich uniwersalność i mnogość opcji pozwala na ich wykorzystanie w bardzo wielu rzeczywistych problemach inżynierskich.
Więcej informacji na temat substruktur można uzyskać z dokumentacji oraz z kursu “Substructures and Submodeling with Abaqus”.