Czy można zastosować dwa różne programy do modelowania w celu wzajemnego potwierdzenia wyników?

8

Modele komputerowe

Modelowanie komputerowe jest stosowane w różnych dziedzinach inżynierii. W szczególności rozważam analizę strukturalną lub analizę elementów skończonych (MES). Czasami modele przyspieszają powtarzalne obliczenia, które można wykonać ręcznie. Czasami modele są używane do wykonywania obliczeń, które nie są łatwe, a nawet niemożliwe do wykonania ręcznie.

Kontrola

Istnieje kilka standardowych metod sprawdzania wyników modeli komputerowych.

  • Uruchom modele weryfikacyjne i potwierdź, że wyniki odpowiadają wcześniej obliczonej odpowiedzi.
  • Uruchom proste modele, które można sprawdzić ręcznie.
  • Przetestuj modele fizyczne.

Problem z pierwszymi dwiema metodami sprawdzania powyżej polega na tym, że albo sprawdzają tylko określone sytuacje, albo sprawdzają tylko proste części programu.

Metoda modelu fizycznego może być droga w przypadku modeli pełnowymiarowych, a modele w skali nie zawsze dają takie same wyniki jak w pełnym rozmiarze.

Pozostawia to lukę w tym, jakie wyniki można sprawdzić. W przypadku każdego skomplikowanego modelu nie ma łatwego sposobu sprawdzenia, czy wyniki z programu są prawidłowe. Inżynier musi ufać, że oprogramowanie wygenerowało prawidłowe wyniki z modelu.

Kontrola porównania

Model można wprowadzić do dwóch różnych programów (stworzonych przez różne firmy). Zakłada się, że jeśli wyniki dwóch modeli są wystarczająco podobne, wówczas wyniki powinny być poprawne dla zastosowanego modelu. Nie wychwyciłoby to żadnych błędów podczas tworzenia oryginalnego modelu, ale wychwyciłoby błędy w implementacji oprogramowania.

  • Czy można użyć dwóch oddzielnych programów do sprawdzenia „poprawności” wyników z modelu?
  • Czy zastosowanie tej metody porównywania modelu w dwóch oddzielnych programach zapewniłoby taki sam poziom pewności wyników, jak każda inna metoda sprawdzania?
  • Jakie mogą być wady korzystania z tej procedury?
Hazzey
źródło
„Prom kosmiczny” udał się na orbitę za pomocą 5 x komputerów pokładowych. 4 z nich uruchomiło ten sam program, sprawdzając sobie nawzajem wyniki, uzgodniły między sobą, kto był zdrowy i głosował na każdego szalonego członka. Piąty komputer miał zupełnie inny program napisany niezależnie przez inny zespół. 'W razie czego'. Nie wiem czy kiedykolwiek był potrzebny.
Russell McMahon,
Oba programy komputerowe mogą się mylić w ten sam sposób, więc powiedziałbym „nie”. To nie jest dobra praktyka. Lepiej jest porównywać rozwiązania numeryczne z przypadkami, w których rozwiązanie jest znane, analitycznie, empirycznie lub poprzez opublikowane badania.
Paul,
@Paul Tak, tak zwykle się sprawdza, ale to tylko pokazuje, że program działa w przypadku tego problemu. Możesz założyć, czy inne konfiguracje, które używają tych samych ścieżek kodu są również poprawne, ale zawsze będzie przypadek krawędzi. Założeniem zawartym w użyciu dwóch oddzielnych programów jest to, że programiści mają błędy w różnych przypadkach brzegowych.
hazzey

Odpowiedzi:

7

Tak, uzyskanie drugiej opinii może być przydatne. Odbywa się to rutynowo w prognozach pogody, w których dokładne rozwiązania nie są znane, i istnieje pewna ocena, w jaki sposób zastosować różne czynniki.

W analizie naprężeń siatki elementów skończonych będzie mniej miejsca na poruszanie się, ponieważ iteracyjne równania do jego rozwiązania będą w zasadzie takie same bez względu na to, kto napisał oprogramowanie. Prawdziwym problemem jest nie tyle rozwiązywanie siatki, co przede wszystkim tworzenie wystarczająco dobrej siatki.

Jednym ze sposobów uzyskania wielu opinii jest zmiana parametrów siatki. Mam nadzieję, że nadal otrzymujesz prawie taką samą odpowiedź. Jeśli sprawisz, że siatka będzie 2 razy drobniejsza i otrzymasz znacznie inną odpowiedź, to jest to silna wskazówka, że ​​oryginalna siatka nie była wystarczająco szczegółowa. Ty też nie wiesz na pewno, że następna siatka jest wystarczająco szczegółowa, bez robienia jeszcze bardziej szczegółowej i uzyskania tej samej odpowiedzi.

