Michlet dla początkujących, lekcja dziewiąta
Godzilla
Godzilla to ten sam Michlet, odczytujący dane z tego samego pliku in.mlt , tylko robiący optymalizację. Odpalamy go, uruchamiając fabryczny plik godzilla.bat , który zawiera w środku, jak łatwo sprawdzić, polecenie mlt930w -godz
Wcześniej jednak trzeba przygotować plik wejściowy, tzn. dopisać do naszego pliku in.mlt informacje, niezbędne do optymalizacji.
Jak to zrobić? - znowu warto obejrzeć (i zmodyfikować, zamiast pisać samemu od zera) pliki przykłądowe, tym razem z katalogu godzilla . I oczywiście przeczytać instrukcję, godzman_930.pdf
Przypatrzmy się przykładowemu plikowi. Będzie to jacht jednokadłubowy, o kadłubie skośnodennym. Niestety, Godzilla nie potrafi kształtować kadłuba dowolnie - ale omówiony poprzednio kadłub, zdefiniowany przez 3 przekroje, jest dla niej w pełni osiągalny.
Bierzemy więc plik mlt , z jkadłubem zdefiniowanym tak:
# ============================ FIRST HULL ==============================
# Offsets
# |-- xspacing --|-------- zkeel ---------|------- ywp -------|------ shape ------|---- cut-off -----|
# f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19
20,0.25,0.25,0.25,0.20,0.80,1.00,1.00,0.90,0.60,1.00,0.70,0.00,1.00,1.00,1.00,1.00,0.90,0.90,0.90,0.90
# Displacement Volume (cubic metres)
3.0
# Length (metres)
12.0
itd.
Kształt kadłuba nie musi być specjalnie sensowny, w końcu Godzilla będzie go zaraz przerabiać.
Na końcu pliku dodajemy sekcję:
# ======================== GODZILLA INPUT DATA =========================
# Random Seed (integer: min 0, max 32000)
1
# Number of Ships (integer: min 3, max 120)
120
#Tego możemy nie ruszać. Number of Ships można zmniejszyć, np. do 20 , ale raczej nie bardziej.
# Objective Function (integer: see Manual)
3
# Objective Function Variant(integer: see Manual)
0
3 oznacza minimalizację całkowitego oporu. 2 to byłaby minimalizacja oporu falowego, 1 - tarcia.
3 to oczywiście najczęściej stosowany sposób minimalizacji.
# Number of Design Speeds (min 1, max 50)
4
# Design Speeds and Weightings (one pair per design speed)
# For 1 speed, use:
8.0,0.25
4.0,0.5
3.0,0.7
2.4,1.0
To, co minimalizujemy, to opór przy danej prędkości. Godzilla bierze wszystkie podane (w m/s) prędkości, opór przy każdej mnoży przez podany obok współczynnik (od 0 do 1) i sumuje. Wynik ma być możliwie najmniejszy.
Trafienie z prędkościami to sztuka - zwykle trzeba uruchomić Godzillę, pooptymalizować trochę, zobaczyć, dla jakich prędkości są jakieś górki oporów i tam ustawić wartości prędkości do optymalizacji.
Jeżeli chcemy mieć kadłub dobry w dużym zakresie prędkości, bierzemy te małe z większą wagą - bo opór przy małych prędkościach jest mniejszy, więc przy jednakowych wagach nie liczyłby się zupełnie i otrzymalibyśmy kadłub dobry tylko dla szybkiej motorówki.
# Hull Shape Function (integer: see Manual)
20
To właśnie nasz sposób opisu kadłuba za pomocą 3 przekrojów
Teraz zaczynają się ograniczenia, jakim powinien podlegać kadłub.
# ========================== SHIP CONSTRAINTS ==========================
# Minimum Displacement Overall
3
# Maximum Displacement Overall
3
# Minimum Length Overall
12.0
# Maximum Length Overall
12.0
Zwykle wiemy, ile ma ważyć łódka, stąd wyporność ustalamy dokładnie - minimum 3 tony, maksimum 3.
Podobnie - w tym przypadku - długość. Inaczej Godzilla próbowałaby zwiększyć długość ponad miarę, chociaż nie w nieskończoność (bo wraz z długością rośnie opór tarcia...). Na pewno jednak w tym przypadku byłoby więcej niż 12m.
# Minimum Width Overall
0.1
# Maximum Width Overall
10.0
# Minimum GMT Overall
-10.0
# Maximum GMT Overall
100.0
# Minimum GML Overall
-10.0
# Maximum GML Overall
10000.0
# Ship Pressure Signature Constraints (0=None)
0
# Special Ship Constraints (See manual)
0
Przy jednokadłubowcu lepiej dać tu wszędzie szerokie granice, a ograniczenia wpisać dla pojedynczego kadłuba, o tu:
# ====================== FIRST HULL CONSTRAINTS ========================
# Minimum Displacement
3.0
# Maximum Displacement
3.0
# Minimum Length (refer also to Min LOA and Max LOA)
12.0
# Maximum Length (refer also to Min LOA and Max LOA)
12.0
Zatem, wyporność i długość, na sztywno.
# Minimum Draft
0.1
# Maximum Draft
2.0
Zanurzenie. To raczej pro forma, mało prawdopodobne żeby sięgnęło 2m.
# Minimum Longitudinal Offset (Always 0.0 for Hull 1)
0.0
# Maximum Longitudinal Offset (Always 0.0 for Hull 1)
0.0
# Minimum Lateral Offset (Always 0.0 for Hull 1)
0.0
# Maximum Lateral Offset (Always 0.0 for Hull 1)
0.0
minimalny i maksymalny odstęp między kadłubami. Dla jednokadłubowca oczywiście nie ma znaczenia, zostawiamy.
# Shape Factors: Minimum, Maximum, Seed.
0.25, 0.25, 0.25
0.25, 0.25, 0.25
0.25, 0.25, 0.25
0.0, 0.0, 0.0
0.0, 1.0, 0.8
0.0, 1.0, 1.0
0.0, 1.0, 1.0
0.0, 0.0, 0.0
0.0, 1.0, 0.6
0.0, 1.0, 1.0
0.0, 1.0, 0.7
0.0, 0.0, 0.0
1.0, 1.0, 1.0
1.0, 1.0, 1.0
1.0, 1.0, 1.0
1.0, 1.0, 1.0
0.9, 0.9, 0.9
0.9, 0.9, 0.9
0.9, 0.9, 0.9
0.9, 0.9, 0.9
Minimalne i maksymalne wartości (oraz, w trzeciej kolumnie, wartość początkowa, która musi być z zakresu pomiędzy nimi) 20 parametrów, definiujących kształt kadłuba.
Tutaj, jak widać, zażyczyłem sobie, żeby przekroje były równo odległe (Godzilla kiepsko sobie radzi w innym przypadku), nie może być zanurzonego w wodzie dziobu (głębokość na dziobie <=0 ) ani pawęży, przekroje mają być 10-procentowym kawałkiem paraboli, czyli praktycznie prostoliniowe.
# Minimum Beam (refer also to Min WOA and Max WOA)
0.1
# Maximum Beam (refer also to Min WOA and Max WOA)
10.0
Ograniczenie szerokości - tym razem nie ograniczałem, ale często trzeba, np. do wymiarów drogowych.
# Minimum Surface Area (sq. metres)
0.0
# Maximum Surface Area (sq. metres)
1000.0
# Minimum Awp (sq. metres) (min 0.0)
0.1
# Maximum Awp
1000.0
# Minimum LCB
-10.0
# Maximum LCB
10.0
# Minimum VCB
0.0
# Maximum VCB
10.0
# Minimum LCF
-10.0
# Maximum LCF
10.0
# Minimum BMT
0.0
# Maximum BMT
1000.0
Jeżeli nie potrzebujemy czegoś ograniczać (jak tu - powierzchni zmoczonej, położenia środka wyporu) to dajemy granice absurdalnie duże.
# Minimum GMT
0.75
# Maximum GMT
20.0
A tutaj jest poważne ograniczenie. Metacentrum nie niżej niż 75cm nad linią wodną. Gdyby nie to, Godzilla zrobiłaby wąziutką "żyletkę" o minimalnej stateczności, a chciałem, żeby łódka była rozsądnie stabilna.
# Minimum At
0.0
# Maximum At
10.0
# Minimum Bt
0.0
# Maximum Bt
10.0
# Minimum Tt
0.0
# Maximum Tt
10.0
# Minimum Cb
0.0
# Maximum Cb
1.0
# Minimum Cm
0.0
# Maximum Cm
1.0
# Minimum Cp
0.0
# Maximum Cp
1.0
# Minimum Cwp
0.0
# Maximum Cwp
1.0
# Minimum L/B
1.0
# Maximum L/B
50.0
# Minimum L/T
0.1
# Maximum L/T
100.0
# Minimum B/T
0.1
# Maximum B/T
50.0
Wymiary pawęży, współczynniki: blokowy i cylindryczny oraz proporcje wymiarów także dałem bez ograniczeń
# Hull Pressure Signature Constraints (0=None)
0
To zostawiamy
# Special Hull Constraints (See manual and GODZILLA examples.)
-1,2,2,1
A to jest ważne. Gdybym dał 0,0,0,0 to kadłub mógłby być dowolnie poprzeginany.
-1 oznacza, że będą tu ograniczenia
2 - że wodnice nie mogą być wklęsłe
drugie 2 - że przekroje muszą być wypukłe
1 - że przekroje podłużne nie mogą na przemian wznosić się i opadać
W sumie otrzymamy zgrabny kadłub o płynnych liniach.
# Box constraints (None for this example)
0
Tu można zażyczyć sobie, żeby w kadłubie zmieścił się np. prostopadłościan o danych wymiarach. Niekoniecznie :)
Teraz uruchamiamy godzilla.bat i (jeżeli nie było jakiegoś błędu w pliku wejściowym) zobaczymy normalny ekran Michleta. A teraz naciskamy shift+G ... i czekamy. A Godzilla liczy:
mlt10.jpg
W prawym dolnym rogu widać, ile kroków optymalizacji zrobiła i jaki otrzymała wynik (im mniejszy tym lepiej), a u góry okienka - jak wygląda kadłub. Kiedy się znudzimy, a wynik przestanie się zmieniać - warto poczekać kilkadziesiąt tysięcy kroków - naciskamy jakikolwiek inny klawisz i możemy przejrzeć, jak wyglądają opory zoptymalizowanego kadłuba.
c.d.n.
krzys