[cig-commits] r13763 - cs/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Wed Dec 17 02:33:27 PST 2008


Author: luis
Date: 2008-12-17 02:33:27 -0800 (Wed, 17 Dec 2008)
New Revision: 13763

Modified:
   cs/cigma/trunk/src/FE.cpp
   cs/cigma/trunk/src/Field.cpp
   cs/cigma/trunk/src/MeshPart.cpp
Log:
Misc changes to FE, Field, MeshPart

Modified: cs/cigma/trunk/src/FE.cpp
===================================================================
--- cs/cigma/trunk/src/FE.cpp	2008-12-17 10:33:26 UTC (rev 13762)
+++ cs/cigma/trunk/src/FE.cpp	2008-12-17 10:33:27 UTC (rev 13763)
@@ -18,9 +18,9 @@
 
     if (fe_info)
     {
-        fe = shared_ptr<FE>(new FE);
+        fe             = shared_ptr<FE>(new FE);
         fe->quadrature = Quadrature::New(fe_info.q_info);
-        fe->cell = Cell::New(fe_info.q_info.cell_type_name.c_str());
+        fe->cell       = Cell::New(fe_info.q_info.cell_type_name.c_str());
         fe->setBasisAtQuad(fe_info.p_fe_basis);
     }
 
@@ -41,9 +41,13 @@
     this->jxw = 0;
     this->basis_tab = 0;
     this->basis_jet = 0;
-    this->cell = Cell::New(celltype);
-    this->quadrature = Quadrature::default_rule(celltype);
-    this->init_basis();
+
+    if (celltype != Cell::NONE)
+    {
+        this->cell = Cell::New(celltype);
+        this->quadrature = Quadrature::default_rule(celltype);
+        this->init_basis();
+    }
 }
 
 FE::FE(const FE& other)
@@ -53,23 +57,28 @@
 
 FE::~FE()
 {
-    if (jxw != 0) { delete [] jxw; jxw = 0; }
+    if (jxw != 0)       { delete [] jxw; jxw = 0; }
     if (basis_tab != 0) { delete [] basis_tab; basis_tab = 0; }
     if (basis_jet != 0) { delete [] basis_jet; basis_jet = 0; }
 }
 
 void FE::init(shared_ptr<Quadrature> Q)
 {
+    this->cell = Cell::New(Q->getCellType());
+
     this->quadrature = shared_ptr<Quadrature>(new Quadrature(*Q));
-    this->cell = Cell::New(Q->getCellType());
-    this->init_basis();
-    //this->init_basis_jet();
+
+    if (Q->getCellType() != Cell::NONE)
+    {
+        this->init_basis();
+    }
 }
 
 void FE::init_basis()
 {
     assert(cell);
     assert(quadrature);
+    assert(cell->cell_type() != Cell::NONE);
     const int nq = quadrature->n_points();
     const int ndofs = cell->n_nodes();
     if (jxw != 0) { delete [] jxw; }

Modified: cs/cigma/trunk/src/Field.cpp
===================================================================
--- cs/cigma/trunk/src/Field.cpp	2008-12-17 10:33:26 UTC (rev 13762)
+++ cs/cigma/trunk/src/Field.cpp	2008-12-17 10:33:27 UTC (rev 13763)
@@ -28,25 +28,35 @@
 
         if (field_info.p_field.is_vtk_file())
         {
-            string filename = field_info.p_field.filename();
-            string location = field_info.p_field.location();
+            const string filename = field_info.p_field.filename();
+            const string location = field_info.p_field.location();
 
             // XXX: move these methods up the hierarchy to FileReader
             shared_ptr<FileReader> reader = FileReader::New(filename, "r");
+
             VtkReader* vtk = static_cast<VtkReader*>(&(*reader));
 
-            field->mesh = vtk->getMesh();
-            field->fe   = vtk->getFE();
+            field->mesh = vtk->getMeshPart(0);
+            field->fe   = vtk->getFE(0);
+
             if (location != "")
             {
-                field->dofs = vtk->getDofs(location.c_str());
+                field->dofs = vtk->getDofHandler(location.c_str());
             }
         }
         else
         {
+            field->dofs = DofHandler::New(field_info.p_field);
             field->mesh = MeshPart::New(field_info.mesh_info);
-            field->fe   = FE::New(field_info.fe_info);
-            field->dofs = DofHandler::New(field_info.p_field);
+
+            if (field_info.fe_info)
+            {
+                field->fe = FE::New(field_info.fe_info);
+            }
+            else if (field->mesh)
+            {
+                field->fe = shared_ptr<FE>(new FE(field->mesh->getCellType()));
+            }
         }
     }
     

Modified: cs/cigma/trunk/src/MeshPart.cpp
===================================================================
--- cs/cigma/trunk/src/MeshPart.cpp	2008-12-17 10:33:26 UTC (rev 13762)
+++ cs/cigma/trunk/src/MeshPart.cpp	2008-12-17 10:33:27 UTC (rev 13763)
@@ -87,10 +87,14 @@
     {
         HDF5_Reader *h5 = static_cast<HDF5_Reader*>(&(*reader));
 
+        // 
+        // XXX: Move these methods to HDF5_Reader (cf. VtkReader)
+        //
         string loc = location;
         if (location == "") { loc = "/"; }
         bool locIsGroup = h5->locationIsGroup(loc.c_str());
         TRI_LOG(locIsGroup);
+
         if (locIsGroup)
         {
             DataPath p_nc, p_eb;
@@ -104,7 +108,7 @@
             if (cell_type == Cell::NONE)
             {
                 string cell_name;
-                int status = h5->readAttrString(loc.c_str(), "CellType", cell_name);
+                int status = h5->getStringAttr(loc.c_str(), "CellType", cell_name);
                 TRI_LOG(status);
                 if (status == 0)
                 {
@@ -126,6 +130,15 @@
     {
         VtkReader *vtk = static_cast<VtkReader*>(&(*reader));
 
+        this->coords    = vtk->getNodeCoordinates(0);
+        this->connect   = vtk->getElementBlock(0);
+        this->cell_type = vtk->getCellType(0);
+
+        string cellname = Cell::type2string(cell_type);
+        TRI_LOG(cellname);
+
+
+        /*
         DataPath p_nc, p_eb;
         p_nc.set_filename(filename);
         p_eb.set_filename(filename);
@@ -137,6 +150,7 @@
         TRI_LOG(cell_type);
 
         this->setPath2(p_nc, p_eb);
+        */
     }
     else if (rt == FileReader::TEXT_FILE_READER)
     {



More information about the CIG-COMMITS mailing list