Número insano de linhas de continuação em fortran (ifort)
-
25-09-2019 - |
Pergunta
Aparentemente, existe um limite no número de linhas de continuação permitidas nos compiladores fortran. Eu tenho um caso patológico temporário (feito para fins de teste rápido), onde sou obrigado a inicializar uma matriz enorme sem abrir arquivos ou fazer qualquer truque, basta investigar os dados como literais. A matriz é bastante grande (360000 entradas).
Como posso definir o limite do compilador como ilimitado ou que estratégia alternativa posso usar para hospedar essa inicialização da matriz?
Solução
Não conheço nenhuma configuração do compilador para linhas de continuação ilimitadas, mas sugiro essas alternativas:
- Atribua cada valor em uma única linha
- Coloque os valores em um arquivo e leia -o :)
- Ligue para uma função C para preencher sua matriz fortran
Outras dicas
Você pode atribuí -los em lotes usando implícitos DO
Loops, até o limite de continuação imposto pelo seu compilador:
REAL :: xarray(360000)
DATA (xarray(i) i=1,100) /1.0, 2.0, 3.0, 4.0, 5.0, 6.0, &
7.0, 8.0, &
...
98.0, 99.0, 100.0 /
DATA (xarray(i) i=101,200) /101.0, 102.0, 103.0, 104.0, 105.0, 106.0, &
107.0, 108.0, &
...
198.0, 199.0, 200.0 /
Eu já vi isso em muito código Scientific Fortran.
Escreva algum código para criar seus arquivos de origem com dados de um arquivo de texto. Divida as tarefas por linha ou algo para ajudar a evitar criar uma declaração enorme para inicializar a matriz de uma só vez. Lembre -se de que o código que gera código pode ser bastante flexível.