Bisakah dua program pemodelan yang berbeda digunakan untuk mengkonfirmasi hasil satu sama lain?

8

Model Komputer

Pemodelan komputer digunakan dalam berbagai bidang teknik. Saya secara khusus mempertimbangkan analisis struktural atau analisis elemen hingga (FEA). Terkadang model digunakan untuk mempercepat perhitungan berulang yang bisa dilakukan dengan tangan. Terkadang model digunakan untuk melakukan perhitungan yang tidak mudah atau bahkan mungkin dilakukan dengan tangan.

Memeriksa

Ada beberapa metode standar untuk memeriksa hasil model komputer.

  • Jalankan model verifikasi dan konfirmasikan bahwa hasilnya cocok dengan jawaban yang dihitung sebelumnya.
  • Jalankan model sederhana yang dapat diperiksa dengan perhitungan tangan.
  • Uji model fisik.

Masalah dengan dua metode pemeriksaan pertama di atas adalah bahwa mereka hanya memeriksa situasi tertentu atau mereka hanya memeriksa bagian-bagian sederhana dari program.

Metode model fisik bisa mahal untuk model ukuran penuh dan model skala mungkin tidak selalu memberikan hasil yang sama dengan ukuran penuh.

Ini meninggalkan celah dalam hasil apa yang bisa diperiksa. Untuk model yang rumit, tidak ada cara mudah untuk memeriksa bahwa hasil dari program sudah benar. Insinyur harus percaya bahwa perangkat lunak menghasilkan hasil yang benar dari model.

Pemeriksaan Perbandingan

Model dapat dimasukkan ke dalam dua program yang berbeda (dibuat oleh perusahaan yang berbeda). Asumsinya adalah bahwa jika hasil dari kedua model cukup mirip, maka hasilnya harus benar untuk model yang digunakan. Ini tidak akan menangkap kesalahan dalam membuat model asli, tetapi akan menangkap kesalahan dalam implementasi perangkat lunak.

  • Bisakah dua program terpisah digunakan untuk memeriksa "kebenaran" hasil dari model?
  • Apakah menggunakan metode membandingkan model dalam dua program terpisah ini memberikan tingkat kepastian yang sama dalam hasil dengan metode pengecekan lainnya?
  • Apa yang bisa menjadi kelemahan menggunakan prosedur ini?
hazzey
sumber
The "Space Shuttle" pergi ke orbit menggunakan 5 x komputer penerbangan. 4 dari mereka menjalankan program yang sama memeriksa hasil masing-masing, setuju di antara mereka sendiri yang waras dan memilih anggota gila. Komputer ke-5 menjalankan program yang sepenuhnya berbeda yang ditulis secara independen oleh tim yang berbeda. 'Untuk berjaga-jaga'. Saya tidak tahu apakah itu pernah dibutuhkan.
Russell McMahon
Kedua program komputer bisa salah dengan cara yang sama, jadi saya katakan tidak. Ini bukan praktik yang baik. Lebih baik membandingkan solusi numerik dengan kasus-kasus di mana solusi diketahui, analitis, empiris, atau melalui penelitian yang dipublikasikan.
Paul
@ Paulus Ya, itu adalah bagaimana hal-hal yang biasanya diperiksa, tapi itu hanya menunjukkan bahwa karya program yang masalah. Anda dapat membuat asumsi apakah konfigurasi lain yang menggunakan jalur kode yang sama juga benar, tetapi akan selalu ada kasus tepi. Asumsi yang termasuk dalam menggunakan dua program terpisah adalah bahwa programmer memiliki kesalahan dalam kasus tepi yang berbeda .
hazzey

Jawaban:

7

Ya, mendapatkan opini kedua bisa bermanfaat. Ini dilakukan secara rutin dalam peramalan cuaca di mana solusi pasti tidak diketahui, dan ada beberapa penilaian tentang bagaimana menerapkan berbagai faktor.

