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.
sumber
Jawaban:
Dengan asumsi bahwa masalahnya adalah yang
DAEPACK
bekerja dalam mode 32-bit tetapi tidak dalam mode 64-bit, berikut adalah beberapa pendekatan untuk mengatasinya.Kompilasi
DAEPACK
dalam mode 32-bit pada OS 64-bitLihat bagaimana melakukan ini di pertanyaan lain . Ini mungkin cara mudah untuk terus bekerja dengannya.
Jika masalahnya adalah kode yang dihasilkan mengalami masalah dalam mode 64-bit, kompilasi kode yang dihasilkan dengan flag 32-bit yang serupa atau dalam lingkungan 32-bit (OS 64-bit dapat menjalankan kode 32-bit yang diberikan pustaka yang sesuai, tetapi bukan sebaliknya ).
Menciptakan seluruh
DAEPACK
lingkungan yang amanBuat lingkungan 32-bit penuh di mesin virtual menggunakan, misalnya, VirtualBox , sehingga
DAEPACK
senang berjalan di dalamnya, apakah dari binari lama, atau dikompilasi ulang di lingkungan ini. Anda bisa mendapatkan rilis OS open-source dan kompiler setua yang Anda butuhkan untuk mendapatkan versi perangkat lunak yang berfungsi.Ambil output dari
DAEPACK
dan transfer ke mesin host atau mesin virtual terpisah di mana lingkungan sesuai untuk perangkat lunak lain dan terus bekerja. Ini bisa menjadi OS 64-bit yang lebih baru, misalnya, dan terus bekerja di sana.Menggunakan fitur folder bersama di VirtualBox seharusnya memudahkan Anda.
Mintalah orang lain untuk membantu memperbaikinya
DAEPACK
Saya perhatikan bahwa Anda mengatakan bahwa Anda maupun pembuat perangkat lunak tidak memiliki waktu untuk memperbaikinya, tetapi tidak ada yang mengatakan Anda tidak dapat meminta bantuan orang lain! Pertimbangkan opsi-opsi ini:
Pekerjakan beberapa mahasiswa MIT CS sarjana untuk membantu memperbaiki masalah 32-bit vs. 64-bit. Perhatikan bahwa untuk memikat mereka agar mengerjakannya, Anda mungkin harus menggantinya, baik dengan uang atau pizza (dan / atau bir, jika sudah cukup umur untuk minum), misalnya. Atau pertimbangkan untuk bertanya apakah penasihat Anda dapat mempekerjakan beberapa mahasiswa paruh waktu untuk membantu dalam hal ini (mungkin masalah dengan pendanaan, jika dana Anda sendiri hampir habis). Atau minta bantuan dari pemrogram riset di departemen Anda.
Lobi untuk rilis sumber terbuka
DAEPACK
. Sepertinya status perizinannya tidak jelas , tetapi perhatikan bahwa MIT memiliki lisensi sumber terbuka eponymous yang cukup terkenal; melepaskannya di bawah lisensi terbuka dapat membantu mendapatkan lebih banyak perhatian pada masalah dan membantu memperbaiki masalah 32-bit vs 64-bit.Perhatikan bahwa tergantung pada departemen, hukum, administrasi, dll. Kantor Anda mungkin memerlukan waktu lebih lama dari 6 bulan yang tersisa untuk Ph.D., jadi pertimbangkan untuk memulai ini lebih awal, sambil mencari alternatif lain.
Semoga berhasil!
sumber