I casi di studio nella mia tesi di dottorato richiedono che io abbia estensioni di intervallo delle subroutine Fortran in CHEMKIN-II (mi scuso per il collegamento; è il migliore che ho trovato per un pacchetto non più distribuito dal Sandia National Laboratory). CHEMKIN-II è un pacchetto chimico utilizzato nella chimica della combustione; dato che è il pacchetto standard usato nella combustione, non posso (o meglio preferirei davvero) non usare un pacchetto diverso là fuori.
Per ottenere le estensioni degli intervalli richieste, ho usato uno strumento sviluppato internamente chiamato DAEPACK. I vecchi binari che ho usato per essere in grado di generare le estensioni di intervallo richieste delle subroutine CHEMKIN-II di cui avevo bisogno su un sistema operativo a 32 bit (con una versione di libstdc corrispondente a gcc 2.95) un paio di anni fa, ma da allora sono caduti di data, e sarebbe una prova tremenda da usare (perché dovrei trovare le versioni a 32 bit di ogni altro pezzo di software che ho usato). Anche il codice sorgente di questo pacchetto è proprietario, ma poiché è stato originariamente sviluppato presso il MIT, e io lavoro presso il MIT, sono stato in grado (dopo un grande sforzo) di ottenere il codice sorgente per DAEPACK. Usando il codice sorgente che ho, sono stato in grado di compilare una versione di DAEPACK compatibile con le versioni a 64 bit di Linux e le versioni di libstdc corrispondenti a gcc 4.xx Tuttavia, questo codice sorgente, che sospetto sia vecchio, compila in un eseguibile che non genera correttamente il codice di estensione dell'intervallo di cui ho bisogno per completare la mia tesi. Ho contattato lo sviluppatore nel tentativo di ottenere il suo aiuto per correggere il codice sorgente, ma da un precedente contatto con lo sviluppatore, so che ci vorrà del tempo per sistemare il codice sorgente, se lo fa.
Ecco il grosso problema: mi restano solo 6 mesi per laurearmi perché ho finito i finanziamenti. Non posso fare affidamento sullo sviluppatore per sistemare DAEPACK in modo sufficientemente rapido da consentirmi di completare con successo la mia tesi di dottorato, che è il punto in cui vieni.
Ho bisogno di un pacchetto che esegua le seguenti operazioni:
- Genera estensioni di intervallo, modelli di Taylor (usando l'aritmetica di intervallo) e derivate del codice Fortran 77 quasi arbitrario; Penso che le uniche strutture che non siano analizzate da DAEPACK siano
DO
loop eIF
dichiarazioni. Dal momento che ho bisogno dei modelli Taylor, il codice deve anche avere una funzionalità di differenziazione automatica (AD). - Genera queste estensioni di intervallo e modelli di Taylor mediante la traduzione da sorgente a fonte del codice Fortran 77 (ovvero, analizza il codice sorgente come un compilatore per generare il codice sorgente che calcola le estensioni di intervallo e i modelli di Taylor).
In un pizzico, posso usare un software che fa le due cose precedenti al codice C anziché al codice Fortran 77, e quindi passare tutto f2c
. Preferirei davvero non farlo in questo modo, perché non ho idea se tutto f2c
passerà o meno funzionerà, ma sono piuttosto disperato.
Ragazzi, potete aiutare uno studente di dottorato disperato?
Per anticipare alcuni possibili suggerimenti, ecco alcuni approcci che NON funzioneranno per me, visti i vincoli temporali:
- Fare di più per far funzionare DAEPACK; credimi, ci ho provato. E sto tormentando spesso lo sviluppatore.
- Strumenti che calcolano estensioni di intervallo o modelli di Taylor usando approcci orientati agli oggetti (o orientati agli oggetti). Non ho tempo di ricodificare CHEMKIN-II (o qualsiasi altra libreria similmente grande) con nuovi tipi; è troppo grande.
- Uso di qualsiasi lingua diversa da Fortran 77/90 o C. Il codice CHEMKIN-II è in Fortran. Posso convertirlo in C usando
f2c
, o se necessario, usare un clone di CHEMKIN-II basato su Sandia chiamato TChem. I miei vecchi risultati usano CHEMKIN-II; i miei nuovi risultati dovrebbero replicare i miei vecchi risultati e so già che Cantera non replicherà ciò che CHEMKIN-II fa sulla base di casi di studio e test unitari. Inoltre, lo studente laureato che mi ha preceduto ha fatto un po 'di magia nera sul codice sorgente CHEMKIN-II per far funzionare l'aritmetica dell'intervallo in modo particolarmente efficace. Per me sarebbe difficile replicarlo in qualsiasi altro pacchetto.