Oczywiście obecnie samo generowanie siatki jest w pewnym stopniu zautomatyzowane i adaptacyjne. Nie chodzi już tylko o fizykę rozwiązywania siatki, ale obejmuje heurystykę o tym, kiedy i jak podzielić. Różne oprogramowanie może się pod tym względem różnić, dlatego przydatne może być uruchomienie dwóch różnych programów z tymi samymi danymi początkowymi.

Olin Lathrop
źródło
6

Piszę to z perspektywy inżyniera, który opracowuje oprogramowanie symulacyjne.

Myślę, że opisana praktyka jest zła i zalecam, aby nie używać dwóch różnych programów do „potwierdzania” wyników.

Zasadniczo dwa różne programy do modelowania nie mogą być użyte do potwierdzenia niczego poza ich podobieństwem. Dwa programy mogą łatwo uzyskać dwie podobne, ale błędne odpowiedzi, szczególnie jeśli używają podobnych modeli. Mogę wymyślić co najmniej jeden przypadek, w którym tak jest zdecydowanie, a Trevor Archibald wspomina o innym. Byłbym pod większym wrażeniem dwóch programów, które wykorzystują różne techniki modelowania, uzyskując podobne wyniki.

Temat ten nazywa się weryfikacją i walidacją modeli komputerowych i ma dość obszerną literaturę. Przedstawię szkic podstaw. Weryfikacja polega na porównaniu modelu z „dokładnym” rozwiązaniem (które może być obliczeniem ręcznym lub czymś bardziej złożonym), to znaczy sprawdzeniem matematyki oprogramowania. Założenia dotyczące dokładnego rozwiązania mogą być błędne, ale przynajmniej chcesz upewnić się, że oprogramowanie poprawnie rozwiązuje matematykę. Walidacja polega na porównaniu modelu z eksperymentem. Pozwala to sprawdzić, czy model, którego używasz, jest dokładny, co nie jest w stanie Ci pomóc.

Problem z pierwszymi dwiema metodami sprawdzania powyżej polega na tym, że albo sprawdzają tylko określone sytuacje, albo sprawdzają tylko proste części programu.

To prawdziwy problem, przed którym stają twórcy oprogramowania i użytkownicy. Istnieją ustalone sposoby radzenia sobie z tym, które są znacznie lepsze niż porównywanie dwóch różnych programów.

Problem polega na tym, że nigdy nie można przetestować każdego możliwego przypadku. Twoje oprogramowanie może przejść przypadek A, ale przypadek A nie obejmuje fizyki X, Y lub Z, a to całkowicie wyklucza przypadek B. Tak więc, chciałbyś mieć dużą liczbę kontroli obejmujących przynajmniej wszystkie podstawowe funkcje, które chcesz sprawdzić. Wiele programów ma „pakiety V&V”, które są dokładnie takie.

Pod względem weryfikacji istnieje wiele opcji. Możesz wygenerować nowe dokładne rozwiązania dla różnych przypadków. Czasami to samo w sobie jest wystarczające. Jednak, jak zauważyłeś, często to, co możesz zrobić ręcznie, ogranicza się do bardzo prostych przypadków. W bardziej ogólnych przypadkach można zastosować technikę zwaną metodą wytwarzanych rozwiązań (Google it). Wymaga to programowania i może się popsuć, ale pozwala przetestować w zasadzie wszystko, co tylko możesz wymyślić. (Nawiasem mówiąc, część bałaganu może być obsługiwana przez bibliotekę taką jak MASA .)

Chciałbym również zauważyć, że wbrew temu, co sugeruje Olin Lathrop, metodą wytwarzanych rozwiązań można wygenerować dokładnie takie rozwiązania do celów testowania. Nie są one „dokładne” w ścisłym tego słowa znaczeniu, ponieważ nie spełniają dokładnie równań, które oprogramowanie rozwiązuje bez modyfikacji. Ale spełniają równania, które są bardzo bliskie, a różnicę uwzględnia się, aby test był rygorystyczny. Ta technika nie jest obecnie bardzo popularna, ale została wykorzystana do przetestowania rzeczy, które wcześniej uważano za trudne do przetestowania.

Pod względem walidacji możesz poszukać więcej danych eksperymentalnych lub uruchomić własne eksperymenty.

Ben Trettel
źródło
4

Myślę, że jest to ogólnie dobra praktyka.

Korzystając z dwóch różnych programów, można uniknąć dwóch rodzajów błędów: 1) błędów wynikających z niedokładnego oprogramowania (których nie należy przeoczyć), 2) błędów wynikających z braku przyzwyczajenia użytkownika do oprogramowania (ukryte opcje, ustawienia domyślne ...).

Jeśli oprogramowanie jest wystarczająco różne, szanse na uzyskanie dwukrotnie takich samych błędnych wyników są niskie.

