Bug report and fix from Do, Jong-Gwan, Cray Korea Inc.:
1. external/io_int/diffwrf.F and external/io_netcdf/diffwrf.F90

In the end of code near 393 line is as follows.

        IF ( rms2 .NE. 0 ) THEN
          tmp1 = 1.0d0/( ( abs( rms1 - rms2 ) ) / rms2 )
          IF ( tmp1 .NE. 0 ) THEN
            digits = log10(tmp1)
          ENDIF
        ENDIF

This will produce "divide by zero" if rms1 and rms2 is equal.
So I tried the below change since digits are set 15 if rms1 and rms2 is equal.

        IF ( rms2 .NE. 0 .AND. digits .NE. 15 ) THEN
          tmp1 = 1.0d0/( ( abs( rms1 - rms2 ) ) / rms2 )
          IF ( tmp1 .NE. 0 ) THEN
            digits = log10(tmp1)
          ENDIF
        ENDIF

---------------------------------------------------------
 Do, Jong-Gwan   Cray Korea Inc.
 Application Analyst

 Phone : +82-2-834-0956 / (KMA Internal : 464)
 Mobile : +82-16-288-1855
 E-mail : jgdo@cray.com
---------------------------------------------------------

Additional note. Once you have made the changes to the two files listed above, remove the .o, .f (lower-case f only), and .a files in the external/io_int and external/io_netcdf directories, then recompile the code. It is not be necessary to completely clean and recompile WRF to effect these changes.


Posted 16 November 2005, John Michalakes. Thanks, Do, Jong-Gwan.