[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