Doktora tezimdeki vaka çalışmaları, CHEMKIN-II'de Fortran altyordamlarının aralık uzantılarına sahip olmamı gerektiriyor (bağlantı için özür dilerim; artık Sandia Ulusal Laboratuvarı tarafından dağıtılmayan bir paket için bulabileceğim en iyisi). CHEMKIN-II yanma kimyasında kullanılan bir kimya paketidir; yanmada kullanılan standart paket olduğundan, orada farklı bir paket kullanamam (veya daha doğrusu tercih etmemeyi tercih ederim).
Gerekli aralık uzantılarını elde etmek için, şirket içinde geliştirilen DAEPACK adlı bir araç kullanıyorum. Bir kaç yıl önce 32 bit işletim sisteminde (gcc 2.95'e karşılık gelen bir libstdc sürümü ile) ihtiyaç duyduğum CHEMKIN-II altyordamlarının gerekli aralık uzantılarını oluşturabildiğim eski ikili dosyalar, ancak o zamandan beri düştü ve kullanmak için muazzam bir sıkıntı olurdu (çünkü kullandığım diğer tüm yazılımların 32 bit sürümlerini bulmak zorunda kalacaktım). Bu paket için kaynak kodu da tescillidir, ancak başlangıçta MIT'de geliştirildiğinden ve MIT'de çalıştığım için, (çok çaba sarf ettikten sonra) DAEPACK için kaynak kodunu alabildim. Sahip olduğum kaynak kodunu kullanarak, Linux'un 64 bit sürümleri ve gcc 4.xx'e karşılık gelen libstdc sürümleri ile uyumlu bir DAEPACK sürümünü derleyebildim. Ancak, bu kaynak kodun eski olduğunu, tezimi tamamlamak için gereken aralık uzantısı kodunu başarıyla oluşturmayan bir yürütülebilir dosya olarak derler. Kaynak kodunu düzeltme konusunda yardım almak için geliştiriciyle iletişime geçtim, ancak geliştiriciyle önceki temastan, kaynak kodunu düzeltmesinin zaman alacağını biliyorum.
İşte büyük sorun: mezun olmam gerekene kadar 6 ayım kaldı çünkü param tükendi. Geldiğiniz yerde doktora tezimi başarıyla tamamlayabilmem için DAEPACK'i hızlı bir şekilde düzeltmek için geliştiriciye güvenemiyorum.
Aşağıdakileri yapan bir pakete ihtiyacım var:
- Aralık genişletmeleri, Taylor modelleri (aralık aritmetiği kullanarak) ve neredeyse keyfi Fortran 77 kodunun türevlerini üretir; DAEPACK tarafından ayrıştırılmayan yapıların yalnızca
DO
döngüler veIF
ifadeler olduğunu düşünüyorum. Taylor modellerine ihtiyacım olduğundan, kodun otomatik farklılaşma (AD) özelliğine de sahip olması gerekir. - Bu aralık uzantılarını ve Taylor modellerini Fortran 77 kodunun kaynaktan kaynağa çevirisiyle üretir (yani, aralık uzantılarını ve Taylor modellerini hesaplayan kaynak kodunu oluşturmak için kaynak kodunu bir derleyici gibi ayrıştırır).
Bir tutamda, yukarıdaki iki şeyi C kodu için Fortran 77 kodu yerine yapan yazılımı kullanabilir ve sonra her şeyi geçirebilirim f2c
. Gerçekten bu şekilde yapmamayı tercih ederim, çünkü her şeyi geçip f2c
geçmeyeceğimi bile bilmiyorum, ama oldukça çaresizim.
Umutsuz bir doktora öğrencisine yardım edebilir misiniz?
Bazı olası önerileri tahmin etmek için, zaman kısıtlamaları göz önüne alındığında, benim için işe yaramayacak yaklaşımlar şunlardır:
- DAEPACK'in çalışmasını sağlamak için daha fazla çaba gösterme; inan bana, denedim. Ve sık sık geliştirici sıkıyorum.
- Nesne yönelimli (veya nesne yönelimli) yaklaşımlar kullanarak aralık uzantılarını veya Taylor modellerini hesaplayan araçlar. CHEMKIN-II'yi (veya benzer büyüklükteki herhangi bir kütüphaneyi) yeni türlerle yeniden kodlamak için zamanım yok; o çok büyük.
- Fortran 77/90 veya C dışında bir dil kullanma CHEMKIN-II kodu Fortran'dadır.
f2c
TChem adı verilen CHEMKIN-II'nin Sandia tabanlı bir klonunu kullanarak veya gerekirse C'ye dönüştürebilirim . Eski sonuçlarım CHEMKIN-II kullanıyor; yeni sonuçlarım eski sonuçlarımı çoğaltmalı ve Cantera'nın CHEMKIN-II'nin vaka çalışmalarına ve birim testlerine dayanarak yaptıklarını çoğaltmayacağını zaten biliyorum. Dahası, benden önce gelen yüksek lisans öğrencisi, aralık aritmetiğinin özellikle iyi çalışması için CHEMKIN-II kaynak koduna biraz kara büyü yaptı. Bunu başka bir pakette çoğaltmak benim için zor olurdu.