Blog berichten Volupe

Automatisering van scheepsschroefsimulatie

Automatisering van repetitieve taken is het beste! Persoonlijk geniet ik van elke taak die geautomatiseerd kan worden. En daarom bewonder ik Simcenter STAR-CCM+ zo. STAR-CCM+ is van de grond af ontwikkeld met de bedoeling om alle stadia van het virtuele prototyping proces in één platform onder te brengen. Daarbij vinden we verschillende functionaliteiten om de workflow volledig te automatiseren. De ruggengraat hiervan is een pipelined proces dat met een paar klikken opnieuw kan worden afgespeeld. In de blog van deze week richt ik me op een maritieme toepassing en laat ik zien welke mogelijkheden je vindt in Simcenter STAR-CCM+ om een reeks simulaties te automatiseren. om een propeller open water curve te genereren.

 

 

De hier getoonde simulations zijn gebaseerd op de tutorial "Moving Reference Frames: Marine Propeller in Open Water" tutorial die de workflow demonstreert voor het opzetten van een open water simulatie voor een scheepsschroef. De geometrie is de Potsdam Propeller Test Case (PPTC). Bij propellers in open water worden de karakteristieken gemeten in een homogene instroom door de instroomsnelheid te variëren. Dit vereist echter een reeks proeven of simulations.

In Simcenter STAR-CCM+ kunt u dergelijke reeksen op verschillende manieren automatiseren met behulp van:

  • Design Manager
  • Simulatie Werking
  • Java scripting

 

Hier zullen wij ons concentreren op de Design Manager opstelling en de Simulatie Werking gebruik. De laatste kan echter gemakkelijk worden gecombineerd met java-scripting voor schroefsimulatie om te schakelen tussen stationair en onstabiel simulations.

 

Design Manager

Zodra u uw basissimulatie van een enkele instroom heeft opgezet snelheidkunt u van het simulatiebestand een Design Manager-project maken. In ons geval willen wij voor de open water curve een specifieke reeks instroomsnelheden berekenen volgens de meting bij SVA Potsdam. We maken dus een handmatige ontwerpstudie en importeren de snelheden uit een csv-bestand.

Met de ingebouwde functionaliteit in Design Manager kunnen wij gemakkelijk plots en momentopnamen maken om de verkregen resultaten bij elke instroomsnelheid te evalueren.

De resultaten worden opgeslagen nadat de ontwerpstudie is voltooid en kunnen worden geraadpleegd voor verdere nabewerking of gedetailleerde analyse. We hebben ook verschillende opties om de simulations op een cluster te verdelen naar uw beste toepasbaarheid.

 

Simulatie Werking steady state

Soms hebt u echter wat meer flexibiliteit en eenvoud nodig. In dat geval kan simulatie worden toegepast in plaats van een Design Manager project aan te maken. Een voorbeeld kan zijn dat u de simulatie in batchmodus wilt uitvoeren met automatische I/O-operatie.

In het geval van de propeller open water analyse kunnen we Simulation Operation combineren met Java scripting om een tekstbestand met de snelheden in te lezen en propeller coëfficiënten naar een csv te schrijven, om een batch simulatie te automatiseren. Tot nu toe is het niet mogelijk om Java-macro's uit te voeren vanuit een Simulation Operations-boom. Maar een workaround is het gebruik van een overkoepelende macro die de simulatie uitvoert en de Simulatiebewerkingsboom controleert op macro-uitvoeringsopdrachten, zoals beschreven hier.

Op die manier kunnen we de snelheden in een array in de drijvende java-macro inlezen en een Simulatiebewerking maken die door de snelheden loopt. Een dergelijke opzet is gunstig, omdat we de nieuwe snelheidsloop starten vanaf de vorige snelheid en een betere convergentie kunnen bereiken. In feite doorliep de Simulation Operation de toestanden 1,3 keer zo snel, alleen vanwege de verminderde overhead voor bestandsmanipulatie.

Om de macro te gebruiken, voegt u een Parameter instellen operatie in de Simulatiebewerking pijplijn op het punt waarop u wilt dat uw macro of functie wordt uitgevoerd. De bewerking "Nieuwe Va instellen" zal bijvoorbeeld de volgende actie teweegbrengen:

  • Verkrijg de huidige index van snelheden
  • De simulatieparameter "Va" bijwerken
