Os estudos de caso da minha tese de doutorado exigem que eu tenha extensões de intervalo das sub - rotinas Fortran no CHEMKIN-II (desculpas pelo link; é o melhor que eu poderia encontrar para um pacote que não é mais distribuído pelo Sandia National Laboratory). CHEMKIN-II é um pacote químico usado em química de combustão; como é o pacote padrão usado na combustão, não posso (ou melhor, realmente prefiro não) usar um pacote diferente por aí.
Para obter as extensões de intervalo necessárias, eu tenho usado uma ferramenta desenvolvida internamente chamada DAEPACK. Os binários antigos que eu costumava ser capaz de gerar as extensões de intervalo necessárias das sub-rotinas CHEMKIN-II que eu precisava em um SO de 32 bits (com uma versão do libstdc correspondente ao gcc 2.95) há alguns anos, mas caíram em desuso de data e seria uma provação tremenda de usar (porque eu precisaria encontrar versões de 32 bits de todos os outros softwares que usei). O código fonte deste pacote também é proprietário, mas como foi originalmente desenvolvido no MIT e eu trabalho no MIT, consegui (depois de muito esforço) obter o código fonte do DAEPACK. Usando o código-fonte que possuo, consegui compilar uma versão do DAEPACK compatível com as versões de 64 bits do Linux e as versões do libstdc correspondentes ao gcc 4.xx No entanto, esse código-fonte, que suspeito ser antigo, compila em um executável que não gera com êxito o código de extensão de intervalo necessário para concluir minha tese. Entrei em contato com o desenvolvedor na tentativa de obter sua ajuda para corrigir o código-fonte, mas com o contato anterior com o desenvolvedor, sei que levará algum tempo para ele corrigir o código-fonte, se ele o fizer.
Aqui está o grande problema: ainda tenho 6 meses até precisar me formar porque estou sem fundos. Não posso confiar no desenvolvedor para corrigir o DAEPACK com rapidez suficiente para concluir com êxito minha tese de doutorado, que é onde vocês entram.
Eu preciso de um pacote que faça o seguinte:
- Gera extensões de intervalo, modelos de Taylor (usando aritmética de intervalo) e derivadas do código Fortran 77 quase arbitrário; Eu acho que as únicas estruturas que não são analisadas pelo DAEPACK são
DO
loops eIF
declarações. Como preciso dos modelos de Taylor, o código também deve ter capacidade de diferenciação automática (AD). - Gera essas extensões de intervalo e modelos de Taylor pela tradução de fonte para fonte do código Fortran 77 (ou seja, analisa o código-fonte como um compilador para gerar o código-fonte que calcula as extensões de intervalo e os modelos de Taylor).
Em uma pitada, posso usar um software que faça as duas coisas acima no código C, em vez do código Fortran 77, e depois passar tudo f2c
. Eu realmente preferiria não fazer dessa maneira, porque não tenho idéia se a passagem de tudo f2c
funcionará ou não , mas estou desesperada.
Vocês podem ajudar um estudante de doutorado desesperado?
Para antecipar algumas sugestões possíveis, aqui estão abordagens que NÃO funcionarão para mim, dadas as restrições de tempo:
- Se esforçando mais para fazer o DAEPACK funcionar; acredite em mim, eu tentei. E eu estou incomodando o desenvolvedor com frequência.
- Ferramentas que calculam extensões de intervalo ou modelos de Taylor usando abordagens orientadas a objetos (ou orientadas a objetos). Não tenho tempo para recodificar o CHEMKIN-II (ou qualquer outra biblioteca igualmente grande) com novos tipos; é muito grande.
- Usando qualquer idioma que não seja o Fortran 77/90 ou C. O código CHEMKIN-II está no Fortran. Posso convertê-lo em C usando
f2c
, ou se necessário, um clone de CHEMKIN-II baseado em Sandia chamado TChem. Meus resultados antigos usam CHEMKIN-II; meus novos resultados devem replicar meus antigos e já sei que o Cantera não replicará o que o CHEMKIN-II faz com base em estudos de caso e testes de unidade. Além disso, o aluno de graduação que me precedeu fez alguma magia negra no código-fonte do CHEMKIN-II para fazer com que a aritmética de intervalo funcionasse especialmente bem. Seria difícil para mim replicar isso em qualquer outro pacote.
fonte
Respostas:
Supondo que o problema seja que
DAEPACK
funciona no modo de 32 bits, mas não no modo de 64 bits, aqui estão algumas abordagens para resolver isso.Compile
DAEPACK
no modo de 32 bits em um sistema operacional de 64 bitsVeja como fazer isso em outra pergunta . Essa pode ser uma maneira fácil de continuar trabalhando com ela.
Se o problema é que o código gerado está com problemas no modo de 64 bits, compile o código gerado com sinalizadores de 32 bits semelhantes ou em um ambiente de 32 bits (o SO de 64 bits pode executar o código de 32 bits, dadas as bibliotecas apropriadas, mas não vice-versa ).
Recrie todo um
DAEPACK
ambiente seguroCrie um ambiente completo de 32 bits em uma máquina virtual usando, por exemplo, o VirtualBox , de modo que
DAEPACK
seja feliz rodando nela, seja de binários antigos ou recompilados nesse ambiente. Você pode obter uma versão de um sistema operacional e compilador de código aberto tão antigo quanto necessário para obter uma versão funcional do software.Pegue a saída
DAEPACK
e transfira-a para a máquina host ou para uma máquina virtual separada onde o ambiente é apropriado para o outro software e continue trabalhando. Pode ser um sistema operacional de 64 bits mais recente, por exemplo, e continuar trabalhando lá.O uso do recurso de pastas compartilhadas no VirtualBox deve facilitar isso para você.
Aliste outras pessoas para ajudar a corrigir
DAEPACK
Percebi que você disse que nem você nem o autor do software têm tempo para consertar isso, mas ninguém disse que você não pode pedir a ajuda de mais ninguém! Considere estas opções:
Contrate alguns alunos de graduação do MIT CS para ajudar a corrigir os problemas de 32 bits vs. 64 bits. Observe que, para incentivá-los a trabalhar nisso, você pode ter que compensá-los, seja com dinheiro ou pizza (e / ou cerveja, se tiverem idade legal para beber), por exemplo. Ou considere perguntar se o seu orientador pode contratar alguns estudantes de meio período para ajudar nisso (pode ser um problema de financiamento, se o seu próprio financiamento estiver acabando). Ou peça alguns favores aos programadores de pesquisa do seu departamento.
Lobby para uma versão de código aberto de
DAEPACK
. Parece que seu status de licenciamento é claro , mas observe que o MIT possui uma licença de código-fonte de mesmo nome que é bastante conhecida; liberá-lo sob uma licença aberta pode ajudar a entender melhor o problema e a corrigir os problemas de 32 bits vs. 64 bits.Observe que, dependendo do seu departamento, escritórios jurídicos, administrativos, etc., pode levar mais de seis meses para o seu doutorado. Portanto, considere iniciar isso mais cedo, enquanto procura outras alternativas.
Boa sorte!
fonte