[cig-commits] [commit] master: Add Greens file input/output tests (b2163be)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Dec 10 10:00:40 PST 2014


Repository : https://github.com/geodynamics/vq

On branch  : master
Link       : https://github.com/geodynamics/vq/compare/4d339b3a383b69e1552cfeef4ca20868a1377289...d0edc6ddd56f9105f6d2488db4a9f36368529695

>---------------------------------------------------------------

commit b2163befde8b3742868ecc66e752fe4cd0f02524
Author: Eric Heien <emheien at ucdavis.edu>
Date:   Thu Dec 4 13:35:26 2014 -0800

    Add Greens file input/output tests


>---------------------------------------------------------------

b2163befde8b3742868ecc66e752fe4cd0f02524
 examples/CMakeLists.txt                          | 57 ++++++++++++++++++++++++
 examples/{example_params.d => greens_generate.d} |  3 +-
 examples/{example_params.d => greens_input.d}    |  4 +-
 examples/sum_greens.py                           | 32 +++++++++++++
 4 files changed, 93 insertions(+), 3 deletions(-)

diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index b6ab4ca..d9f7e2a 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -20,6 +20,7 @@ ENDIF(DEFINED MPI_C_FOUND AND MPI_CXX_FOUND)
 
 SET(SETUP_PARAMS_SCRIPT ${VQ_EXAMPLE_DIR}/setup_params.sh)
 SET(CHECK_SCRIPT ${VQ_EXAMPLE_DIR}/check_results.py)
+SET(GREENS_SCRIPT ${VQ_EXAMPLE_DIR}/sum_greens.py)
 SET(ENV{PATH} $ENV{PATH}:${CMAKE_CURRENT_BINARY_DIR}/../src/)
 
 LIST(LENGTH TAPER_METHODS N)
@@ -177,8 +178,64 @@ FOREACH(TAPER_IND RANGE ${NUM_TAPER})
 ENDFOREACH(TAPER_IND RANGE ${NUM_TAPER})
 
 
+# Confirm HDF5 Greens file output and input works correctly on one or more processors
+IF (HDF5_FOUND)
+    FOREACH(NPROC ${NUM_PROCS})
+        SET(TEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/GREENS_P${NPROC}/)
+        SET(RES 3000)
+        FILE(MAKE_DIRECTORY ${TEST_DIR})
+        SET(TEST_SUFFIX P${NPROC}_green_${RES})
+        SET(EVENT_FILE ${TEST_DIR}events_${RES}.txt)
+        SET(SWEEP_FILE ${TEST_DIR}sweeps_${RES}.txt)
+
+        ADD_TEST(
+            NAME mesh_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+            COMMAND mesher
+            --import_file=../../fault_traces/single_fault_trace.txt
+            --import_file_type=trace --import_trace_element_size=${RES}
+            --taper_fault_method=none
+            --export_file=single_fault_${RES}.txt
+            --export_file_type=text
+            )
+        ADD_TEST(NAME param_gen_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+            COMMAND ${SETUP_PARAMS_SCRIPT} ${RES} 0.5 single_fault ${VQ_EXAMPLE_DIR}/greens_generate.d)
+        SET_TESTS_PROPERTIES (param_gen_${TEST_SUFFIX} PROPERTIES DEPENDS mesh_${TEST_SUFFIX})
+
+        ADD_TEST(NAME param_run_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+            COMMAND ${SETUP_PARAMS_SCRIPT} ${RES} 0.5 single_fault ${VQ_EXAMPLE_DIR}/greens_input.d)
+        SET_TESTS_PROPERTIES (param_run_${TEST_SUFFIX} PROPERTIES DEPENDS param_gen_${TEST_SUFFIX})
+
+        ADD_TEST(NAME run_gen_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+            COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NPROC} ${VQ_BINARY_DIR}/vq params_${RES}.d)
+        SET_TESTS_PROPERTIES (run_gen_${TEST_SUFFIX} PROPERTIES DEPENDS param_run_${TEST_SUFFIX})
+
+        ADD_TEST(NAME check_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+            COMMAND ${PYTHON_EXECUTABLE} ${GREENS_SCRIPT} greens_3000.h5 6.93247959318e-08 -92400201.204)
+        SET_TESTS_PROPERTIES (check_${TEST_SUFFIX} PROPERTIES DEPENDS run_gen_${TEST_SUFFIX})
 
