[cig-commits] r11723 - cs/benchmark/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Wed Apr 2 11:01:42 PDT 2008


Author: luis
Date: 2008-04-02 11:01:41 -0700 (Wed, 02 Apr 2008)
New Revision: 11723

Added:
   cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.cpp
   cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.h
   cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.cpp
   cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.h
Log:
Analytic benchmarks for Gale & Okada


Added: cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.cpp	                        (rev 0)
+++ cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.cpp	2008-04-02 18:01:41 UTC (rev 11723)
@@ -0,0 +1,28 @@
+#include <cmath>
+#include "GaleBenchmarkFields.h"
+
+using namespace gale::circular_inclusion;
+
+Pressure::Pressure() {}
+Pressure::~Pressure() {}
+
+bool Pressure::eval(double *x, double *value)
+{
+    const double R = 0.05;
+    const double C = (8*9/11.0)*R*R;
+    const double xc = 0.5;
+    const double yc = 0.5;
+    double dx = x[0] - xc;
+    double dy = x[1] - yc;
+    double r2 = dx*dx + dy*dy;
+    if (r2 < R*R)
+    {
+        value[0] = 4.0;
+        return true;
+    }
+
+    double theta = atan2(dy, dx);
+    value[0] = (C/r2) * cos(2*theta);
+    return true;
+}
+

Added: cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.h
===================================================================
--- cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.h	                        (rev 0)
+++ cs/benchmark/cigma/trunk/src/GaleBenchmarkFields.h	2008-04-02 18:01:41 UTC (rev 11723)
@@ -0,0 +1,30 @@
+#ifndef __GaleBenchmarkFields_h__
+#define __GaleBenchmarkFields_h__
+
+#include "Field.h"
+
+namespace gale
+{
+    namespace circular_inclusion
+    {
+        class Pressure;
+    }
+}
+
+class gale::circular_inclusion::Pressure : public cigma::Field
+{
+public:
+    Pressure();
+    ~Pressure();
+
+public:
+    int n_dim() { return 2; }
+    int n_rank() { return 1; }
+    FieldType getType() { return USER_FIELD; }
+
+public:
+    bool eval(double *x, double *value);
+};
+
+#endif
+

Added: cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.cpp	                        (rev 0)
+++ cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.cpp	2008-04-02 18:01:41 UTC (rev 11723)
@@ -0,0 +1 @@
+#include "OkadaBenchmarkFields.h"

Added: cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.h
===================================================================
--- cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.h	                        (rev 0)
+++ cs/benchmark/cigma/trunk/src/OkadaBenchmarkFields.h	2008-04-02 18:01:41 UTC (rev 11723)
@@ -0,0 +1,48 @@
+#ifndef __OkadaBenchmarkFields_h__
+#define __OkadaBenchmarkFields_h__
+
+#include "Field.h"
+
+namespace okada
+{
+    namespace strike_slip
+    {
+        class Disloc3d;
+    }
+    namespace reverse_slip
+    {
+        class Disloc3d;
+    }
+}
+
+class okada::strike_slip::Disloc3d : public cigma::Field
+{
+public:
+    Disloc3d();
+    ~Disloc3d();
+
+public:
+    FieldType getType() { return USER_FIELD; }
+    int n_dim() { return 3; }
+    int n_rank() { return 3; }
+
+public:
+    bool eval(double *station, double *disloc);
+};
+
+class okada::reverse_slip::Disloc3d : public cigma::Field
+{
+public:
+    Disloc3d();
+    ~Disloc3d();
+
+public:
+    FieldType getType() { return USER_FIELD; }
+    int n_dim() { return 3; }
+    int n_rank() { return 3; }
+
+public:
+    bool eval(double *station, double *disloc);
+};
+
+#endif



More information about the cig-commits mailing list