Als (blockName.startsWith("Set New Va")) {
   int vaIndex = (int) parameterI.getQuantity().getValue();
   parameterVa.getQuantity().setValue(VaList.get(vaIndex));
   sim.println("Nieuwe Va = " + VaList.get(vaIndex));
   sim.println("Nieuwe J = " + parameterJ.getQuantity().getValue());
}

Om de plots alleen bij te werken bij een update van J, activeert een verhoging van de lus-teller een Update Event. De methode wordt hier beschreven (Simulatiebewerkingen gebruiken voor parametrisch vegen) en kan ook worden gebruikt om de simulatietoestand op te slaan in een simulatiehistorisch bestand.

De simulatiebewerking Set Parameter "i++" verhoogt de lus-teller en activeert het genereren van uitvoergegevens:

Als (blockName.startsWith("i++")) {
   int jIndex = (int) parameterI.getQuantity().getValue();
   Rapport_J = sim.getReportManager().getReport("advancRatio_J");
   Rapport Report_KT = sim.getReportManager().getReport("KT");
   Rapport_KQ = sim.getReportManager().getReport("10KQ");
   Rapport_ETA = sim.getReportManager().getReport("h0");
   J[jIndex] = Report_J.getReportMonitorValue();
   KT[jIndex] = Report_KT.getReportMonitorValue();
   KQ[jIndex] = Report_KQ.getReportMonitorValue();
   ETA[jIndex] = Report_ETA.getReportMonitorValue();
}

Om de plots alleen bij te werken bij een update van J, activeert een verhoging van de lus-teller een Update Event. De methode wordt hier beschreven (Simulatiebewerkingen gebruiken voor parametrisch vegen) en kan ook worden gebruikt om de simulatietoestand op te slaan in een simulatiehistorisch bestand.

 

Uiteindelijk werken we de prestatiegrafiek bij door het nieuw geschreven csv-bestand in te lezen in een tabel om het resultaat samen met de experimentele gegevens uit te zetten:

// Werk de plot bij met berekende propellerkenmerken
Tabel fileTable_1 = sim.getTableManager().getTable("propellerPerformanceData");
fileTable_1.extract();

Simulatie Werking stationair/onregelmatig mengsel

Dit klinkt als een hoop workarounds voor iets dat heel eenvoudig is met de Design Manager. Is het de moeite waard? Misschien niet als u alleen een open water curve doet. Want een open water curve simulatie wordt gedaan voor een homogene instroom die perfect kan worden gesimuleerd met een MRF-benadering in een stabiele simulatie. Maar in het geval van een simulatie in achterstandstoestand?! Voor een dergelijke simulatie zou u moeten overschakelen van uw constante simulatie naar een transiënte simulatie nadat de stroming zich heeft ontwikkeld. En dan moet u de tijdstap geleidelijk verkleinen om een voldoende temporele discretisatie te krijgen. Nu komt het eigenlijke voordeel, het combineren van Java scripting met simulatie. Want in dit geval kunnen we de snelheidslus met een onstabiele simulatie waarbij we lus om de tijdstaplengte stapsgewijs te verminderen automatisch.

 

 

Om te schakelen tussen stabiele en onstabiele fysica hebben wij de macro's opgesplitst in elementaire functionaliteiten, zodat elke macro zeer kort en gemakkelijk te lezen en te onderhouden is (eventueel uit te breiden met wat extra automatisering zoals het veranderen van de annotatie).

De ongestage simulatie van de propeller wordt geïnitialiseerd met een temporele discretisatie van 8 graden rotatie per tijdstap. Tijdens de tweede lus wordt dit stapsgewijs teruggebracht tot 1 graad voordat de snelheid wordt bijgewerkt en de simulatie weer in steady state wordt gebracht.

Ik hoop dat dit nuttig is geweest en een manier om u enig inzicht te geven in de hulpmiddelen die beschikbaar zijn voor u als STAR-CCM+ gebruiker. Als u vragen heeft of geïnteresseerd bent in de bestanden die voor deze case zijn gebruikt, kunt u zoals gewoonlijk contact met ons opnemen via support@volupe.com.

 

Meer blogberichten

nl_BEDutch