Akan ada sedikit ruang gerak dalam sesuatu seperti analisis tegangan elemen hingga yang terbatas karena persamaan iteratif untuk menyelesaikannya pada dasarnya sama, tidak peduli siapa yang menulis perangkat lunak. Masalah sebenarnya adalah tidak memecahkan jala sebanyak menciptakan jala yang cukup baik di tempat pertama.

Oleh karena itu salah satu cara untuk mendapatkan beberapa pendapat adalah dengan memvariasikan parameter mesh. Semoga Anda masih mendapatkan jawaban yang hampir sama. Jika Anda membuat mesh 2x lebih halus dan mendapatkan jawaban yang sangat berbeda, maka itu adalah petunjuk kuat bahwa mesh asli tidak cukup detail. Anda juga tidak tahu pasti bahwa jala berikutnya cukup rinci tanpa membuat yang lebih rinci dan mendapatkan jawaban yang sama.

Tentu saja saat ini generasi mesh itu sendiri agak otomatis dan adaptif. Ini tidak lagi hanya tentang fisika penyelesaian jala, tetapi termasuk heuristik tentang kapan dan bagaimana membagi. Perangkat lunak yang berbeda dapat bervariasi dalam hal ini, sehingga menjalankan dua program yang berbeda dengan data awal yang sama dapat bermanfaat.

Olin Lathrop
sumber
6

Saya menulis ini dari sudut pandang seorang insinyur yang mengembangkan perangkat lunak simulasi.

Saya pikir praktik yang digambarkan buruk, dan saya sarankan Anda tidak menggunakan dua perangkat lunak yang berbeda untuk "mengkonfirmasi" hasilnya.

Secara umum, dua perangkat lunak pemodelan yang berbeda tidak dapat digunakan untuk mengkonfirmasi banyak hal selain kesamaan mereka. Dua perangkat lunak dapat dengan mudah mendapatkan dua jawaban yang sama tetapi salah, terutama jika mereka menggunakan model yang sama. Saya bisa memikirkan setidaknya satu contoh di mana ini pasti terjadi, dan Trevor Archibald menyebutkan yang lain. Saya akan lebih terkesan dengan dua perangkat lunak yang menggunakan teknik pemodelan yang berbeda untuk mendapatkan hasil yang serupa.

Subjek ini disebut verifikasi dan validasi model komputer, dan memiliki literatur yang cukup luas. Saya akan menawarkan sketsa dasar-dasarnya. Verifikasi membandingkan model dengan solusi "tepat" (yang bisa berupa perhitungan tangan, atau sesuatu yang lebih kompleks), yaitu, memeriksa matematika perangkat lunak. Asumsi di balik solusi pasti bisa salah, tetapi setidaknya Anda ingin memastikan perangkat lunak mendapatkan bagian matematika dengan benar. Validasi membandingkan model dengan eksperimen. Ini memungkinkan Anda untuk memeriksa apakah model yang Anda gunakan akurat, yang tidak dapat dilakukan verifikasi untuk Anda.

Masalah dengan dua metode pemeriksaan pertama di atas adalah bahwa mereka hanya memeriksa situasi tertentu atau mereka hanya memeriksa bagian-bagian sederhana dari program.

Ini adalah masalah nyata yang dihadapi pengembang dan pengguna perangkat lunak. Ada cara yang mapan untuk menanganinya yang jauh lebih baik daripada membandingkan dua perangkat lunak yang berbeda.

Masalahnya adalah Anda tidak akan pernah bisa menguji setiap kasus yang mungkin terjadi. Perangkat lunak Anda mungkin lulus huruf A, tetapi kasus A tidak melibatkan fisika X, Y, atau Z, dan itu membuat Anda benar-benar keluar dari kasus B. Jadi, yang Anda inginkan adalah sejumlah besar pemeriksaan yang mencakup setidaknya semua fitur dasar yang ingin Anda periksa. Banyak perangkat lunak memiliki "suite V&V" yang pada dasarnya persis seperti itu.

