[Dart-dev] [5573] DART/branches/development/random_nr: move tests down into a test directory, add a test of reseeding

nancy at ucar.edu nancy at ucar.edu
Fri Feb 24 16:38:22 MST 2012


Revision: 5573
Author:   nancy
Date:     2012-02-24 16:38:21 -0700 (Fri, 24 Feb 2012)
Log Message:
-----------
move tests down into a test directory, add a test of reseeding
the random number generator frequently.

Modified Paths:
--------------
    DART/branches/development/random_nr/random_nr_mod.f90

Added Paths:
-----------
    DART/branches/development/random_nr/test/
    DART/branches/development/random_nr/test/input.nml
    DART/branches/development/random_nr/test/mkmf_test_random_nr
    DART/branches/development/random_nr/test/mkmf_test_reseed
    DART/branches/development/random_nr/test/path_names_test_random_nr
    DART/branches/development/random_nr/test/path_names_test_reseed
    DART/branches/development/random_nr/test_reseed.f90

Removed Paths:
-------------
    DART/branches/development/random_nr/input.nml
    DART/branches/development/random_nr/mkmf_test_random_nr
    DART/branches/development/random_nr/path_names_test_random_nr

-------------- next part --------------
Deleted: DART/branches/development/random_nr/input.nml
===================================================================
--- DART/branches/development/random_nr/input.nml	2012-02-24 22:22:16 UTC (rev 5572)
+++ DART/branches/development/random_nr/input.nml	2012-02-24 23:38:21 UTC (rev 5573)
@@ -1,4 +0,0 @@
-&utilities_nml
-   TERMLEVEL = 1,
-   logfilename = 'dart_log.out'  /
-

Deleted: DART/branches/development/random_nr/mkmf_test_random_nr
===================================================================
--- DART/branches/development/random_nr/mkmf_test_random_nr	2012-02-24 22:22:16 UTC (rev 5572)
+++ DART/branches/development/random_nr/mkmf_test_random_nr	2012-02-24 23:38:21 UTC (rev 5573)
@@ -1,18 +0,0 @@
-#!/bin/csh
-#
-# DART software - Copyright 2004 - 2011 UCAR. This open source software is
-# provided by UCAR, "as is", without charge, subject to all terms of use at
-# http://www.image.ucar.edu/DAReS/DART/DART_download
-#
-# $Id$
-
-../mkmf/mkmf -p test_random_nr -t ../mkmf/mkmf.template -c"-Duse_netCDF" \
- -a "../" path_names_test_random_nr
-
-exit $status
-
-# <next few lines under version control, do not edit>
-# $URL$
-# $Revision$
-# $Date$
-

Deleted: DART/branches/development/random_nr/path_names_test_random_nr
===================================================================
--- DART/branches/development/random_nr/path_names_test_random_nr	2012-02-24 22:22:16 UTC (rev 5572)
+++ DART/branches/development/random_nr/path_names_test_random_nr	2012-02-24 23:38:21 UTC (rev 5573)
@@ -1,6 +0,0 @@
-random_nr/test_random_nr.f90
-random_nr/random_nr_mod.f90
-common/types_mod.f90
-utilities/utilities_mod.f90
-mpi_utilities/null_mpi_utilities_mod.f90
-time_manager/time_manager_mod.f90

Modified: DART/branches/development/random_nr/random_nr_mod.f90
===================================================================
--- DART/branches/development/random_nr/random_nr_mod.f90	2012-02-24 22:22:16 UTC (rev 5572)
+++ DART/branches/development/random_nr/random_nr_mod.f90	2012-02-24 23:38:21 UTC (rev 5573)
@@ -120,7 +120,7 @@
 
 function gasdev(s)
 
-! Returns a N(0, 1) random number
+! Returns a N(-1, 1) random number draw from a gaussian distribution
 
 implicit none
 

Added: DART/branches/development/random_nr/test/input.nml
===================================================================
--- DART/branches/development/random_nr/test/input.nml	                        (rev 0)
+++ DART/branches/development/random_nr/test/input.nml	2012-02-24 23:38:21 UTC (rev 5573)
@@ -0,0 +1,5 @@
+&utilities_nml
+   TERMLEVEL = 1,
+   module_details = .false.
+   logfilename = 'dart_log.out'  /
+


