Domanda

apparentemente, un limite esiste nel numero di righe di continuazione permessi in Fortran. Ho un caso patologico temporaneo (fatta a scopo di test rapidi) in cui sono tenuto per inizializzare una matrice enorme senza aprire i file o fare qualsiasi inganno, proprio schiaffo dati come letterali. La matrice è abbastanza grande (360000 voci).

Come faccio a impostare il limite del compilatore a illimitata, o quale strategia alternativa che può utilizzare per ospitare questa inizializzazione array?

È stato utile?

Soluzione

Non so su eventuali impostazioni del compilatore per un numero illimitato di righe di continuazione, ma vorrei suggerire queste alternative:

  • assegnare ciascun valore su una sola riga
  • mettere i valori in un file e lo lesse:)
  • chiamare una funzione C per riempire la matrice FORTRAN

Altri suggerimenti

Si potrebbe assegnarli in batch usando loop DO implicite, fino al limite prosecuzione imposto dal vostro compilatore:

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 /

Ho visto questo in un sacco di codice Fortran scientifica.

scrivere del codice per creare i file di origine con i dati da un file di testo. Dividere le assegnazioni per riga o qualcosa per aiutare ad evitare di creare una dichiarazione enorme per inizializzare l'array in un colpo solo. Ricordate codice che genera il codice può essere molto flessibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top