Dalam hal verifikasi, ada banyak opsi. Anda dapat menghasilkan solusi tepat baru untuk berbagai kasus. Terkadang ini saja sudah memadai. Namun, seperti yang Anda perhatikan, seringkali yang dapat Anda lakukan dengan tangan terbatas pada kasus yang sangat sederhana. Untuk kasus yang lebih umum, Anda dapat menggunakan teknik yang disebut metode solusi yang diproduksi (Google it). Ini membutuhkan pemrograman dan bisa berantakan, tetapi memungkinkan Anda untuk menguji pada dasarnya apa pun yang dapat Anda pikirkan. (Ngomong-ngomong, bagian kekacauan dapat ditangani melalui perpustakaan seperti MASA .)

Juga, saya ingin menunjukkan bahwa bertentangan dengan apa yang Olin Lathrop sarankan, dengan metode solusi buatan, Anda dapat menghasilkan apa yang, untuk tujuan pengujian, solusi yang tepat. Mereka tidak "tepat" dalam arti yang ketat, karena mereka tidak benar-benar memenuhi persamaan yang diselesaikan perangkat lunak tanpa modifikasi. Tetapi mereka memenuhi persamaan yang sangat dekat, dan perbedaannya diperhitungkan untuk membuat tes yang ketat. Teknik ini tidak terlalu populer saat ini, tetapi telah digunakan untuk menguji hal-hal yang sebelumnya dianggap sulit untuk diuji.

Dalam hal validasi, Anda dapat mencari lebih banyak data eksperimental atau menjalankan eksperimen Anda sendiri.

Ben Trettel
sumber
4

Saya pikir ini adalah praktik yang baik secara keseluruhan.

Dengan menggunakan dua perangkat lunak yang berbeda, Anda mungkin bisa dua menghindari dua jenis kesalahan: 1) kesalahan yang berasal dari perangkat lunak yang tidak akurat (yang tidak boleh diabaikan), 2) kesalahan yang berasal dari kurangnya kebiasaan pengguna dengan perangkat lunak (opsi tersembunyi, pengaturan default ...).

Jika perangkat lunaknya cukup berbeda, peluang mendapatkan dua kali hasil yang salah sama rendah.

Namun, kesalahan yang datang dari pilihan pemodelan yang buruk tidak dapat dihindari dengan cara ini. Jadi saya katakan kerugian utama adalah terlalu percaya hasil karena mereka telah dikonfirmasi oleh dua perangkat lunak.

Saya pikir lebih baik untuk menguasai satu perangkat lunak, menjalankan semua jenis kasus uji (dibandingkan dengan hasil akademik misalnya), daripada menggunakan beberapa perangkat lunak dan hanya memiliki pengetahuan rata-rata. Selain itu, saya pikir yang terbaik adalah mengetahui dasar-dasar analisis FEM, dan hanya menggunakan dua perangkat lunak "satu klik untuk menjalankan" adalah praktik yang buruk karena pengguna cenderung mereproduksi kesalahan pemodelan.

PS: Saya menulis sebagai pengguna analisis elektromagnetik / termal FEM (tidak ada domain lain).

TZDZ
sumber
2

Jawab dari sudut pandang Insinyur Desain

Memeriksa hasil dari satu program dengan yang lain akan memberi Anda beberapa tingkat kepastian bahwa hasilnya benar. Tidak mungkin memberi Anda kepastian 100%, tetapi kemudian tingkat kepastian itu sulit dicapai.

Masalah besar yang saya lihat adalah kemampuan untuk mentransfer model dari satu perangkat lunak ke perangkat lainnya. Meskipun model impor / ekspor sedang ditingkatkan oleh sebagian besar perusahaan perangkat lunak (karena BIM), saya tidak akan mengharapkan semua fitur model dapat diekspor. Geometri relatif mudah untuk diimpor / diekspor karena file pertukaran hanya perlu berisi koordinat. Tetapi mis. Rilis akhir anggota cenderung disimpan dengan sangat berbeda oleh perangkat lunak yang berbeda, jadi kecuali / sampai format pertukaran file universal disetujui, saya menduga banyak upaya akan diperlukan untuk membangun kembali model dalam program perangkat lunak kedua.

