This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Compilation and run of the FDS code
- From: dominiq at lps dot ens dot fr (Dominique Dhumieres)
- To: fortran at gcc dot gnu dot org
- Date: Tue, 18 Apr 2006 12:32:43 +0200
- Subject: Compilation and run of the FDS code
I succeeded in compiling the FDS code and ran it on an example. I was using
the latest snapshot (4.2.0 20060415) with the latest patches from Paul and
Thomas under OSX 10.3.
Note that I applied the patches manually so I cannot guarantee that I did not
make a mistake.
I had two glitches:
(1) during the compilation of read.f I got:
In file read.f:5475
READ(LU5,BNDF,END=243,ERR=244)
1
In file read.f:5496
2
Warning: Obsolete: GOTO at (1) jumps to END of construct at (2)
I have isolated the subroutine and decorated it to be able to compile it and
I get:
In file read_bndf.f90:26
READ(LU5,BNDF,END=243,ERR=244)
1
In file read_bndf.f90:47
244 ENDDO BNDFLOOP
2
Warning: Obsolete: GOTO at (1) jumps to END of construct at (2)
which is more in line with what I expect.
(2) When I ran the code I got:
Cannot match namelist object name 100.0
Cannot match namelist object name 100.0
...
It did not prevented the code to run and I did not see anything obviously
wrong in the results, i.e., since the code is non-deterministic, the results
depend on the compiler. The results from the NIST binaries (xlf), g95 and
gfortran were within 20% from each others.
The following program
CHARACTER(30) QUANTITY
REAL(8) VALUE(5)
NAMELIST /ISOF/ DTSAM,QUANTITY,FYI,VALUE
VALUE = (/ (-I,I=1,5) /)
print *, VALUE
READ(5,NML=ISOF)
print *, VALUE
END
reproduce the bug, with
&ISOF QUANTITY='TEMPERATURE',VALUE(1)=30.0,100.0 /
gfortran gives
-1.00000000000000 -2.00000000000000 -3.00000000000000 -4.00000000000000 -5.00000000000000
Cannot match namelist object name 100.0
30.0000000000000 -2.00000000000000 -3.00000000000000 -4.00000000000000 -5.00000000000000
while xlf gives
-1.00000000000000000 -2.00000000000000000 -3.00000000000000000 -4.00000000000000000 -5.00000000000000000
30.0000000000000000 100.000000000000000 -3.00000000000000000 -4.00000000000000000 -5.00000000000000000
If I use
&ISOF QUANTITY='TEMPERATURE',VALUE(1:2)=30.0,100.0 /
gfortran gives the right answer.
Note the execution time on a 1.8Ghz G5 with 1.5Gb of memory is
1h20mn for the NIST binary and ~2h for gfortran and g95.
Cheers
Dominique