[cig-commits] r11585 - cs/benchmark/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Wed Mar 26 08:02:46 PDT 2008
Author: luis
Date: 2008-03-26 08:02:46 -0700 (Wed, 26 Mar 2008)
New Revision: 11585
Modified:
cs/benchmark/cigma/trunk/src/CompareCmd.cpp
cs/benchmark/cigma/trunk/src/CompareCmd.h
Log:
Updates to CompareCmd. Need to ensure that 'cigma compare --debug' works!
Modified: cs/benchmark/cigma/trunk/src/CompareCmd.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/CompareCmd.cpp 2008-03-26 15:02:44 UTC (rev 11584)
+++ cs/benchmark/cigma/trunk/src/CompareCmd.cpp 2008-03-26 15:02:46 UTC (rev 11585)
@@ -19,7 +19,7 @@
// integrating mesh
meshPart = 0;
- qpoints = 0;
+ quadrature = 0;
qr = 0;
// fields
@@ -254,8 +254,8 @@
{
if (field_a->getType() == Field::FE_FIELD)
{
- FE_Field *fa = static_cast<FE_Field*>(field_a);
- meshPart = fa->meshPart;
+ FE_Field *a = static_cast<FE_Field*>(field_a);
+ meshPart = a->meshPart;
}
}
if (meshPart == 0)
@@ -265,27 +265,73 @@
}
/* Load the quadrature rule */
-
+ //quadratureReader.verbose = true;
quadratureReader.load_quadrature(meshPart->cell);
- qpoints = quadratureReader.quadrature;
- if (qpoints == 0)
+ quadrature = quadratureReader.quadrature;
+ if (quadrature == 0)
{
cerr << "compare: Could not load quadrature points" << endl;
exit(1);
}
- // qr = ...; // XXX
+ //qr = ...; // XXX:
+
+ if (field_a->getType() == Field::FE_FIELD)
+ {
+ FE_Field *a = static_cast<FE_Field*>(field_a);
+ a->fe = new FE();
+ a->fe->set_mesh(a->meshPart);
+
+ qr = a->fe; // XXX
+ }
+
+ if (field_b->getType() == Field::FE_FIELD)
+ {
+ FE_Field *b = static_cast<FE_Field*>(field_b);
+ b->fe = new FE();
+ b->fe->set_mesh(b->meshPart);
+ }
+
+ /* this allocates residuals->epsilon[] array */
+ residuals->set_mesh(meshPart);
}
// ---------------------------------------------------------------------------
+void CompareCmd::start_timer()
+{
+ if (verbose)
+ {
+ cout << setprecision(5);
+ timer.print_header(cout, "elts");
+ timer.start(meshPart->nel);
+ timer.update(0);
+ cout << timer;
+ }
+}
+
+void CompareCmd::end_timer()
+{
+ if (verbose)
+ {
+ timer.update(meshPart->nel);
+ cout << timer << endl;
+ }
+}
+
+
+// ---------------------------------------------------------------------------
+
void compare(CompareCmd *env, PointField *field_a, FE_Field *field_b)
{
if (env->verbose)
{
cout << "Comparing PointField with FE_Field" << endl;
}
+ assert(false);
+ env->start_timer();
+ env->end_timer();
}
void compare(CompareCmd *env, FE_Field *field_a, FE_Field *field_b)
@@ -294,6 +340,9 @@
{
cout << "Comparing FE_Field with FE_Field" << endl;
}
+ assert(false);
+ env->start_timer();
+ env->end_timer();
}
void compare(CompareCmd *env, FE_Field *field_a, PointField *field_b)
@@ -302,6 +351,9 @@
{
cout << "Comparing FE_Field with PointField" << endl;
}
+ assert(false);
+ env->start_timer();
+ env->end_timer();
}
void compare(CompareCmd *env, FE_Field *field_a, ExtField *field_b)
@@ -310,7 +362,9 @@
{
cout << "Comparing FE_Field with ExtField" << endl;
}
-
+ assert(false);
+ env->start_timer();
+ env->end_timer();
}
void compare(CompareCmd *env, FE_Field *field_a, Field *field_b)
@@ -319,7 +373,9 @@
{
cout << "Comparing FE_Field with Field" << endl;
}
-
+ assert(false);
+ env->start_timer();
+ env->end_timer();
}
void compare(CompareCmd *env, Field *field_a, Field *field_b)
@@ -328,72 +384,61 @@
{
cout << "Comparing Field with Field" << endl;
}
+ assert(false);
+ env->start_timer();
+ env->end_timer();
}
int CompareCmd::run()
{
- // start with basic checks
+ // some basic checks before we begin
assert(meshPart != 0);
- assert(qpoints != 0);
+ assert(quadrature != 0);
assert(qr != 0);
assert(field_a != 0);
assert(field_b != 0);
+ int status;
- // start timer
- if (verbose)
- {
- cout << setprecision(5);
- timer.print_header(cout, "elts");
- timer.start(meshPart->nel);
- timer.update(0);
- cout << timer;
- }
- Field::FieldType a = field_a->getType();
- Field::FieldType b = field_b->getType();
+ Field::FieldType ta = field_a->getType();
+ Field::FieldType tb = field_b->getType();
- if ((a == Field::POINT_FIELD) && (b == Field::FE_FIELD))
+ if ((ta == Field::POINT_FIELD) && (tb == Field::FE_FIELD))
{
PointField *fa = static_cast<PointField*>(field_a);
FE_Field *fb = static_cast<FE_Field*>(field_b);
compare(this, fa, fb);
}
- else if ((a == Field::FE_FIELD) && (b == Field::FE_FIELD))
+ else if ((ta == Field::FE_FIELD) && (tb == Field::FE_FIELD))
{
- FE_Field *fa = static_cast<FE_Field*>(field_a);
- FE_Field *fb = static_cast<FE_Field*>(field_b);
- compare(this, fa, fb);
-
+ FE_Field *a = static_cast<FE_Field*>(field_a);
+ FE_Field *b = static_cast<FE_Field*>(field_b);
+ compare(this, a, b);
}
- else if ((a == Field::FE_FIELD) && (b == Field::POINT_FIELD))
+ else if ((ta == Field::FE_FIELD) && (tb == Field::POINT_FIELD))
{
- FE_Field *fa = static_cast<FE_Field*>(field_a);
- PointField *fb = static_cast<PointField*>(field_b);
- compare(this, fa, fb);
+ FE_Field *a = static_cast<FE_Field*>(field_a);
+ PointField *b = static_cast<PointField*>(field_b);
+ compare(this, a, b);
}
- else if ((a == Field::FE_FIELD) && (b == Field::EXT_FIELD))
+ else if ((ta == Field::FE_FIELD) && (tb == Field::EXT_FIELD))
{
- FE_Field *fa = static_cast<FE_Field*>(field_a);
- ExtField *fb = static_cast<ExtField*>(field_b);
- compare(this, fa, fb);
+ FE_Field *a = static_cast<FE_Field*>(field_a);
+ ExtField *b = static_cast<ExtField*>(field_b);
+ compare(this, a, b);
}
- else if ((a == Field::FE_FIELD) && (b == Field::USER_FIELD))
+ else if ((ta == Field::FE_FIELD) && (tb == Field::USER_FIELD))
{
- FE_Field *fa = static_cast<FE_Field*>(field_a);
- Field *fb = field_b;
- compare(this, fa, fb);
+ FE_Field *a = static_cast<FE_Field*>(field_a);
+ Field *b = field_b;
+ compare(this, a, b);
}
else
{
compare(this, field_a, field_b);
}
- if (verbose)
- {
- timer.update(meshPart->nel);
- cout << timer << endl;
- }
// report global error
double L2 = residuals->L2();
Modified: cs/benchmark/cigma/trunk/src/CompareCmd.h
===================================================================
--- cs/benchmark/cigma/trunk/src/CompareCmd.h 2008-03-26 15:02:44 UTC (rev 11584)
+++ cs/benchmark/cigma/trunk/src/CompareCmd.h 2008-03-26 15:02:46 UTC (rev 11585)
@@ -37,7 +37,11 @@
int run();
public:
- QuadraturePoints *qpoints;
+ void start_timer();
+ void end_timer();
+
+public:
+ QuadraturePoints *quadrature;
MeshPart *meshPart;
QuadratureRule *qr;
Field *field_a;
@@ -50,14 +54,13 @@
FieldReader firstReader;
FieldReader secondReader;
-public:
- Timer timer;
Writer *writer;
std::string outputPath;
public:
+ Timer timer;
+ int outputFrequency;
bool verbose;
- int outputFrequency;
};
#endif
More information about the cig-commits
mailing list