如何强制Fortran在二维数组的每行中写入四个元素?

问题描述:

请考虑以下代码。它一次写入“n”个元素。对于intel编译器,“n”是5,对于pgi,“n”是4如何强制Fortran在二维数组的每行中写入四个元素?

  icels=128 
     jcels=128 
     imat=2 ! just for example 
     write(ounit,*) 
x   ((real(pr(i,j,imat)),i=1,icels),j=1,jcels) 

其中“x”是连续字符。我希望两个编译器的输出格式相同。举例:

6.2500001E-03 7.0312498E-03 7.8125000E-03 8.5937502E-03 
    9.3750004E-03 1.0156250E-02 1.0937500E-02 1.1718750E-02 
    ..... 
    ..... 

如何用正确的格式替换*?宁愿fortran77兼容的答案。

您可以用'(4(E13.6,1X))'(包括引号)替换*。这利用了名为format reversion的Fortran功能。

我会注意到你的代码已经不符合Fortran 77,所以我不确定你为什么关心这个。

+0

谢谢。我在intel论坛上关注了您的几篇文章。无论如何,我提前提出这个问题。自己解决 – wander95