+        # Test that the simulation runs with the resulting mesh
+        ADD_TEST(NAME run_full_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+            COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NPROC} ${VQ_BINARY_DIR}/vq params_${RES}.d)
+        SET_TESTS_PROPERTIES (run_full_${TEST_SUFFIX} PROPERTIES DEPENDS run_gen_${TEST_SUFFIX})
 
+        # Check that the results are internally self consistent
+        ADD_TEST(NAME check_consistent_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+            COMMAND ${PYTHON_EXECUTABLE} ${CHECK_SCRIPT} --event_file ${EVENT_FILE} --sweep_file ${SWEEP_FILE} --check_consistent)
+        SET_TESTS_PROPERTIES (check_consistent_${TEST_SUFFIX} PROPERTIES
+            DEPENDS run_full_${TEST_SUFFIX}
+            ENVIRONMENT "PYTHONPATH=${QUAKELIB_BINARY_DIR}/python/")
 
+        # Check that the mean slip is near our expectations
+        #    These two faults have same slip rate as single fault, so using
+        #       same mean slip values
+        IF (NOT ${MEANSLIP} EQUAL 0)
+            ADD_TEST(NAME check_slip_${TEST_SUFFIX} WORKING_DIRECTORY ${TEST_DIR}
+                COMMAND ${PYTHON_EXECUTABLE} ${CHECK_SCRIPT} --event_file ${EVENT_FILE} --sweep_file ${SWEEP_FILE} --mean_slip ${MEANSLIP})
+            SET_TESTS_PROPERTIES (test_two_slip_${TAPER}_${RES} PROPERTIES
+                DEPENDS run_full_${TEST_SUFFIX}
+                ENVIRONMENT "PYTHONPATH=${QUAKELIB_BINARY_DIR}/python/")
+        ENDIF (NOT ${MEANSLIP} EQUAL 0)
+    ENDFOREACH(NPROC ${NUM_PROCS})
+ENDIF (HDF5_FOUND)
 
 
diff --git a/examples/example_params.d b/examples/greens_generate.d
similarity index 81%
copy from examples/example_params.d
copy to examples/greens_generate.d
index 72c222d..fcfbeab 100644
--- a/examples/example_params.d
+++ b/examples/greens_generate.d
@@ -1,7 +1,8 @@
 sim.version                       = 2.0
-sim.time.end_year                 = 10000
+sim.time.end_year                 = 1
 sim.greens.method                 = standard
 sim.greens.use_normal             = false
+sim.greens.output                 = greens_ELEM_SIZE.h5
 sim.friction.dynamic              = DYNAMIC
 sim.file.input                    = INPUTFILE.txt
 sim.file.input_type               = text
diff --git a/examples/example_params.d b/examples/greens_input.d
similarity index 79%
copy from examples/example_params.d
copy to examples/greens_input.d
index 72c222d..9f7ccf5 100644
--- a/examples/example_params.d
+++ b/examples/greens_input.d
@@ -1,7 +1,7 @@
 sim.version                       = 2.0
 sim.time.end_year                 = 10000
-sim.greens.method                 = standard
-sim.greens.use_normal             = false
+sim.greens.method                 = file
+sim.greens.input                  = greens_ELEM_SIZE.h5
 sim.friction.dynamic              = DYNAMIC
 sim.file.input                    = INPUTFILE.txt
 sim.file.input_type               = text
diff --git a/examples/sum_greens.py b/examples/sum_greens.py
new file mode 100755
index 0000000..a268cba
--- /dev/null
+++ b/examples/sum_greens.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+import h5py
+import sys
+
+if len(sys.argv) != 4:
+    print(sys.argv[0]+" file_name expected_normal_value expected_shear_value")
+    exit(1)
+
+file_name = sys.argv[1]
+expected_normal = float(sys.argv[2])
+expected_shear = float(sys.argv[3])
+
+fp = h5py.File(file_name, "r")
+
+greens_normal = fp["greens_normal"]
+greens_shear = fp["greens_shear"]
+normal_sum = sum([sum(row) for row in greens_normal])
+shear_sum = sum([sum(row) for row in greens_shear])
+fp.close()
+
+normal_err = abs(expected_normal - normal_sum)/abs(max(expected_normal, normal_sum))
+shear_err = abs(expected_shear - shear_sum)/abs(max(expected_shear, shear_sum))
+print("Type", "Expected", "Actual", "Error")
+print("Normal", expected_normal, normal_sum, normal_err)
+print("Shear", expected_shear, shear_sum, shear_err)
+
+if normal_err > 1e-5 or shear_err > 1e-5:
+    exit(1)
+
+exit(0)
+



More information about the CIG-COMMITS mailing list