Studi kasus dalam tesis PhD saya mengharuskan saya memiliki ekstensi interval subrutin Fortran di CHEMKIN-II (permintaan maaf untuk tautan tersebut; ini adalah yang terbaik yang bisa saya temukan untuk paket yang tidak lagi didistribusikan oleh Sandia National Laboratory). CHEMKIN-II adalah paket kimia yang digunakan dalam kimia pembakaran; karena ini adalah paket standar yang digunakan dalam pembakaran, saya tidak bisa (atau lebih tepatnya, akan lebih suka untuk tidak) menggunakan paket berbeda di luar sana.
Untuk mendapatkan ekstensi interval yang diperlukan, saya telah menggunakan alat yang dikembangkan sendiri bernama DAEPACK. Binari-binari lama yang saya gunakan untuk dapat menghasilkan ekstensi interval yang diperlukan dari subrutin CHEMKIN-II yang saya butuhkan pada OS 32-bit (dengan versi libstdc yang sesuai dengan gcc 2.95) beberapa tahun yang lalu, tetapi sejak itu rontok. tanggal, dan akan menjadi cobaan yang luar biasa untuk digunakan (karena saya harus menemukan versi 32-bit dari setiap bagian dari perangkat lunak yang saya gunakan). Kode sumber untuk paket ini juga merupakan hak milik, tetapi karena awalnya dikembangkan di MIT, dan saya bekerja di MIT, saya dapat (setelah banyak upaya) mendapatkan kode sumber untuk DAEPACK. Menggunakan kode sumber yang saya miliki, saya dapat mengkompilasi versi DAEPACK yang kompatibel dengan Linux versi 64-bit dan versi libstdc yang sesuai dengan gcc 4.xx Namun, kode sumber ini, yang saya duga sudah tua, mengkompilasi menjadi executable yang tidak berhasil menghasilkan kode ekstensi interval yang saya butuhkan untuk menyelesaikan tesis saya. Saya telah menghubungi pengembang dalam upaya untuk mendapatkan bantuannya dalam memperbaiki kode sumber, tetapi dari kontak sebelumnya dengan pengembang, saya tahu bahwa akan butuh waktu baginya untuk memperbaiki kode sumber, jika ia melakukannya sama sekali.
Inilah masalah besar: Saya memiliki 6 bulan tersisa sampai saya harus lulus karena saya kehabisan dana. Saya tidak dapat mengandalkan pengembang untuk memperbaiki DAEPACK dengan cukup cepat sehingga saya dapat dengan sukses menyelesaikan tesis PhD saya, di situlah kalian masuk.
Saya memerlukan paket yang melakukan hal berikut:
- Menghasilkan ekstensi interval, model Taylor (menggunakan aritmatika interval), dan turunan dari kode Fortran 77 yang hampir sewenang-wenang; Saya pikir satu-satunya struktur yang tidak diuraikan oleh DAEPACK adalah
DO
loop danIF
pernyataan. Karena saya memerlukan model Taylor, kode juga harus memiliki kemampuan diferensiasi otomatis (AD). - Menghasilkan ekstensi interval ini dan model Taylor dengan terjemahan sumber-ke-sumber dari kode Fortran 77 (yaitu, mem-parsing kode sumber seperti kompiler untuk menghasilkan kode sumber yang menghitung ekstensi interval dan model Taylor).
Dalam keadaan darurat, saya dapat menggunakan perangkat lunak yang melakukan dua hal di atas untuk kode C alih-alih kode Fortran 77, dan kemudian melewati semuanya f2c
. Saya benar-benar memilih untuk tidak melakukannya dengan cara ini, karena saya tidak tahu apakah melewati semua itu f2c
akan berhasil atau tidak , tetapi saya sangat putus asa.
Bisakah kalian membantu mahasiswa PhD yang putus asa?
Untuk mengantisipasi beberapa saran yang mungkin, berikut adalah pendekatan yang TIDAK akan bekerja untuk saya, mengingat batasan waktu:
- Berusaha lebih keras agar DAEPACK bekerja; percayalah, saya sudah mencoba. Dan saya sering mengganggu pengembang.
- Alat yang menghitung ekstensi interval atau model Taylor menggunakan pendekatan berorientasi objek (atau berorientasi objek). Saya tidak punya waktu untuk recode CHEMKIN-II (atau perpustakaan lain yang serupa besar) dengan tipe baru; ini terlalu besar.
- Menggunakan bahasa apa pun selain Fortran 77/90 atau C. Kode CHEMKIN-II ada di Fortran. Saya dapat mengonversinya menjadi C menggunakan
f2c
, atau jika perlu, menggunakan klon CHEMKIN-II berbasis Sandia yang disebut TChem. Hasil lama saya menggunakan CHEMKIN-II; hasil baru saya harus meniru hasil lama saya, dan saya sudah tahu bahwa Cantera tidak akan meniru apa yang dilakukan CHEMKIN-II berdasarkan studi kasus dan pengujian unit. Selanjutnya, mahasiswa pascasarjana yang mendahului saya melakukan beberapa ilmu hitam ke kode sumber CHEMKIN-II untuk mendapatkan aritmatika interval untuk bekerja dengan sangat baik. Akan sulit bagi saya untuk meniru itu dalam paket lain.