Blog berichten Volupe

Overset mesh met AMR, enkele interessante opmerkingen

In de Volupe blogpost van deze week kijken we naar de combinatie van overset mesh en adaptive mesh refinement (AMR). Mijn collega Christoffer schreef een tijdje geleden een blogpost over overset mesh en hoe het werkt met verfijningen voor nauwe nabijheid tussen statische en roterende oppervlakken [Overset mesh bij nauwe nabijheid - VOLUPE Software]. In plaats daarvan wordt in dit bericht specifiek gekeken naar de instellingen waarmee we moeten werken wanneer we AMR en overset mesh combineren. We willen ervoor zorgen dat de verfijnde zone groot genoeg is om de mazen in zowel de achtergrond- als de overset mesh-regio's op te lossen, zodat de acceptor- en donorcellen in beide regio's even groot zijn.

De reden voor dit bericht is gebaseerd op een ondersteuningsgeval dat we hebben ontvangen waarbij de verfijning en de bewegende overset mesh-regio niet meer synchroon lopen. Toen we hier wat dieper op ingingen, ontdekten we dat deze offset moeilijk weg te werken is, maar we hebben enkele tips en trucs om dit probleem aan te pakken samengevat in dit bericht.

Voorbeeld van een vallende holle cilinder

Om te kunnen begrijpen waar het hier om gaat, wordt een dummycase gedefinieerd. Het geval betreft een holle cilinder die naar beneden beweegt in een holle overset mesh-regio (te zien in de linker afbeelding). Het middelste plaatje toont de achtergrondmaas (een trimmaas) met de overlay van de overset mesh-regio (een maas met polyhedrale cellen). De afbeelding toont de mesh vóór de initialisatie, dus ook vóór de verfijning. Het meest rechtse plaatje toont de geïnitialiseerde mesh en dus ook het eerste resultaat van de verfijning.

In dat geval zijn de adaptieve mesh-verfijningscriteria gebaseerd op de overset mesh-verfijning. Pas nadat ten minste één overset mesh-interface is gecreëerd, kunnen de overset mesh-verfijningscriteria worden geselecteerd. Zoals uit de middelste afbeelding hierboven blijkt, is de achtergrondmaas veel grover dan de maas in het overset-gebied; om de interpolatie van de overset-interface te verbeteren, wordt AMR gebruikt om de celgroottes gelijk te houden.

De afbeelding hieronder toont de modelselectie voor de zaak. Wij gaan uit van één verfijningsniveau, wat betekent dat onze verfijnde trimcellen zich slechts in maximaal acht cellen opsplitsen. Het opsplitsen van één cel in acht betekent dat de cellen in elke richting half zo groot worden, aangezien 2 tot de macht 3 acht is.

N.B. De casus is een strikte dummy-case met bevroren fysica. Alleen de impliciete ongestuurde solver, de adaptieve mesh solver en de rigid body motion solver worden tijdens de iteraties bijgewerkt.

Het probleem - Compensatie in AMR

Als we kijken naar de mesh na de eerste timestep voor deze geometrie, wanneer de timestep is bijgewerkt en alle binnenste iteraties zijn uitgevoerd, kunnen we het probleem al zien wanneer AMR wordt gecombineerd met een overset mesh. De afbeelding hieronder toont het verloop vanaf de initialisatie van de overset mesh door drie opeenvolgende tijdstappen. Reeds in de eerste tijdstap is er een offset tussen het overset gebied en het verfijnde achtergrondnet, waardoor de verfijning hier schijnbaar nutteloos is, aangezien de verfijning er is om de interpolatie van het overset raakvlak en het achtergrondnet te vergemakkelijken.

Men kan hier aanvoeren dat de verplaatsing te snel gebeurt voor de tijdstap, het is in het algemeen niet aan te raden cellen te verplaatsen waar interpolatie meer dan een volledige celgrootte plaatsvindt. Niettemin, als u de tijdstap verkleint, blijft het probleem bestaan, hoewel het steeds minder duidelijk wordt (en ook minder relevant) omdat de verfijning in feite nog steeds op één lijn ligt met het overset-gebied.

Laten we een ander voorbeeld bekijken, waarbij de tijdstap wordt opgevoerd, met als doel dat de verfijningszone nooit achterop raakt. Kleine incrementele verhogingen van de tijdstapgrootte zullen het probleem stoppen, toch?

Fout! We zien in de animatie dat aanvankelijk, wanneer de timesteps klein zijn, de achtergrondverfijning mooi volgt. Maar zodra de grootte van de timestep te groot wordt, raakt de verfijningszone achterop. Nog interessanter is dat tegen het einde van de animatie de timestep weer wordt verkleind tot kleinere (initiële) groottes en dat de verfijningszone dan zijn weg terugvindt en weer aansluit bij de overset-regio.

Het lijkt erop dat de update van de verfijningszones gebeurt na elke tijdstap, en hun locatie is gebaseerd op waar de overset mesh zich bevond in de vorige tijdstap. Nogmaals, dit is geen probleem met kleine bewegingen, of kleine tijdstappen, maar dit veroorzaakt een beperking in hoe agressief je vooruit kunt in je simulatie.

De alternatieve oplossing (voor een gereduceerde tijdstap)

We hebben een probleem vastgesteld, en ik zou dit niet posten als ik geen oplossing of workaround in gedachten had (anders dan de meer voor de hand liggende oplossing om uw tijdstap te verlagen, wat we u aanraden te doen). Als u toch kiest voor een hogere relatieve beweging in elke tijdstap dan de achtergrond mesh-verfijning kan volgen, kunt u de expert-instelling van "interface refinement width" veranderen, onder de geselecteerde overset mesh refinement criteria. Zo wordt de verfijningszone vergroot, en wordt de grotere beweging gebufferd door de grotere verfijningsbreedte.

Zelfs bij de hoogste tijdstap die we eerder hebben bekeken, ligt het hele overset-gebied nog binnen de verfijning, en zou de interpolatie goed moeten zijn. De waarde 10 is duidelijk veel groter dan nodig, maar wordt gebruikt om de nadruk te leggen. De linker afbeelding toont de initialisatie en de rechter de positie na één tijdstap.

Een andere optie waarmee u kunt werken, als u meerdere verfijningsniveaus toestaat, is werken met de breedte van afzonderlijke verfijningsniveaus. Opnieuw, uitgaande van een Interface verfijningsbreedte van 2, hebben we het Max verfijningsniveau verhoogd tot 2 en beginnen we met de instelling van de Overgangsbreedte gelijk aan 2. Dus in plaats van te werken met instellingen voor de volledige verfijningszone, beïnvloeden we de grootte van de zone door de grootte van elk individueel niveau te verhogen.

De onderstaande afbeelding toont het resultaat bij het veranderen van de interface-verfijningsbreedte van 1 naar 10, waarbij erop wordt gelet dat de breedte van het kleinste verfijningsniveau groot genoeg wordt gehouden om ervoor te zorgen dat het overgebleven gebied binnen de verfijning blijft, ongeacht de beweging.

Ik hoop dat dit nuttig voor u is geweest bij het omgaan met overset mesh motion in combinatie met AMR. Als u vragen hebt, kunt u zoals gewoonlijk contact opnemen met support@volupe.com.

Auteur

Robin Viktor

Robin Victor
+46731473121
support@volupe.com

Meer blogberichten

nl_BEDutch