Property changes on: DART/branches/development/random_nr/test/input.nml
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Added: DART/branches/development/random_nr/test/mkmf_test_random_nr
===================================================================
--- DART/branches/development/random_nr/test/mkmf_test_random_nr	                        (rev 0)
+++ DART/branches/development/random_nr/test/mkmf_test_random_nr	2012-02-24 23:38:21 UTC (rev 5573)
@@ -0,0 +1,18 @@
+#!/bin/csh
+#
+# DART software - Copyright 2004 - 2011 UCAR. This open source software is
+# provided by UCAR, "as is", without charge, subject to all terms of use at
+# http://www.image.ucar.edu/DAReS/DART/DART_download
+#
+# $Id$
+
+../../mkmf/mkmf -p test_random_nr -t ../../mkmf/mkmf.template -c"-Duse_netCDF" \
+ -a "../../" path_names_test_random_nr
+
+exit $status
+
+# <next few lines under version control, do not edit>
+# $URL$
+# $Revision$
+# $Date$
+


Property changes on: DART/branches/development/random_nr/test/mkmf_test_random_nr
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author HeadURL Id
Added: svn:eol-style
   + native

Added: DART/branches/development/random_nr/test/mkmf_test_reseed
===================================================================
--- DART/branches/development/random_nr/test/mkmf_test_reseed	                        (rev 0)
+++ DART/branches/development/random_nr/test/mkmf_test_reseed	2012-02-24 23:38:21 UTC (rev 5573)
@@ -0,0 +1,18 @@
+#!/bin/csh
+#
+# DART software - Copyright 2004 - 2011 UCAR. This open source software is
+# provided by UCAR, "as is", without charge, subject to all terms of use at
+# http://www.image.ucar.edu/DAReS/DART/DART_download
+#
+# $Id$
+
+../../mkmf/mkmf -p test_reseed -t ../../mkmf/mkmf.template -c"-Duse_netCDF" \
+ -a "../../" path_names_test_reseed
+
+exit $status
+
+# <next few lines under version control, do not edit>
+# $URL$
+# $Revision$
+# $Date$
+


Property changes on: DART/branches/development/random_nr/test/mkmf_test_reseed
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author HeadURL Id
Added: svn:eol-style
   + native

Added: DART/branches/development/random_nr/test/path_names_test_random_nr
===================================================================
--- DART/branches/development/random_nr/test/path_names_test_random_nr	                        (rev 0)
+++ DART/branches/development/random_nr/test/path_names_test_random_nr	2012-02-24 23:38:21 UTC (rev 5573)
@@ -0,0 +1,6 @@
+random_nr/test_random_nr.f90
+random_nr/random_nr_mod.f90
+common/types_mod.f90
+utilities/utilities_mod.f90
+mpi_utilities/null_mpi_utilities_mod.f90
+time_manager/time_manager_mod.f90

Added: DART/branches/development/random_nr/test/path_names_test_reseed
===================================================================
--- DART/branches/development/random_nr/test/path_names_test_reseed	                        (rev 0)
+++ DART/branches/development/random_nr/test/path_names_test_reseed	2012-02-24 23:38:21 UTC (rev 5573)
@@ -0,0 +1,7 @@
+random_nr/test_reseed.f90
+random_nr/random_nr_mod.f90
+random_seq/random_seq_mod.f90
+common/types_mod.f90
+utilities/utilities_mod.f90
+mpi_utilities/null_mpi_utilities_mod.f90
+time_manager/time_manager_mod.f90

