MECHANIKA
Sprężyny, amortyzatory, przekładnie, zawieszenie jeżdżące po narysowanej drodze.
Wirtualne laboratorium inżynierskie. Budujesz układ z elementów, naciskasz PLAY i patrzysz, co robi fizyka — nie co miało wyjść.
Laboratorium chodzi na serwerze warsztatu — bez instalacji i bez konta. Obwody elektryczne liczy sama przeglądarka; resztę serwer, i mówi wprost, dlaczego. W środku czeka 36 gotowych laboratoriów — od swobodnego spadku po silnik spalinowy.
zasada nadrzędna
SzopaLab ma symulować prawa fizyki, a nie tylko wyglądać jak program, który je symuluje.
Sprężyny, amortyzatory, przekładnie, zawieszenie jeżdżące po narysowanej drodze.
R, C, L, diody, bezpieczniki. Kondensator ładuje się po e-tej, nie „animuje się”.
Grzałka grzeje wodę mocą, którą naprawdę pobrała z obwodu.
Mieszanie strumieni z bilansem energii: 60 °C + 10 °C daje 35 °C, nie „ciepłą”.
Rozprężanie realnie wychładza powietrze — silniki łopatkowe potrafią oszronić wydech.
Cykl skanu jak w prawdziwym sterowniku: impuls krótszy od cyklu bywa przeoczony.
Każda domena chodzi we własnym takcie i wymienia się z pozostałymi przez próbkowanie z podtrzymaniem — tak samo, jak sterownik czyta czujnik wolniej, niż zmienia się wielkość mierzona. Grzałka nie „dostaje ciepła”, tylko oddaje moc, którą pobrała z obwodu.
Silnik nie jest animowaną ilustracją. Położenie tłoka wynika z korby i korbowodu, objętość komory z położenia tłoka, siła z ciśnienia gazu, a moment z bilansu pracy. Źle dobrana maszyna po prostu nie ruszy — tak samo jak prawdziwa.
Wirnik osadzony mimośrodowo, łopatki wysuwają się ze szczelin. Objętość komory to całka sektorowa szczeliny sierpowej, moment — ciśnienie na wysuniętej części łopatki.
Mechanizm korbowy z dokładną kinematyką. Kocioł parowy wytwarza ciśnienie, a nie ma go zadanego: dołóż do pieca, a maszyna przyspieszy.
Cykl na dwa obroty wału, zakładka zaworowa, spalanie wg funkcji Wiebego. Wyprzedzenie zapłonu ma optimum — po obu stronach jest gorzej.
Praca z równania Eulera. Największy moment przy zatrzymanym wirniku, zerowy przy rozbiegu — czego nie robi żadna maszyna wyporowa.
Maszyna parowa z dwoma cylindrami ma korby ćwiartowane co 90°. Model policzył, że przy krótkim odcięciu pary istnieje położenie wału, w którym jedyny cylinder pod ciśnieniem stoi w martwym punkcie — maszyna nie ruszy. Startuje dopiero od odcięcia około 0,7. Dokładnie dlatego maszynista rusza na pełnym nastawieniu stawidła i skraca je dopiero w biegu. Tego nikt tu nie zaprogramował: to wyszło z geometrii.
Symulator, który zawsze pokazuje ładny wynik, jest bezużyteczny — bo nie da się odróżnić wyniku od życzenia. Te cztery reguły są ważniejsze od listy funkcji.
Funkcja niezaimplementowana jest oznaczona wprost, nie zaślepiona wartością, która wygląda sensownie. Wskaźnik spalania stukowego pojawia się dopiero przy modelu, który stuk liczy — stałe „1.00” na ekranie czytałoby się jako „policzone i bezpieczne”.
Tłoki stoją tam, gdzie wynika z kąta korby. Zawory otwierają się wtedy, gdy otwiera je rozrząd. Gdy maszyna gaśnie w symulacji, obraz staje — nie ma animacji obok fizyki.
Każdy model ma przypadek odniesienia z rozwiązaniem analitycznym i zapisaną tolerancją. Każde jej poluzowanie ma pisemne uzasadnienie.
Odwrócony rozrząd, dwa cylindry w martwym punkcie naraz, przepływ pod górę gradientu ciśnienia — żadnego z tych błędów nie wyłapałby przegląd kodu. Dlatego każdy przykład jest uruchamiany i sprawdzany, a nie tylko zapisywany.
Solvery elektryki, termiki, hydrauliki i pneumatyki są napisane raz, w C++, bez zależności poza biblioteką standardową. Te same pliki kompilują się dla aplikacji desktopowej, dla serwera i — przez WebAssembly — dla przeglądarki. Dzielnik napięcia daje z każdej z tych dróg tę samą liczbę do ostatniej cyfry. To jest zgodność przez konstrukcję, nie przez dyscyplinę.
Obwody elektryczne przeglądarka liczy sama, bez rundy do serwera. Reszta leci strumieniem z serwera, a powód jest pokazany wprost — bo scena z mechaniką albo z silnikiem DC policzona lokalnie dałaby pewny, błędny wynik. Klient nigdy sam nie decyduje, co potrafi policzyć: pyta o to serwer.