W ten sposób nie można jednak uniknąć błędów wynikających ze złego wyboru modelowania. Powiedziałbym więc, że główną wadą jest nadmierne zaufanie do wyników, ponieważ zostały one potwierdzone przez dwa programy.

Myślę, że lepiej jest opanować jedno oprogramowanie, uruchamiając wszelkiego rodzaju przypadki testowe (na przykład w porównaniu z wynikami akademickimi), niż używając kilku programów i mając jedynie przeciętną wiedzę. Co więcej, uważam, że najlepiej jest znać podstawy analizy MES, a używanie tylko dwóch programów „uruchamianych jednym kliknięciem” jest złą praktyką, ponieważ użytkownicy mogą odtwarzać błędy modelowania.

PS: Piszę jako użytkownik analizy elektromagnetycznej / termicznej MES (brak innych domen).

TZDZ
źródło
2

Odpowiedź z punktu widzenia inżyniera projektu

Porównanie wyników jednego programu z drugim da ci pewien poziom pewności, że wyniki są poprawne. Jest mało prawdopodobne, aby dać ci 100% pewności, ale ten poziom pewności jest trudny do osiągnięcia.

Dużym problemem, jaki widzę, jest możliwość przeniesienia modelu z jednego oprogramowania do drugiego. Chociaż import / eksport modelu jest ulepszany przez większość firm programistycznych (z powodu BIM), nie spodziewałbym się, że wszystkie funkcje modelu będą mogły zostać wyeksportowane. Geometria jest stosunkowo łatwa do importowania / eksportowania, ponieważ plik wymiany musi zawierać tylko współrzędne. Ale np. Wersje końcowe członków mogą być przechowywane w bardzo różny sposób przez różne oprogramowanie, więc chyba, że ​​/ dopóki nie zostanie uzgodniony uniwersalny format wymiany plików, podejrzewam, że trzeba będzie wiele wysiłku, aby całkowicie odbudować model w drugim programie.

Z mojego własnego doświadczenia wynika, że ​​błędy w wynikach są znacznie bardziej prawdopodobne na skutek nieprawidłowego wprowadzania danych lub błędnych założeń niż na podstawie źle napisanego oprogramowania. Czas i wysiłek związany z użyciem niezależnego oprogramowania do weryfikacji odpowiedzi prawdopodobnie nie jest dobrym wykorzystaniem twojego czasu.

Odpowiedź z punktu widzenia inżyniera oprogramowania

Weryfikacja oprogramowania pod kątem innego oprogramowania nie jest traktowana jako uzasadnienie poprawności oprogramowania. Zdecydowanie lepiej jest znaleźć opublikowane dane / wyniki, które można wykorzystać do zweryfikowania poprawności odpowiedzi oprogramowania. Wyobraź sobie spotkanie sprzedażowe, podczas którego firma programistyczna próbuje sprzedać swoje oprogramowanie firmie inżynieryjnej:

Inżynier: Skąd wiemy, że twoje oprogramowanie jest prawidłowe?

Sprzedawca oprogramowania: Sprawdziliśmy oprogramowanie naszego konkurenta i otrzymaliśmy tę samą odpowiedź.

Inżynier: Więc mówisz, że twój konkurent jest wystarczająco lepszy od ciebie, że jego oprogramowanie jest miarą, na podstawie której mierzysz swoje oprogramowanie? Wygląda na to, że zamiast tego powinniśmy kupić jego oprogramowanie!

AndyT
źródło
1
Mam nadzieję, że Inżynier Oprogramowania nie reklamuje porównania oprogramowania z innym programem, nawet jeśli tak jest w laboratorium. Pomyślałbym również, że inżynier oprogramowania doceniłby, że mogą istnieć przypadki brzegowe, które nie zostały całkowicie objęte testami jednostkowymi.
hazzey
2

Zgadzam się z innymi odpowiedziami tutaj, że ogólnie może to być dobry pomysł i pomoże zapewnić dokładność wyników symulacji. Jeśli chodzi o to, jak dobry jest w stosunku do innych metod weryfikacji, powiedziałbym, że wcześniej znane wyniki i testy fizyczne są lepszymi opcjami, jeśli są wykonalne, ale obliczenia ręczne mogą wymagać nadmiernego uproszczenia, jeśli model jest wystarczająco złożony.

To, na co naprawdę chcę zwrócić uwagę, to kwestia, której nie zajęto się w końcowym punkcie: potencjalnych słabościach tej praktyki. Użycie dwóch różnych pakietów FEA może uchwycić osobliwość jednego pakietu, który powoduje błąd, pod warunkiem, że można zidentyfikować, która analiza jest poprawna, a która wyłączona. Istnieją jednak ogólne ograniczenia dotyczące MES ogólnie, niezależnie od metody lub wdrożenia. Ostre rogi i inne koncentratory naprężeń, które powodują osobliwości w modelu, nie są czymś, co bardzo zmieni się z opakowania na opakowanie, zawsze będą to słabe punkty. Tutaj wymagana jest wiedza inżynierska i intuicja.

