[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