Generator fal wykorzystywany w Instytucie Budownictwa Wodnego jest wyposażony w program WS sterujący ruchem klapy. Ten program potrafi wygenerować tylko najprostrze przebiegi falowe, które nie zawsze spełnieją wymagania pracowników naukowych Instytutu. Na szczęście program WS potrafi odczytać przebiegi falowe zapisane w pliku. Jednak program potrafi przeczytać tylko pliki zapisane we własnym formacie M11. Dlatego była potrzeba napisania programu, który pozwoliłby wygenerować dowolne przebiegi i zapisałby przebiegi ruchu klapy w pliku M11.
Początkowo powstał samodzielny program służący do generowania przebiegów falowych podawanych na klapę generatora fal o nazwie falorob. W 2005 roku został on zintegrowany z programem służącym do analizy offline o nazwie Winfi32. Programem Winfi32 program potrafi wygenerować 4 typy fal, przy czym pierwszy typ (fala regularna) może być generowana dla 4 różnych warunków brzegowych. Oprócz tego każdy typ jest sparametryzowany. Program potrafi zapisać wygenerowany przebieg w pliku o formacie INT (wewnętrzny format plików pomiarowych Instytutu Budownictwa Wodnego PAN), w formacie M11 (wymaganym przez program WS) oraz w pliku tekstowym.
Oprócz tego program Winfi32 potrafi czytać pliki tekstowe, które następnie można zapisać w formacie M11. Pozwala to użyć ten program jako prosty konwerter plików tekstowych na pliki M11. Format plików tekstowych jest bardzo prosty: jest to zapis macierzowy, w którym wiersze są separowane znakiem końca linii (para znaków CR i LF), a kolumny są separowane znakiem tabulatora. Liczby mają format swobodny, a separatorem dziesiętnym musi być znak kropki. Pierwsza kolumna jest czasem. Różnica między drugą wartością pierwszej kolumny a pierwszą wartością pierwszej kolumny jest uznawana za krok czasowy dt.
Program Winfi32 pracuje tylko w środowisku Windows 9x/2k/XP. Po uruchomieniu programu na ekranie ukazuje się główne okno programu. Aby wygenerować przebieg falowy należy z nenu Generate wybrać polecenie Kalman models. W oknie dialogowym, które się pojawi, należy wybrać model generacji fali a następnie wypełnić parametry, które są wykorzystywane przez ten model. Naciśnięcie przycisku OK spowoduje uruchomienie odpowiedniej procedury obliczeniowej. Po wygenerowaniu przebiegu zostanie otwarte nowe okno prezentujące ruch klapy w formie graficznej.
Wygenerowany sygnał jest traktowany w programie Winfi32 identycznie jak sygnał pomierzony kartą pomiarową lub wczytany z pliku. Dzięki temu można stosować te same narzędzia analityczne co do sygnałów pomiarowych.
Program sterujący ruchem klapy WS akceptuje tylko przebiegi steruące, które mają watości w zakresie od -0.025 do +0.025. Dlatego program Winfi32 po wygenerowaniu sygnału sterującego ruchem klapy poszukuje wartości ekstremalnych i jeśli znajdzie miejsca, w których wartości przekraczają ten przedział to zmniejsza cały sygnał tak aby, żadna wartość nie wykraczała poza przedział -0.025 ... +0.025.
Obliczenia nowego sygnału (np. ze zmienionymi parametrami generacji) można w każdej chwili powtórzyć przez wygranie polecenia Recalculate z menu Analysis lub przez naciśnięcia klawisza F9.
Wygenerowany przebieg ruchu klapy można zapisać na dysku poleceniem Save as z menu File. W oknie dialogowym z pytaniem o nazwę pliku należy pamiętać o wyborze właściwego formatu pliku. Aby zapisać plik akcetowany przez program WS trzeba wybrać drugi format o nazwie Wave syntesiser (*.M11).
Część parametrów generacji jest wspólnych. Na przykład wspólnym parametrem jest długość fali wyrażona w metrach oraz głębokość wody również wyrażona w metrach.
Ze względu na możliwości techniczne faloroba trzeba zadbać aby łagodnie "rozpędzić" klapę i łągodnie wygasić drgania na końcu doświadczenia. Z tego względu wszystkie przebiegi są podzielone na 3 etapy: (a) narastenie, (b) przebieg właściwy, (c) wygaszanie. Czasy narastania, pracy i wygaszania nie są podawane w sekundach ale w postaci liczby fal. Pozwala się to uniezależnić od podstawowego okresu fali. Oprócz tego jest jeszcze jeden wspólny parametr, który dotyczy stanu narastania i zanikania. Jest to współczynnik bezwymiarowy, który decyduje o szybkości narastania i opadania. Powiększanie jego wartości powoduje, że sygnał szybciej narasta i zanika.
Program Winfi32 generuje proces o krotności warunków brzegowych równej 3, dlatego wzory przedstawione poniżej dotyczą procesów o takiej krotności warunków brzegowych.
Fala regularna jest generowana według następującego algorytmu:
Obliczamy częstotliwość kątową i okres fali na podstawie długości fali i głębokości :
Obliczamy współczynnik narastania/zanikania na podstawie podanego współczynnika .
Obliczamy czterowymiarowy proces dla fazy narastania, stanu ustalonego i zanikania.
gdzie macierz dana jest wzorem
Warunek początkowy obliczamy ze wzoru:
Obliczając wartość przemieszczenia klapy możemy jednocześnie obliczać pierwszą, drugą i trzecią pochodną:
W identyczny sposób obliczamy proces . Zmienia się jedynie warunek początkowy:
Ostatecznie budujemy sygnał zespolony, który dla fazy narastania i stanu ustalonego ma postać:
a dla fazy zanikania ma postać
Ruch klapy to część rzeczywista sygnału zespolonego:
i dla zaniku:
Aby zapewnić ciągłość między stanem ustalonym a zanikaniem trzeba policzyć warunki początkowe sygnału gdzie punkt jest początkiem fazy zanikania:
Dla fali regularnej można wybrać jeden z czterech typów warunków początkowych przez, przy czym w jednym z nich można podać wartość parametru. Warunki początkowe zadane są przez wartości parametrów i . W pierwszym przypadku oba parametry są narzucone i obliczone ze wzorów:
W drugim przypadku oba parametry są również narzucone i oba mają tę samą wartość obliczoną ze wzoru:
W trzecim przypadku oba parametry są również narzucone i są równe 0. W czwartym ostatnim przypadku parametr jest wyzerowany a parametr może być dowolnie podany przez użytkownika.
Program Winfi32 generuje falę losową również o krotności warunków brzegowych równej 3, dlatego wzory przedstawione poniżej są szczególnym przypadkiem dla .
Fala losowa jest generowana według następującego algorytmu:
Obliczamy częstotliwość kątową i okres fali na podstawie długości fali i głębokości :
Obliczamy współczynnik narastania/zanikania na podstawie podanego współczynnika .
Obliczamy czterowymiarowy proces dla fazy narastania.
gdzie macierz dana jest wzorem
Warunek początkowy obliczamy ze wzoru:
Obliczając wartość przemieszczenia klapy możemy jednocześnie obliczać pierwszą, drugą i trzecią pochodną:
W identyczny sposób obliczamy proces . Zmienia się jedynie warunek początkowy:
Ostatecznie budujemy sygnał zespolony, który dla fazy narastania ma postać:
Ruch klapy to część rzeczywista sygnału zespolonego:
Teraz proces deterministyczny, odpowiedzialny za "rozbujanie" klapy przechodzi w proces losowy. Oba procesy i są generowane według identycznych wzorów dlatego poniższe wzory są podane tylko dla procesu :
gdzie jest czterowymiarową zmienną losową.
Szukaną macierz (dolną trójkątną) znajdujemy ze związku:
Elementy macierzy liczymy według wzoru:
gdzie parametr domyślnie przyjmuje się równy 1. W naszym przypadku macierz dana jest wzorem:
Dla fazy zanikania generujemy oba procesy i według tego samego wzoru:
Sygnał zespolony dla fazy losowej i dla zanikania ma postać
a ruch klapy liczymy ze wzoru:
Aby zapewnić ciągłość między stanem narastania a fazą losową trzeba policzyć warunki początkowe sygnału gdzie punkt jest początkiem fazy losowej:
Generowanie fali Stokes'a jest bardzo podobne do generowania fali regularnej. Najpierw generowana jest fala regularna z parametrami i . Obliczony sygnał zespolony oznaczmy tu jako . Zgodnie z wcześniejszymi wzorami jest on równy:
dla fazy narastania i stanu ustalonego, a dla fazy zanikania ma postać:
Teraz obliczamy drugą i trzecią potęgę tego sygnału:
Ostateczny sygnał sterowania klapą uzyskujemy ze wzoru:
gdzie , i są dowolnymi wagami podanymi przez użytkownika.
W przypadku fali Stokes'a uproszczono obliczanie pochodnej. Po wyznaczeniu sygnału ruchu klapy wywoływana jest funkcja policz_pochodna(), która numerycznie oblicza pochodą tego sygnału.
Obliczanie pochodnej dla wygenerowanej fali Stokes'a jest oparte na obliczaniu pochodnej wielomianu aproksymującego. Aby obliczenia były szybkie i aby zminimalizować wpływ aproksymacji (mały stopień uśredniania) wybrano aproksymację wielomianem drugiego stopnia (parabola) rozpiętą na pięciu punktach. Najlepsze efekty daje obliczanie pochodnej gdy brane są dwa punkty wcześniejsze i dwa punkty późniejsze. Takie postępowanie prowadzi do opracowania filtru o skończonej odpowiedzi impulsowej (moving average). Do przeanalizowania takiego filtru można zastosować klasyczną analizę filtrów dyskretnych i pokazać jego własności.
Celem jest znalezienie współczynników paraboli
która, najbliżej w sensie średniokwadratowym, przechodzi przez punkty: , , , , . Znając współczynniki paraboli możemy policzyć pochodną w dowolnym punkcie:
Pełny wzór jest nam potrzebny tylko na krańcach przedziału różniczkowania (dwa pierwsze i dwa ostatnie punkty pomiaru). Dla wszystkich pozostałych punktów liczymy pochodną dla i stosujemy wzór uproszczony:
Współczynniki paraboli można znaleźć rozwiązując liniowy układ równań w postaci
co dla , , , , . daje układ równań w postaci:
Jak widać są to dwa układy równań. Z jednego wyznaczamy współczynniki i , a z drugiego .
co daje proste wzory: