Below is a note from Tomas Torsvik - changes below will be incorporated into future versions of the code, but will be needed if you want to run the code in parallel on compilers other than Portland Group.
------------------
I downloaded the latest version of pCOULWAVE (pCOULWAVE.zip - August 2010) from the web site
http://isec.nacse.org/models/download/2
yesterday, and successfully compiled the code with gfortran + mpich2-1.3.1. However, I needed to make some modifications in the code in order for the compilation to run without errors and warnings, and I thought you might like some feedback on what I found.
- gfortran doesn't understand 'isnanf', so I changed this to 'isnan'. I understand the use of 'isnanf' is compiler dependent.
- I got complaints that node_1,...,node_8 was defined as real, but used as integer values in do loops, so I changed these to integer variables.
- I got some warnings concerning the use of the 'pause' statement, which apparently ha been deleted in Fortran 95. I changed these statements to
"write(*,*) '...'; stop", which I assume is the intention of these statements.
- gfortran didn't like that a '-' operation was followed directly by a '+' operation in internal_source_type2. I think this may be due to a miss-placed insertion o a comment on line 43 in that file.
- I also found that I needed to specify the compiler flags "-ffixed-line-length-0" and "-ffree-line-length-0" in order for gfortran to read the entire length of the lines. I haven't encountered this problem on other workstations, so I admit this may be a problem with the local version of gfortran (GNU Fortran (Ubuntu 4.4.3-4ubuntu5) 4.4.3) or the way I built mpich2-1.3.1.
Thanks for the good work with maintaining the COULWAVE code!
Best regards,
Tomas
PS: The following is a log I wrote down during the process:
Changes from source files:
------------------------------------
calc_overflow.f
L9: isnanf -> isnan
mainvar_module.f
L119: node_1,node_2, ... ,node_8 are defined as real
Move L119 -> L83, at the end of block of integer allocation.
The PAUSE statement has been deleted in Fortran 95.
Suggested replacement: pause -> write(*,*) '....'; stop This change applies to:
initial_condition.f: L54, L374, L406
tridiagp.f: L104, L109
internal_source_type2.f
L43: loc=abs(((x_c- !nint(real(theta/6))*L_spec(freq,theta) !to
spread multi dir spec
L44: - +L_spec(freq,theta)*
Here the '-' sign after x_c in L43 should probably apply to the part that has been removed by the comment, and not the statement on the following line.
Compilation with gfortran + mpich2-1.3.1
-------------------------------------------------------
COMPILER=mpif90
F90FLAGS=-O3 -ffixed-line-length-0 -ffree-line-length-0