Added: DART/branches/development/random_nr/test_reseed.f90
===================================================================
--- DART/branches/development/random_nr/test_reseed.f90	                        (rev 0)
+++ DART/branches/development/random_nr/test_reseed.f90	2012-02-24 23:38:21 UTC (rev 5573)
@@ -0,0 +1,147 @@
+! DART software - Copyright 2004 - 2011 UCAR. This open source software is
+! provided by UCAR, "as is", without charge, subject to all terms of use at
+! http://www.image.ucar.edu/DAReS/DART/DART_download
+
+program test_reseed
+
+! <next few lines under version control, do not edit>
+! $URL$
+! $Id$
+! $Revision$
+! $Date$
+
+use     types_mod, only : r4, r8, digits12, i8
+use utilities_mod, only : register_module, error_handler, E_ERR, &
+                          initialize_utilities, finalize_utilities
+use time_manager_mod, only : time_type, operator(+), set_time, get_time, &
+                             set_calendar_type, print_time, print_date
+use random_seq_mod, only : random_seq_type, init_random_seq, &
+                           random_uniform, random_gaussian
+
+implicit none
+
+! version controlled file description for error handling, do not edit
+character(len=128), parameter :: &
+   source   = "$URL$", &
+   revision = "$Revision$", &
+   revdate  = "$Date$"
+
+type (random_seq_type) :: seq
+type (time_type) :: state_time, delta_time
+integer :: i, l, rep
+integer :: maxreps = 1000
+integer, parameter :: ntests = 5
+integer :: nloops(ntests) = (/ 1, 10, 100, 1000, 1000000 /)
+
+real(r8) :: next_val, mean
+integer :: nextseed
+
+
+call initialize_utilities('test_reseed')
+call register_module(source,revision,revdate)
+
+
+call set_calendar_type('GREGORIAN')
+
+state_time = set_time(0, 148000)
+delta_time = set_time(43200)
+
+print *, ' '
+call print_date(state_time, 'setting start time')
+call print_time(delta_time, 'delta time')
+
+print *, ' '
+print *, 'doing ', maxreps, ' repeats of ', ntests, ' counts:'
+do i=1, ntests
+   print *, 'mean for ', nloops(i), ' uniform distribution'
+enddo
+do i=1, ntests
+   print *, 'mean for ', nloops(i), ' gaussian distribution'
+enddo
+print *, ' '
+
+do rep=1, maxreps
+
+   nextseed = generate_seed(state_time)
+
+   print *, ' '
+   print *, 'new seed: ', nextseed
+
+! ---------
+
+   do l=1, ntests
+
+      call init_random_seq(seq, nextseed)
+
+      mean = 0.0_r8
+      do i=1, nloops(l)
+    
+         next_val = random_uniform(seq)
+         mean = mean + next_val
+      
+      enddo
+
+      print *, mean/nloops(l), nloops(l), ' uniform'
+
+   enddo
+
+! ---------
+
+   print *, ' '
+
+! ---------
+
+   do l=1, ntests
+
+      call init_random_seq(seq, nextseed)
+
+      mean = 0.0_r8
+      do i=1, nloops(l)
+ 
+         next_val = random_gaussian(seq, 0.0_r8, 1.0_r8)
+         mean = mean + next_val
+   
+      enddo
+
+      print *, mean/nloops(l), nloops(l), ' gaussian'
+
+   enddo
+
+! ---------
+
+   print *, ' '
+
+! ---------
+
+   state_time = state_time + delta_time
+
+enddo
+
+call finalize_utilities()
+
+contains
+
+!-------------------------------------------------------------------------
+
+function generate_seed(state_time)
+! use the state time to set the seed for the (repeatable) random sequence 
+
+type(time_type), intent(in) :: state_time
+integer                     :: generate_seed
+
+integer :: days,seconds,bigint
+integer(kind=i8) :: bigtime,bigone,bigtwo
+
+call get_time(state_time, seconds, days)
+
+bigtime       = int(days,i8)*100000_i8 + int(seconds,i8)
+bigint        = huge(seconds)        ! biggest 32bit integer
+bigone        = int(bigint,i8)       ! coerce to 64bit integer
+bigtwo        = mod(bigtime,bigone)  ! modulo arith on 64bit integers
+generate_seed = -1 * int(bigtwo)     ! coerce back to 32bit integer
+
+!write(*,*)'TJH DEBUG generate_seed ',bigtime,bigint,generate_seed
+
+end function generate_seed
+
+end program test_reseed


Property changes on: DART/branches/development/random_nr/test_reseed.f90
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author HeadURL Id
Added: svn:eol-style
   + native


More information about the Dart-dev mailing list