Saya telah menghabiskan beberapa bulan terakhir pada pengkodean program Fortran untuk memecahkan sistem PDE tertentu (menggambarkan aliran / pembakaran fluida). Saya mencoba menggunakan Fortran standar terbaru dan kapabilitas baru OOP yang dimiliki Fortran. Saya bekerja sendiri dan tidak memiliki guru Fortran di sebelah saya untuk mengajukan pertanyaan, jadi cara nataral untuk belajar bagi saya adalah dengan melihat perpustakaan / pemecah lain yang menggunakan Fortran modern.
Sayangnya semua perpustakaan Fortran di luar sana tampaknya ditulis dalam Fortran yang cukup tua, Fortran90. Karena itu saya harus memikirkan sendiri desain kelas dan interaksi. Dan saya sama sekali tidak yakin bahwa saya melakukannya dengan benar, terutama jika seseorang melihat dari perspektif dalm. Tapi mungkin saya telah melewatkan sesuatu dan ada paket ilmiah modern yang ditulis jika Fortran dan menggunakan OOP?
Ada banyak pustaka C ++ yang bagus untuk dipelajari (OpenFOAM, deal.II, dan lainnya) dan juga pustaka Python. Bahasa-bahasa tersebut memiliki komunitas yang lebih besar secara umum juga. Apakah mungkin lebih baik meninggalkan Fortran dan beralih bahasa jika saya ingin belajar dengan contoh?
Jawaban:
Ada kode CFD modern yang bisa Anda lihat. Sebagai contoh ...
Likuiditas : Kode CFD (FE) multifase tujuan umum; Bahkan AMR sepenuhnya tidak terstruktur
WRF : Sistem prediksi cuaca model numerik generasi selanjutnya dari NCAR
Saturne Kode : Kode CFD tujuan umum (FV); Beberapa fitur tercantum di Wikipedia
Ada kode Fortran modern serupa untuk analisis struktural.
Tetapi mereka mungkin tidak menggunakan kemampuan F2003 penuh karena kurangnya dukungan kompiler yang tersebar luas. Sebagian besar kompiler baru mendukung sebagian besar F2003 (lihat makalah ACM SIGPLAN Fortran Forum) tetapi butuh waktu untuk memiliki basis pengguna yang luas. Debian stable misalnya memiliki GCC 4.4.5 sehingga secara umum Anda tidak boleh mengharapkan pengguna Anda memiliki sesuatu yang lebih baik (mis. 4.5 / 4.6 / 4.7).
Ketika kompiler F2003 menjadi luas Anda akan melihat libs / kode yang menggunakan kemampuan F2003.
Untuk saat ini Anda dapat melihat buku ini oleh Damian Rouson tentang cara menggunakan kemampuan OOP.
sumber
Jika Anda ingin belajar dengan contoh, saya akan merekomendasikan rosettacode , sebuah situs pemrograman chrestomathy. Di sana Anda dapat menemukan banyak contoh masalah yang ditulis secara relatif dalam beberapa bahasa yang berbeda.
Mungkin yang lebih menarik bagi Anda adalah Fortran wiki , dan inilah bagian tentang OOP di Fortran yang mungkin berguna.
Fortan baik-baik saja - jangan menyerah!
sumber
Saya setuju dengan komentar oleh @JackPoulson. Saya tidak mengetahui adanya perpustakaan open source yang ditulis dalam Fortran modern. Jadi jawaban untuk pertanyaan spesifik Anda tentang perlu beralih ke C ++ untuk belajar dengan contoh adalah "ya" yang disayangkan. Tapi, untuk lebih jelasnya, saya tahu bahwa setidaknya ada satu perpustakaan yang ditulis hampir secara eksklusif di Fortran modern dengan pandangan ke arah OOP, jadi itu mungkin (dan bermanfaat). Perpustakaan ini bukan open source, jadi perpustakaan tidak akan membantu Anda mencapai tujuan belajar Anda.
Namun, Anda juga cenderung enggan membuang apa yang sudah Anda selesaikan. Jika Anda masih tertarik untuk mengejar Fortran untuk ini dan memiliki pertanyaan pengembangan spesifik, saya mendorong Anda untuk menanyakannya di StackOverflow. Ada beberapa pengembang Fortran yang sangat terampil yang aktif di sana yang dengan senang hati membantu.
sumber
Saya sedikit terlambat dalam hal ini, tetapi Anda harus melihat versi 3 dari perpustakaan aljabar linier paralel PSBLAS , yang mengambil keuntungan penuh dari fitur Fortran modern seperti warisan dan polimorfisme. Ada juga makalah di sini di mana mereka membandingkan kinerja versi itu dengan versi lama mereka, yang menempel pada F90 / F95. Cukup mengejutkan, perbedaan kecepatan diabaikan secara keseluruhan.
sumber
Saya tidak tahu dialek Fortran mana yang ditulis, tetapi ada kode PHAML William Mitchell yang merupakan tujuan umum kode FEM Fortran.
Saya akan mengakui bahwa saya tidak memihak dalam pembahasan Fortran vs C ++ tapi saya ingin menunjukkan bahwa Anda kesulitan dalam menemukan kode FEM modern berbasis Fortran sementara pada saat yang sama menemukan banyak kode berbasis C ++ memberitahu sesuatu yang dipikirkan oleh komunitas secara keseluruhan adalah jalan yang harus ditempuh. Tentu saja tidak ada yang salah dengan mencoba membangun kode Anda sendiri dalam bahasa yang Anda sukai dan kenal, tetapi survei singkat Anda sudah menunjukkan bahwa Anda sedang membangun sebuah pulau. Anda mungkin ingin mempertimbangkannya.
sumber
Ada perpustakaan Fortran open source forDat oleh ffr Engineering yang menggunakan fitur oop 2003
sumber