[cig-commits] r9140 - cs/benchmark/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Fri Jan 25 07:37:31 PST 2008
Author: luis
Date: 2008-01-25 07:37:31 -0800 (Fri, 25 Jan 2008)
New Revision: 9140
Modified:
cs/benchmark/cigma/trunk/src/CompareCmd.cpp
Log:
Use locator in 'cigma compare'. Comparisons are now three orders of magnitude faster!
Modified: cs/benchmark/cigma/trunk/src/CompareCmd.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/CompareCmd.cpp 2008-01-25 15:37:30 UTC (rev 9139)
+++ cs/benchmark/cigma/trunk/src/CompareCmd.cpp 2008-01-25 15:37:31 UTC (rev 9140)
@@ -4,10 +4,12 @@
#include "CompareCmd.h"
#include "StringUtils.h"
#include "VtkUgSimpleWriter.h"
-#include "VtkUgMeshPart.h"
+//#include "VtkUgMeshPart.h"
+#include "MeshPart.h"
#include "Tet.h"
#include "Hex.h"
#include "Numeric.h"
+#include "AnnLocator.h"
@@ -171,71 +173,92 @@
//* HdfReader case...
// */
+
field->dim = nsd;
field->rank = dofs_valdim;
- field->meshPart = new cigma::VtkUgMeshPart();
+ //field->meshPart = new cigma::VtkUgMeshPart();
+ field->meshPart = new cigma::MeshPart();
field->meshPart->set_coordinates(coords, nno, nsd);
field->meshPart->set_connectivity(connect, nel, ndofs);
- /* 2D case
- switch (ndofs)
- {
- case 3:
- field->fe = new cigma::FE();
- field->fe->cell = new cigma::Tri();
- field->fe->quadrature = new cigma::Quadrature();
- field->fe->quadrature->set_quadrature(tri_qpts, tri_qwts, tri_nno, tri_nsd);
- field->fe->quadrature->set_globaldim(tri_nsd);
- field->fe->jxw = new double[tri_nno];
- field->fe->basis_tab = new double[tri_nno * ndofs];
- field->fe->basis_jet = new double[tri_nno * ndofs * tri_nsd];
- field->meshPart->cell = field->fe->cell;
- break;
- case 4:
- field->fe = new cigma::FE();
- field->fe->cell = new cigma::Quad();
- field->fe->quadrature = new cigma::Quadrature();
- field->fe->quadrature->set_quadrature(quad_qpts, quad_qwts, quad_nno, quad_nsd);
- field->fe->quadrature->set_globaldim(quad_nsd);
- field->fe->jxw = new double[quad_nno];
- field->fe->basis_tab = new double[quad_nno * ndofs];
- field->fe->basis_jet = new double[quad_nno * ndofs * quad_nsd];
- field->meshPart->cell = field->fe->cell;
- break;
- break;
- }
+
+ field->meshPart->set_cell();
+ assert(field->meshPart->cell != 0);
+
+
+ //* // XXX: Create locator only when necessary
+ cigma::AnnLocator *locator = new cigma::AnnLocator();
+ field->meshPart->set_locator(locator);
// */
- //* 3D case
- switch (ndofs)
+
+ switch (field->dim)
{
- case 4:
- field->fe = new cigma::FE();
- field->fe->cell = new cigma::Tet();
- field->fe->quadrature = new cigma::Quadrature();
- field->fe->quadrature->set_quadrature(tet_qpts, tet_qwts, tet_nno, tet_nsd);
- field->fe->quadrature->set_globaldim(3);
- field->fe->jxw = new double[tet_nno];
- field->fe->basis_tab = new double[tet_nno * ndofs];
- field->fe->basis_jet = new double[tet_nno * ndofs * tet_nsd];
- field->meshPart->cell = field->fe->cell;
+ case 2:
+ //* 2D case
+ switch (ndofs)
+ {
+ case 3:
+ field->fe = new cigma::FE();
+ //field->fe->cell = new cigma::Tri();
+ field->fe->quadrature = new cigma::Quadrature();
+ field->fe->quadrature->set_quadrature(tri_qpts, tri_qwts, tri_nno, tri_nsd);
+ field->fe->quadrature->set_globaldim(tri_nsd);
+ field->fe->jxw = new double[tri_nno];
+ field->fe->basis_tab = new double[tri_nno * ndofs];
+ field->fe->basis_jet = new double[tri_nno * ndofs * tri_nsd];
+ //field->meshPart->cell = field->fe->cell;
+ break;
+ case 4:
+ field->fe = new cigma::FE();
+ //field->fe->cell = new cigma::Quad();
+ field->fe->quadrature = new cigma::Quadrature();
+ field->fe->quadrature->set_quadrature(quad_qpts, quad_qwts, quad_nno, quad_nsd);
+ field->fe->quadrature->set_globaldim(quad_nsd);
+ field->fe->jxw = new double[quad_nno];
+ field->fe->basis_tab = new double[quad_nno * ndofs];
+ field->fe->basis_jet = new double[quad_nno * ndofs * quad_nsd];
+ //field->meshPart->cell = field->fe->cell;
+ break;
+ }
+ // */
break;
- case 8:
- field->fe = new cigma::FE();
- field->fe->cell = new cigma::Hex();
- field->fe->quadrature = new cigma::Quadrature();
- field->fe->quadrature->set_quadrature(hex_qpts, hex_qwts, hex_nno, hex_nsd);
- field->fe->quadrature->set_globaldim(hex_nsd);
- field->fe->jxw = new double[hex_nno];
- field->fe->basis_tab = new double[hex_nno * ndofs];
- field->fe->basis_jet = new double[hex_nno * ndofs * hex_nsd];
- field->meshPart->cell = field->fe->cell;
+
+ case 3:
+ //* 3D case
+ switch (ndofs)
+ {
+ case 4:
+ field->fe = new cigma::FE();
+ //field->fe->cell = new cigma::Tet();
+ field->fe->quadrature = new cigma::Quadrature();
+ field->fe->quadrature->set_quadrature(tet_qpts, tet_qwts, tet_nno, tet_nsd);
+ field->fe->quadrature->set_globaldim(3);
+ field->fe->jxw = new double[tet_nno];
+ field->fe->basis_tab = new double[tet_nno * ndofs];
+ field->fe->basis_jet = new double[tet_nno * ndofs * tet_nsd];
+ //field->meshPart->cell = field->fe->cell;
+ break;
+ case 8:
+ field->fe = new cigma::FE();
+ //field->fe->cell = new cigma::Hex();
+ field->fe->quadrature = new cigma::Quadrature();
+ field->fe->quadrature->set_quadrature(hex_qpts, hex_qwts, hex_nno, hex_nsd);
+ field->fe->quadrature->set_globaldim(hex_nsd);
+ field->fe->jxw = new double[hex_nno];
+ field->fe->basis_tab = new double[hex_nno * ndofs];
+ field->fe->basis_jet = new double[hex_nno * ndofs * hex_nsd];
+ //field->meshPart->cell = field->fe->cell;
+ break;
+ } // */
break;
- } // */
+ }
+ field->fe->cell = field->meshPart->cell;
assert(field->fe != 0);
assert(field->fe->cell != 0);
+
field->dofHandler = new cigma::DofHandler();
field->dofHandler->meshPart = field->meshPart;
field->dofHandler->set_data(dofs, dofs_nno, dofs_valdim);
More information about the cig-commits
mailing list