Przeprowadziłem symulacje części, o których wiem, że łatwo wytrzymują pewne naprężenia, a model pokazuje, że naprężenie wewnętrzne jest 10-krotnie większe niż granica plastyczności; jest to oczywiście niepoprawne, ponieważ ma charakter ewolwentowego splajnu, a oprogramowanie FEA tego nie lubi.

Wreszcie powinno być oczywiste, że zmiana oprogramowania nie eliminuje błędów użytkownika. Jeśli popełnisz błąd w modelu lub parametrach, błąd ten popsunie Cię bez względu na to, czego użyjesz do jego analizy.

Trevor Archibald
źródło
Nie mam pojęcia, co to jest „ewolwentowy wzór splajnu”, więc ten komentarz może być nieistotny, ale jeśli otrzymujesz wewnętrzne naprężenie przy 10-krotnej wydajności, być może modelowanie przy użyciu materiału nieliniowego byłoby właściwe? To by wyeliminowało ekstremalne lokalne koncentracje stresu.
AndyT
W tym momencie nie pamiętam, czy użyłem liniowo-sprężystej odpowiedzi materiału, czy czegoś bardziej podstawowego, ale nie chciałem, aby symulacja działała wiecznie, i jest to dla nas wczesne zastosowanie MES. Było to w gruncie rzeczy przeprojektowanie istniejącej części, dla której znamy tryb awaryjny, a sposób, w jaki musieliśmy skonfigurować model, nałożył pewne rygorystyczne ograniczenia na splajn (wypust ewolwentowy jest kształtem większości zębów przekładni). Gdybym robił bardziej kompleksową analizę, mógłbym spróbować to naprawić, ale był to bardziej dowód koncepcji, w porównaniu do istniejącej części.
Trevor Archibald
1

Warunki brzegowe i technika modelowania będą miały duży wpływ na wyniki. Sugeruję uruchomienie uproszczonej / wyidealizowanej wersji (takiej jak planarna lub osiowo-symetryczna) i pełnej pełnej oraz porównanie tych dwóch.

Problem z dwoma różnymi programami FEA polega na tym, że solwery będą w dużej mierze takie same. Obserwowane różnice mogą wynikać z różnych kryteriów konwergencji lub z różnych założeń dotyczących zastosowania warunków brzegowych. Nie sprawdzasz modelu, ale zdolność każdego solvera do zrozumienia, że ​​osiągnął rozwiązanie.

Sądzę, że wyniki MES powinny być sprawdzone najpierw na podstawie zdrowego rozsądku i ręcznych obliczeń, a następnie podobnych, ale różnych modeli (na przykład brył zamiast belek) i na koniec testów fizycznych, aby sprawdzić, czy części zawiodą, gdzie i jak przewiduje FEA. Gdy część zawiedzie jest trudniejsze, ponieważ jest infuenced przez procesów produkcyjnych, odmianach materiałowych i resudial naprężeń.

ja72
źródło
Nie wszystkie dziedziny inżynierii mają luksus polegający na przeprowadzeniu testu zniszczenia fizycznego. W budownictwie lądowym i inżynierii budowlanej znaczna większość projektów buduje unikatowe przedmioty - zbudowanie kompletnego, oddzielnego przedmiotu tylko po to, aby przetestować go pod kątem zniszczenia, byłoby zbyt drogie!
AndyT,
Punkt wzięty. Nadal dobrym pomysłem jest sprawdzanie poprawności wyników MES za pomocą testów, nawet jeśli dotyczy to próbek lub elementów skali.
ja72
Widzę twój punkt ... ale w ciągu sześciu lat projektowania mostów nigdy nie słyszałem o przeprowadzeniu testu fizycznego na pomniejszonym modelu mostu.
AndyT
Których mostów powinienem wtedy unikać? Żartuję. Dlatego musi istnieć wystarczający margines bezpieczeństwa, aby uwzględnić rzeczy, które nie są modelowane w FEA. Nie ma czegoś takiego jak 100% dokładny model MES.
ja72
Rzeczywiście wszędzie mamy czynniki bezpieczeństwa! (Obecnie prawie nieistniejąca) brytyjska norma BS5400 zawierała współczynnik 1,1, zwany gammaf3, który był „czynnikiem uwzględniającym niedokładną ocenę skutków obciążenia, nieprzewidziany rozkład naprężeń w strukturze oraz różnice w dokładności wymiarowej osiągnięte w konstrukcji . ” tzn. cokolwiek wynika z analizy FE, należy pomnożyć ją przez 1,1 na wypadek, gdyby była to wartość niekonserwatywna.
AndyT