Changes between Initial Version and Version 1 of Ticket #474


Ignore:
Timestamp:
11/30/10 19:24:46 (14 years ago)
Author:
arango
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #474

    • Property ResolutionFixed
    • Property Status newclosed
  • Ticket #474 – Description

    initial v1  
    1 Finally, I figure out how to correct the shared-memory bug in the floats vertical random walk. I mentioned this problem before. Getting random number sequences in parallel is very tricky. It is very difficult to get identical ROMS solutions in serial and parallel when random numbers are involved, but it is possible.
     1Finally, I figured out how to correct the shared-memory bug in the floats vertical random walk. I mentioned this problem before in src:ticket:472. Getting random number sequences in parallel is very tricky. It is very difficult to get identical ROMS solutions in serial and parallel when random numbers are involved, but it is possible.
    22
    3  * Changed the strategy of generating a normally-distributed random number sequence for vertical walk coefficients.  A new global variable '''rwalk''' is created in '''mod_floats.F''' to store random number sequence for floats.
     3 * Changed the strategy of generating a normally-distributed random number sequence for random vertical walk velocity.  A new global variable '''rwalk''' is created in '''mod_floats.F''' to store random number sequences for floats. This fixed the shared-memory bug when generating the random numbers.
    44
    5  * Changed the initialization handling of out-of-bounds floats. Previously we have in '''inp_par.F''':
     5 * Changed the initialization handling of out-of-bounds floats. Previously, we have in '''inp_par.F''':
    66{{{
    77         FLT(ng)%Tinfo(ixgrd,nc)=MIN(MAX(0.5_r8,Fx0(i,ng)),  &
     
    2626          END IF
    2727}}}
    28  This fixes a parallel bug to get identical solutions in serial and distributed-memory.  Now the out-of-bounds floats in MPI have the correct !FillValue instead of zero value.
     28 This fixes a parallel bug when comparing trajectoris in serial and distributed-memory.  Now the out-of-bounds floats in MPI solutions have the correct !FillValue instead of a zero value.
    2929
    30  * The random number are now computed with the parallel friendly routine '''gasdev.F'''.  It uses the same efficient routines used to generate random numbers as in the adjoint-based algorithms. The routine '''nrng.F''' (file '''utility.F''') is eliminated.
     30 * The random numbers are now computed with the parallel friendly routine '''gasdev.F'''.  It uses the same efficient routines used to generate random numbers in the adjoint-based algorithms. The routine '''nrng.F''' (file '''utility.F''') is eliminated.
    3131
    32  * The random number sequence is only generated in the floats predictor step.  This fixes the problem reported by Mark Hadfield in src:ticket:472.  The '''1/SQRT(2)=0.707''' factor was due to the two independent random sequences (predictor and corrector steps). Many thanks to John Wilkin for bringing to our attention that if the variance of the random velocity on the predictor step is '''1''', and this is independent of the random velocity on the corrector step (also '''1'''), then the two random step combined have a variance of only '''1/2''' with an standard deviation of '''0.707'''.
     32 * The random number sequence is only generated in the floats predictor step.  This fixes the problem reported by Mark Hadfield in src:ticket:472.  The '''1/SQRT(2)=0.707''' factor was due to the two independent random sequences (predictor and corrector steps). Many thanks to John Wilkin for bringing to our attention: if the variance of the random velocity on the predictor step is '''1''', and this is independent of the random velocity on the corrector step (also '''1'''), then the two random step combined have a variance of only '''1/2''' with an standard deviation of '''0.707'''.