[cig-commits] [commit] master: Add mean slip/event rupture calc to QuakeLib (7630965)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Oct 29 16:20:42 PDT 2014


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

On branch  : master
Link       : https://github.com/geodynamics/vq/compare/0ca7695073f8b223d815f10653613b02b6c47df8...197914f4e03e55d321cae45161deafb1a5ade706

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

commit 76309653b8cec93f6fad92103d2a0f201457e28f
Author: Eric Heien <emheien at ucdavis.edu>
Date:   Wed Oct 29 16:18:15 2014 -0700

    Add mean slip/event rupture calc to QuakeLib


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

76309653b8cec93f6fad92103d2a0f201457e28f
 examples/check_results.py | 30 ++++--------------------------
 quakelib/src/QuakeLibIO.h | 23 +++++++++++++++++++++++
 2 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/examples/check_results.py b/examples/check_results.py
index 7e45a78..5235b3a 100755
--- a/examples/check_results.py
+++ b/examples/check_results.py
@@ -43,29 +43,11 @@ def check_self_consistent(events):
     return error
 
 def calc_mean_slip(events):
-    element_total_slips = {}
-    for event in events:
-        elements = event.getInvolvedElements()
-        element_sweep_slip_sums = {}
-        for elem in elements: element_sweep_slip_sums[elem] = 0
-        for sweep in event.getSweeps():
-            element_sweep_slip_sums[sweep._element_id] += sweep._slip
-            if not element_total_slips.has_key(sweep._element_id): element_total_slips[sweep._element_id] = 0.0
-            element_total_slips[sweep._element_id] += sweep._slip
-
-    mean_total_slip = 0.0
-    total_slips = [element_total_slips[elem_id] for elem_id in element_total_slips.keys()]
-
-    return sum(total_slips)/float(len(total_slips))
+    return sum([event.calcMeanSlip() for event in events])
 
 def calc_mean_interevent(events):
-    interevent_times = []
-    last_year = -1
-    for event in events:
-        if last_year > 0: interevent_times.append(event.getEventYear() - last_year)
-        last_year = event.getEventYear()
-
-    return sum(interevent_times)/float(len(interevent_times))
+    event_years = [event.getEventYear() for event in events]
+    return sum([event_years[i+1] - event_years[i] for i in range(len(event_years)-1)])/(len(event_years)-1)
 
 def calc_b_val(events):
     mags = [events.event_list[enum].magnitude for enum in events.event_list if events.event_list[enum].magnitude < 10 and events.event_list[enum].magnitude > 0]
@@ -83,11 +65,7 @@ def rupture_area_vs_mag(events):
     log_ra = []
     mag = []
     for event in events:
-        rupture_area = 0
-        element_areas = {}
-        for sweep in event.getSweeps():
-            element_areas[sweep._element_id] = sweep._area
-        rupture_area = sum([element_areas[bnum] for elem_num in element_areas])
+        rupture_area = event.calcEventRuptureArea()
 
         if not math.isnan(event.magnitude):
             log_ra.append(math.log10(rupture_area/1e6))
diff --git a/quakelib/src/QuakeLibIO.h b/quakelib/src/QuakeLibIO.h
index 1375af8..4397b70 100644
--- a/quakelib/src/QuakeLibIO.h
+++ b/quakelib/src/QuakeLibIO.h
@@ -915,6 +915,29 @@ namespace quakelib {
                 return _total_slip.size();
             };
 
+            //! Calculate the total slipped area in the event
+            double calcEventRuptureArea(void) const {
+                EventElementMap::const_iterator     it;
+                double                              rupture_area = 0;
+
+                for (it=_total_slip.begin(); it!=_total_slip.end(); ++it) rupture_area += it->second._area;
+
+                return rupture_area;
+            }
+
+            //! Calculate mean slip weighted by rupture area
+            double calcMeanSlip(void) const {
+                EventElementMap::const_iterator     it;
+                double                              sum_slip_area = 0, sum_area = 0;
+
+                for (it=_total_slip.begin(); it!=_total_slip.end(); ++it) {
+                    sum_slip_area += it->second._area*it->second._slip;
+                    sum_area += it->second._area;
+                }
+
+                return sum_slip_area/sum_area;
+            }
+
             void clear(void) {
                 _data._event_number = UNDEFINED_EVENT_ID;
                 _data._event_year = nan("");



More information about the CIG-COMMITS mailing list