Berdasarkan pengalaman saya sendiri, kesalahan dalam hasil jauh lebih mungkin berasal dari input data yang salah atau asumsi yang salah daripada dari perangkat lunak yang ditulis dengan buruk. Karena itu, waktu dan upaya dalam menggunakan perangkat lunak independen untuk memverifikasi jawaban mungkin bukan penggunaan waktu Anda dengan baik.

Jawab dari sudut pandang Insinyur Perangkat Lunak

Memverifikasi perangkat lunak terhadap perangkat lunak lain tidak dianggap sebagai pembenaran bahwa perangkat lunak Anda benar. Jauh lebih baik untuk menemukan data / hasil yang dipublikasikan yang dapat digunakan untuk memverifikasi bahwa perangkat lunak memberikan jawaban yang benar. Bayangkan sebuah pertemuan penjualan di mana perusahaan perangkat lunak berusaha menjual perangkat lunak mereka ke perusahaan teknik:

Insinyur: Bagaimana kami tahu bahwa perangkat lunak Anda benar?

Penjual perangkat lunak: Ya, kami memeriksa perangkat lunak pesaing kami dan mendapat jawaban yang sama.

Insinyur: Jadi, Anda mengatakan bahwa pesaing Anda cukup lebih baik daripada Anda bahwa perangkat lunaknya adalah tolok ukur untuk mengukur perangkat lunak Anda? Sepertinya kita harus membeli perangkat lunaknya!

AndyT
sumber
1
Saya berharap Insinyur Perangkat Lunak tidak mengiklankan bahwa perangkat lunak tersebut dibandingkan dengan program lain, bahkan jika itu terjadi di lab. Saya juga akan berpikir bahwa seorang insinyur perangkat lunak akan menghargai bahwa mungkin ada kasus tepi yang belum sepenuhnya ditutupi dengan unit test.
hazzey
2

Saya setuju dengan jawaban lain di sini, bahwa ini secara umum dapat menjadi ide yang bagus dan akan membantu memastikan keakuratan hasil simulasi. Dalam hal seberapa baik hal ini dalam kaitannya dengan metode verifikasi lainnya, saya akan mengatakan hasil yang diketahui sebelumnya dan tes fisik keduanya pilihan yang lebih baik jika layak, tetapi perhitungan tangan mungkin memerlukan penyederhanaan yang berlebihan jika modelnya cukup kompleks.

Apa yang saya ingin tunjukkan adalah sesuatu yang belum dibahas pada poin terakhir: kelemahan potensial dari praktik ini. Menggunakan dua paket FEA yang berbeda mungkin menangkap kekhasan satu paket yang menyebabkan kesalahan, asalkan Anda dapat mengidentifikasi analisis mana yang benar dan mana yang tidak aktif. Namun, ada beberapa batasan umum untuk FEA secara keseluruhan, terlepas dari metode atau implementasinya. Sudut tajam dan konsentrator stres lainnya yang menyebabkan singularitas dalam model bukanlah sesuatu yang akan banyak berubah dari paket ke paket, ini akan selalu menjadi titik lemah. Di sinilah pengetahuan dan intuisi teknik diperlukan.

Saya telah melakukan simulasi pada bagian-bagian yang saya tahu tahan terhadap tekanan tertentu, dan model menunjukkan bahwa tekanan internal 10x kekuatan luluh; ini jelas salah, karena itu adalah pola spline yang tidak disengaja dan perangkat lunak FEA tidak menyukainya.

Terakhir, harus jelas bahwa mengubah perangkat lunak tidak menghilangkan kesalahan pengguna. Jika Anda membuat kesalahan dalam model atau parameter, kesalahan itu akan mengacaukan Anda apa pun yang Anda gunakan untuk menganalisisnya.

