[cig-commits] r15158 - in short/3D/PyLith/trunk: . libsrc/faults libsrc/feassemble modulesrc/faults modulesrc/feassemble modulesrc/topology pylith/problems unittests/libtests/faults unittests/libtests/feassemble
brad at geodynamics.org
brad at geodynamics.org
Tue Jun 9 11:36:30 PDT 2009
Author: brad
Date: 2009-06-09 11:36:29 -0700 (Tue, 09 Jun 2009)
New Revision: 15158
Modified:
short/3D/PyLith/trunk/TODO
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh
short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc
short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i
short/3D/PyLith/trunk/modulesrc/topology/Field.i
short/3D/PyLith/trunk/pylith/problems/Formulation.py
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh
Log:
Fixed bugs in FaultCohesiveKin::splitField(). Added corresponding unit test.
Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/TODO 2009-06-09 18:36:29 UTC (rev 15158)
@@ -25,6 +25,7 @@
Brad
Update Neumann
ArbitratySlipFn (final slip, start time)
+ UniformDB units
field split (setup fields)
symmetric matrix (use in examples, testing)
full-scale testing
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2009-06-09 18:36:29 UTC (rev 15158)
@@ -150,7 +150,7 @@
// ----------------------------------------------------------------------
void
-pylith::faults::FaultCohesiveKin::splitFields(topology::Field<topology::Mesh>* field)
+pylith::faults::FaultCohesiveKin::splitField(topology::Field<topology::Mesh>* field)
{ // splitFields
assert(0 != field);
@@ -161,9 +161,6 @@
const int fibrationDisp = 0;
const int fibrationLagrange = 1;
- const ALE::Obj<RealSection>& splitSection =
- section->getFibration(fibrationLagrange);
- assert(!splitSection.isNull());
// Get domain Sieve mesh
const ALE::Obj<SieveMesh>& sieveMesh = field->mesh().sieveMesh();
@@ -194,7 +191,7 @@
// Reset displacement fibration fiber dimension to zero.
section->setFiberDimension(vertexMesh, 0, fibrationDisp);
// Set Langrange fibration fiber dimension.
- splitSection->setFiberDimension(vertexMesh, fiberDim, fibrationLagrange);
+ section->setFiberDimension(vertexMesh, fiberDim, fibrationLagrange);
} // if
} // splitFields
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -90,11 +90,11 @@
const double upDir[3],
const double normalDir[3]);
- /** Split solution fields for separate preconditioning.
+ /** Split solution field for separate preconditioning.
*
* @param field Solution field.
*/
- void splitFields(topology::Field<topology::Mesh>* field);
+ void splitField(topology::Field<topology::Mesh>* field);
/** Integrate contributions to residual term (r) for operator that
* require assembly across processors.
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -116,12 +116,12 @@
virtual
void initialize(const topology::Mesh& mesh);
- /** Split solution fields for separate preconditioning.
+ /** Split solution field for separate preconditioning.
*
* @param field Solution field.
*/
virtual
- void splitFields(topology::Field<topology::Mesh>* field);
+ void splitField(topology::Field<topology::Mesh>* field);
/** Integrate contributions to residual term (r) for operator.
*
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc 2009-06-09 18:36:29 UTC (rev 15158)
@@ -45,12 +45,12 @@
pylith::feassemble::Integrator<quadrature_type>::initialize(const topology::Mesh& mesh) {
} // initialize
-// Split solution fields for separate preconditioning.
+// Split solution field for separate preconditioning.
template<typename quadrature_type>
inline
void
-pylith::feassemble::Integrator<quadrature_type>::splitFields(topology::Field<topology::Mesh>* field) {
-} // splitFields
+pylith::feassemble::Integrator<quadrature_type>::splitField(topology::Field<topology::Mesh>* field) {
+} // splitField
// Integrate contributions to residual term (r) for operator.
template<typename quadrature_type>
Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveKin.i 2009-06-09 18:36:29 UTC (rev 15158)
@@ -63,6 +63,12 @@
const double upDir[3],
const double normalDir[3]);
+ /** Split solution field for separate preconditioning.
+ *
+ * @param field Solution field.
+ */
+ void splitField(pylith::topology::Field<pylith::topology::Mesh>* field);
+
/** Integrate contributions to residual term (r) for operator that
* require assembly across processors.
*
Modified: short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/Integrator.i 2009-06-09 18:36:29 UTC (rev 15158)
@@ -97,12 +97,12 @@
virtual
void initialize(const pylith::topology::Mesh& mesh);
- /** Split solution fields for separate preconditioning.
+ /** Split solution field for separate preconditioning.
*
* @param field Solution field.
*/
virtual
- void splitFields(pylith::topology::Field<pylith::topology::Mesh>* field);
+ void splitField(pylith::topology::Field<pylith::topology::Mesh>* field);
/** Integrate contributions to residual term (r) for operator.
*
Modified: short/3D/PyLith/trunk/modulesrc/topology/Field.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/topology/Field.i 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/modulesrc/topology/Field.i 2009-06-09 18:36:29 UTC (rev 15158)
@@ -218,6 +218,9 @@
/// Sieve section view of the field.
void scatterVectorToSection(void) const;
+ /// Setup split field with all entries set to a default space of 0.
+ void splitDefault(void);
+
}; // Field
} // topology
Modified: short/3D/PyLith/trunk/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Formulation.py 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/pylith/problems/Formulation.py 2009-06-09 18:36:29 UTC (rev 15158)
@@ -228,11 +228,10 @@
solution.newSection(solution.VERTICES_FIELD, dimension)
if self.splitFields:
solution.splitDefault()
+ for integrator in self.integratorsMesh + self.integratorsSubMesh:
+ integrator.splitField(solution)
for constraint in self.constraints:
constraint.setConstraintSizes(solution)
- if self.splitFields:
- for integrator in self.integratorsMesh + self.integratorsSubMesh:
- integrator.splitFields(solution)
solution.allocate()
for constraint in self.constraints:
constraint.setConstraints(solution)
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc 2009-06-09 18:36:29 UTC (rev 15158)
@@ -148,6 +148,7 @@
faultSieveMesh->getRenumbering();
const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
faultSieveMesh->depthStratum(0);
+ CPPUNIT_ASSERT(!vertices.isNull());
const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
int iVertex = 0;
@@ -631,6 +632,7 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
faultSieveMesh->depthStratum(0);
+ CPPUNIT_ASSERT(!vertices.isNull());
const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
SieveSubMesh::renumbering_type& renumbering = faultSieveMesh->getRenumbering();
@@ -788,6 +790,69 @@
} // testCalcTractionsChange
// ----------------------------------------------------------------------
+// Test splitField().
+void
+pylith::faults::TestFaultCohesiveKin::testSplitField(void)
+{ // testSplitField
+ const int fibrationDisp = 0;
+ const int fibrationFault = 1;
+
+ topology::Mesh mesh;
+ FaultCohesiveKin fault;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &fault, &fields);
+
+ const topology::Field<topology::Mesh>& disp = fields.get("disp(t)");
+ const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();
+ CPPUNIT_ASSERT(0 != cs);
+ const int spaceDim = cs->spaceDim();
+
+ topology::Field<topology::Mesh> splitField(mesh);
+ splitField.newSection(disp, spaceDim);
+ splitField.splitDefault();
+ fault.splitField(&splitField);
+ splitField.allocate();
+ splitField.zero();
+
+ const ALE::Obj<RealSection>& section = splitField.section();
+ CPPUNIT_ASSERT(!section.isNull());
+ CPPUNIT_ASSERT_EQUAL(2, section->getNumSpaces());
+
+ const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
+ CPPUNIT_ASSERT(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
+ CPPUNIT_ASSERT(!vertices.isNull());
+ const SieveMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
+ int iVertex = 0;
+ for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ if (*v_iter == _data->constraintVertices[iVertex]) {
+ const int fiberDim = section->getFiberDimension(*v_iter);
+ const int fiberDimD = section->getFiberDimension(*v_iter,
+ fibrationDisp);
+ const int fiberDimF = section->getFiberDimension(*v_iter,
+ fibrationFault);
+ CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
+ CPPUNIT_ASSERT_EQUAL(0, fiberDimD);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fiberDimF);
+ ++iVertex;
+ } else {
+ const int fiberDim = section->getFiberDimension(*v_iter);
+ const int fiberDimD = section->getFiberDimension(*v_iter,
+ fibrationDisp);
+ const int fiberDimF = section->getFiberDimension(*v_iter,
+ fibrationFault);
+ CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fiberDimD);
+ CPPUNIT_ASSERT_EQUAL(0, fiberDimF);
+ } // if/else
+ } // for
+} // testSplitField
+
+// ----------------------------------------------------------------------
// Initialize FaultCohesiveKin interface condition.
void
pylith::faults::TestFaultCohesiveKin::_initialize(
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -107,6 +107,9 @@
/// Test _calcTractionsChange().
void testCalcTractionsChange(void);
+ /// Test splitField().
+ void testSplitField(void);
+
// PRIVATE METHODS ////////////////////////////////////////////////////
private :
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -42,6 +42,7 @@
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc 2009-06-09 18:36:29 UTC (rev 15158)
@@ -185,18 +185,18 @@
} // testResetCellMatrix
// ----------------------------------------------------------------------
-// Test splitFields().
+// Test splitField().
void
-pylith::feassemble::TestIntegrator::testSplitFields(void)
-{ // testSplitFields
+pylith::feassemble::TestIntegrator::testSplitField(void)
+{ // testSplitField
topology::Mesh mesh;
topology::Field<topology::Mesh> field(mesh);
ElasticityExplicit integrator;
- integrator.splitFields(&field);
+ integrator.splitField(&field);
// Expect nothing to happen
-} // testSplitFields
+} // testSplitField
// ----------------------------------------------------------------------
// Set quadrature information.
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh 2009-06-09 18:00:19 UTC (rev 15157)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh 2009-06-09 18:36:29 UTC (rev 15158)
@@ -50,7 +50,7 @@
CPPUNIT_TEST( testResetCellVector );
CPPUNIT_TEST( testInitCellMatrix );
CPPUNIT_TEST( testResetCellMatrix );
- CPPUNIT_TEST( testSplitFields );
+ CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
@@ -84,8 +84,8 @@
/// Test _resetCellMatrix().
void testResetCellMatrix(void);
- /// Test splitFields().
- void testSplitFields(void);
+ /// Test splitField().
+ void testSplitField(void);
// PRIVATE METHODS /////////////////////////////////////////////////////
private :
More information about the CIG-COMMITS
mailing list