Ricevo l'avviso di runtime fortran "Un array temporaneo è stato creato" durante l'esecuzione del mio codice (compilato con gfortran) e vorrei sapere se esiste un modo migliore per risolvere questo avviso.Avviso di runtime Fortran: array temporaneo
mio codice originale è qualcosa di simile:
allocate(flx_est(lsign,3))
allocate(flx_err(lsign,3))
do i=1,lsign
call combflx_calc(flx_est(i,:),flx_err(i,:))
enddo
all'interno della subroutine definisco le variabili in questo modo:
subroutine combflx_calc(flx_est,flx_err)
use,intrinsic :: ISO_Fortran_env, only: real64
implicit none
real(real64),intent(inout) :: flx_est(3),flx_err(3)
flux_est
e flx_err
vettori possono cambiare all'interno della subroutine a seconda delle diverse condizioni e Devo aggiornare i loro valori di conseguenza.
Fortran non sembra gradire questa struttura. Posso risolverlo definendo variabili temporanee:
tmp_flx_est=flx_est(i,:)
tmp_flx_err=flx_err(i,:)
call combflx_calc(tmp_flx_est,tmp_flx_err)
flx_est(i,:)=tmp_flx_est
flx_err(i,:)=tmp_flx_err
Ma mi sembra un modo abbastanza sciocco per risolverlo.
Come puoi vedere, non sono un esperto di Fortran, quindi qualsiasi aiuto è più che benvenuto.
In che modo la "correzione" fissa qualcosa? Il temporaneo è ancora lì, lo stai facendo manualmente. –
Non fissato, il mascheramento è migliore. Non ho visto il potenziale danno del mio approccio iniziale, quindi volevo solo eliminare l'avviso – cardogar
Non sono d'accordo sul fatto che il mascheramento è meglio che riparare. Se si desidera mascherare si potrebbe semplicemente non compilare con il controllo runtime abilitato. – casey