Trevor Archibald
sumber
Saya tidak tahu apa "pola spline involute" itu, jadi komentar ini mungkin tidak relevan, tetapi jika Anda mendapatkan tekanan internal pada hasil 10x, mungkin pemodelan dengan bahan non-linear akan beres? Itu akan menghilangkan konsentrasi stres lokal yang ekstrem.
AndyT
Pada titik ini, saya tidak ingat apakah saya menggunakan respons material linier-elastis atau sesuatu yang lebih mendasar, tetapi saya tidak ingin simulasi berjalan selamanya, dan ini merupakan penggunaan awal FEA bagi kami. Pada dasarnya itu adalah desain ulang dari bagian yang sudah ada yang kita ketahui mode kegagalan, dan cara kita harus mengatur model meletakkan beberapa kendala sulit pada spline (spline yang tidak disengaja adalah bentuk dari sebagian besar gigi gigi). Jika saya melakukan analisis yang lebih komprehensif, saya mungkin akan mencoba dan memperbaikinya, tetapi ini lebih merupakan bukti konsep, dibandingkan dengan bagian yang ada.
Trevor Archibald
1

Kondisi batas dan teknik pemodelan akan sangat mempengaruhi hasil. Apa yang saya sarankan adalah menjalankan versi yang disederhanakan / ideal (seperti planar, atau axisymmetric) dan versi penuh dan membandingkan keduanya.

Masalah dengan dua perangkat lunak FEA yang berbeda adalah bahwa di bawah tenda para pemecah akan sebagian besar sama. Perbedaan yang diamati mungkin berasal dari kriteria konvergensi yang berbeda, atau dari asumsi yang berbeda tentang bagaimana kondisi batas diterapkan. Anda tidak memeriksa model, tetapi kemampuan masing-masing pemecah untuk mengetahuinya telah mencapai solusi.

Saya pikir hasil FEA harus divalidasi oleh akal sehat pertama dan perhitungan tangan, kemudian dengan model yang sama tetapi berbeda (padatan, bukan balok misalnya) dan akhirnya dengan pengujian fisik untuk melihat apakah bagian gagal di mana dan bagaimana prediksi FEA. The ketika bagian akan gagal lebih sulit karena infuenced oleh proses manufaktur, variasi material dan tekanan resudial.

Ja72
sumber
Tidak semua disiplin ilmu teknik memiliki kemewahan untuk dapat melakukan tes penghancuran fisik. Dalam teknik sipil dan struktural, sebagian besar proyek membangun satu-satunya item unik - membangun yang terpisah sepenuhnya hanya untuk mengujinya terhadap kehancuran akan menjadi sangat mahal!
AndyT
Poin yang diambil. Itu masih merupakan ide yang baik untuk memvalidasi hasil FEA dengan tes, bahkan jika itu dengan sampel atau potongan skala.
ja72
Saya bisa mengerti maksud Anda ... tetapi dalam enam tahun desain jembatan saya, saya tidak pernah mendengar uji fisik yang dilakukan pada model skala jembatan.
AndyT
Jadi jembatan mana yang harus saya hindari? Bercanda. Jadi harus ada margin keselamatan yang cukup untuk memperhitungkan barang-barang yang tidak dimodelkan dengan FEA. Tidak ada yang namanya model FEA 100% akurat.
ja72
Memang, kami memiliki faktor keamanan di mana-mana! Standar Inggris (sekarang cukup banyak) BS5400 termasuk faktor 1,1, yang disebut gammaf3 yang merupakan "faktor yang memperhitungkan penilaian yang tidak akurat dari efek pemuatan, distribusi tegangan yang tidak terduga dalam struktur, dan variasi akurasi dimensi yang dicapai dalam konstruksi . " yaitu apa pun analisis FE Anda yang memberi tahu Anda tentang stresnya, kalikan dengan 1.1 untuk berjaga-jaga seandainya itu adalah nilai yang tidak konservatif.
AndyT