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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top