[cig-commits] r6225 - short/3D/PyLith/trunk/libsrc/materials
brad at geodynamics.org
brad at geodynamics.org
Sun Mar 11 19:52:15 PDT 2007
Author: brad
Date: 2007-03-11 19:52:14 -0700 (Sun, 11 Mar 2007)
New Revision: 6225
Added:
short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc
short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.icc
Removed:
short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.cc
short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.hh
Modified:
short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc
short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc
short/3D/PyLith/trunk/libsrc/materials/Makefile.am
short/3D/PyLith/trunk/libsrc/materials/Material.cc
short/3D/PyLith/trunk/libsrc/materials/Material.hh
Log:
Finished implementing materials interfaces with ElasticIsotropic3D material as usable object. Still need to test.
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc 2007-03-12 02:52:14 UTC (rev 6225)
@@ -17,6 +17,9 @@
#include <assert.h> // USES assert()
// ----------------------------------------------------------------------
+// _ElasticIsotropic is a helper class for ElasticIsotropic. We define
+// it in this implementation file to insulate other objects from these
+// details.
namespace pylith {
namespace materials {
class _ElasticIsotropic3D;
@@ -25,18 +28,29 @@
class pylith::materials::_ElasticIsotropic3D {
public:
+ // Number of elastic constants (for general 3-D elastic material)
+ static const int numElasticConsts;
+
+ // Values expected in spatial database
static const int numDBValues;
static const char* namesDBValues[];
- static const int numParameters;
- static const char* namesParameters[];
+
+ // Indices (order) of database values
static const int didDensity;
static const int didVs;
static const int didVp;
+
+ // Parameters
+ static const int numParameters;
+ static const char* namesParameters[];
+
+ // Indices (order) of parameters
static const int pidDensity;
static const int pidMu;
static const int pidLambda;
}; // _ElasticIsotropic3D
+const int pylith::materials::_ElasticIsotropic3D::numElasticConsts = 21;
const int pylith::materials::_ElasticIsotropic3D::numDBValues = 3;
const char* pylith::materials::_ElasticIsotropic3D::namesDBValues[] =
{"density", "vp", "vs" };
@@ -66,22 +80,62 @@
// Copy constructor.
pylith::materials::ElasticIsotropic3D::ElasticIsotropic3D(
const ElasticIsotropic3D& m) :
- ElasticMaterial3D(m)
+ ElasticMaterial(m)
{ // copy constructor
} // copy constructor
// ----------------------------------------------------------------------
+// Get number of elastic constants for material.
+const int
+pylith::materials::ElasticIsotropic3D::numElasticConsts(void) const
+{ // numElasticConsts
+ return _ElasticIsotropic3D::numElasticConsts;
+} // numElasticConsts
+
+// ----------------------------------------------------------------------
+// Get names of values expected to be in database of parameters for
+const char**
+pylith::materials::ElasticIsotropic3D::_dbValues(void) const
+{ // _dbValues
+ return _ElasticIsotropic3D::namesDBValues;
+} // _dbValues
+
+// ----------------------------------------------------------------------
+// Get number of values expected to be in database of parameters for
+int
+pylith::materials::ElasticIsotropic3D::_numDBValues(void) const
+{ // _numDBValues
+ return _ElasticIsotropic3D::numDBValues;
+} // _numDBValues
+
+// ----------------------------------------------------------------------
+// Get names of parameters for physical properties.
+const char**
+pylith::materials::ElasticIsotropic3D::_parameterNames(void) const
+{ // _parameterNames
+ return _ElasticIsotropic3D::namesParameters;
+} // _parameterNames
+
+// ----------------------------------------------------------------------
+// Get number of parameters for physical properties.
+int
+pylith::materials::ElasticIsotropic3D::_numParameters(void) const
+{ // _numParameters
+ return _ElasticIsotropic3D::numParameters;
+} // _numParameters
+
+// ----------------------------------------------------------------------
// Compute parameters from values in spatial database.
void
-pylith::materials::ElasticIsotropic3D::dbToParams(double* paramVals,
- const int numParams,
- double* dbValues,
- const int numValues) const
+pylith::materials::ElasticIsotropic3D::_dbToParams(double* paramVals,
+ const int numParams,
+ double* dbValues,
+ const int numValues) const
{ // computeParameters
assert(0 != paramVals);
- assert(_NUMPARAMETERS == numParams);
+ assert(_ElasticIsotropic3D::numParameters == numParams);
assert(0 != dbValues);
- assert(_NUMDBVALUES == numValues);
+ assert(_ElasticIsotropic3D::numDBValues == numValues);
const double density = dbValues[_ElasticIsotropic3D::didDensity];
const double vs = dbValues[_ElasticIsotropic3D::didVs];
@@ -98,52 +152,60 @@
// ----------------------------------------------------------------------
// Compute density at location from parameters.
void
-pylith::materials::ElasticIsotropic3D::calcDensity(double* density,
- const double* parameters,
- const int numParameters)
+pylith::materials::ElasticIsotropic3D::_calcDensity(const double* parameters,
+ const int numParameters,
+ const int numLocs)
{ // calcDensity
- assert(0 != density);
- *density = parameters[_ElasticIsotropic3D::pidDensity];
+ assert(0 != _density);
+ assert(0 != parameters);
+
+ for (int iLoc=0, index=0; iLoc < numLocs; ++iLoc, index+=numParameters)
+ _density[iLoc] =
+ parameters[index+_ElasticIsotropic3D::pidDensity];
} // calcDensity
// ----------------------------------------------------------------------
// Compute density at location from parameters.
void
-pylith::materials::ElasticIsotropic3D::calcElasticConsts(double* elasticConsts,
- const int numConsts,
- const double* parameters,
- const int numParameters)
+pylith::materials::ElasticIsotropic3D::_calcElasticConsts(const double* parameters,
+ const int numParameters,
+ const int numLocs)
{ // calcElasticConsts
- assert(0 != elasticConsts);
- assert(NUMELASTCONSTS == numConsts);
+ assert(0 != _elasticConsts);
assert(0 != parameters);
assert(_ElasticIsotropic3D::numParameters == numParameters);
- const double density = parameters[_ElasticIsotropic3D::pidDensity];
- const double mu = parameters[_ElasticIsotropic3D::pidMu];
- const double lambda = parameters[_ElasticIsotropic3D::pidLambda];
+ for (int iLoc=0, indexP=0, indexC=0;
+ iLoc < numLocs;
+ ++iLoc,
+ indexP+=_ElasticIsotropic3D::numParameters,
+ indexC+=_ElasticIsotropic3D::numElasticConsts) {
+ const double density = parameters[indexP+_ElasticIsotropic3D::pidDensity];
+ const double mu = parameters[indexP+_ElasticIsotropic3D::pidMu];
+ const double lambda = parameters[indexP+_ElasticIsotropic3D::pidLambda];
- elasticConsts[ 0] = lambda + 2.0*mu; // C1111
- elasticConsts[ 1] = lambda; // C1122
- elasticConsts[ 2] = lambda; // C1133
- elasticConsts[ 3] = 0; // C1112
- elasticConsts[ 4] = 0; // C1123
- elasticConsts[ 5] = 0; // C1113
- elasticConsts[ 6] = lambda + 2.0*mu; // C2222
- elasticConsts[ 7] = lambda; // C2233
- elasticConsts[ 8] = 0; // C2212
- elasticConsts[ 9] = 0; // C2223
- elasticConsts[10] = 0; // C2212
- elasticConsts[11] = lambda + 2.0*mu; // C3333
- elasticConsts[12] = 0; // C3312
- elasticConsts[13] = 0; // C3323
- elasticConsts[14] = 0; // C3312
- elasticConsts[15] = mu; // C1212
- elasticConsts[16] = 0; // C1223
- elasticConsts[17] = 0; // C1213
- elasticConsts[18] = mu; // C2323
- elasticConsts[19] = 0; // C2313
- elasticConsts[20] = mu; // C1313
+ _elasticConsts[indexC+ 0] = lambda + 2.0*mu; // C1111
+ _elasticConsts[indexC+ 1] = lambda; // C1122
+ _elasticConsts[indexC+ 2] = lambda; // C1133
+ _elasticConsts[indexC+ 3] = 0; // C1112
+ _elasticConsts[indexC+ 4] = 0; // C1123
+ _elasticConsts[indexC+ 5] = 0; // C1113
+ _elasticConsts[indexC+ 6] = lambda + 2.0*mu; // C2222
+ _elasticConsts[indexC+ 7] = lambda; // C2233
+ _elasticConsts[indexC+ 8] = 0; // C2212
+ _elasticConsts[indexC+ 9] = 0; // C2223
+ _elasticConsts[indexC+10] = 0; // C2212
+ _elasticConsts[indexC+11] = lambda + 2.0*mu; // C3333
+ _elasticConsts[indexC+12] = 0; // C3312
+ _elasticConsts[indexC+13] = 0; // C3323
+ _elasticConsts[indexC+14] = 0; // C3312
+ _elasticConsts[indexC+15] = mu; // C1212
+ _elasticConsts[indexC+16] = 0; // C1223
+ _elasticConsts[indexC+17] = 0; // C1213
+ _elasticConsts[indexC+18] = mu; // C2323
+ _elasticConsts[indexC+19] = 0; // C2313
+ _elasticConsts[indexC+20] = mu; // C1313
+ } // for
} // calcElasticConsts
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh 2007-03-12 02:52:14 UTC (rev 6225)
@@ -25,7 +25,7 @@
#if !defined(pylith_materials_elasticisotropic3d_hh)
#define pylith_materials_elasticisotropic3d_hh
-#include "ElasticMaterial3D.hh"
+#include "ElasticMaterial.hh"
/// Namespace for pylith package
namespace pylith {
@@ -36,7 +36,7 @@
} // pylith
/// 3-D, isotropic, linear elastic material.
-class pylith::materials::ElasticIsotropic3D : public ElasticMaterial3D
+class pylith::materials::ElasticIsotropic3D : public ElasticMaterial
{ // class ElasticIsotropic3D
friend class TestElasticIsotropic3D; // unit testing
@@ -53,8 +53,18 @@
*
* @returns Pointer to copy
*/
- ElasticMaterial3D* clone(void) const;
+ ElasticMaterial* clone(void) const;
+ /** Get number of elastic constants for material.
+ *
+ * 1-D = 1
+ * 2-D = 6
+ * 3-D = 21
+ *
+ * @returns Number of elastic constants
+ */
+ const int numElasticConsts(void) const;
+
// PROTECTED METHODS //////////////////////////////////////////////////
protected :
@@ -69,26 +79,26 @@
*
* @returns Names of values
*/
- const char** dbValues(void) const;
+ const char** _dbValues(void) const;
/** Get number of values expected to be in database of parameters for
* physical properties.
*
* @returns Number of values
*/
- int numDBValues(void) const;
+ int _numDBValues(void) const;
/** Get names of parameters for physical properties.
*
* @returns Names of parameters
*/
- const char** parameterNames(void) const;
+ const char** _parameterNames(void) const;
/** Get number of parameters for physical properties.
*
* @returns Number of parameters
*/
- int numParameters(void) const;
+ int _numParameters(void) const;
/** Compute parameters from values in spatial database.
*
@@ -100,32 +110,38 @@
* @param dbValues Array of database values
* @param numValues Number of database values
*/
- void dbToParams(double* paramVals,
- const int numParams,
- double* dbValues,
- const int numValues) const;
+ void _dbToParams(double* paramVals,
+ const int numParams,
+ double* dbValues,
+ const int numValues) const;
- /** Compute density at location from parameters.
+ /** Compute density at locations from parameters.
*
- * @param density Pointer to density at location
+ * Results are stored in _density.
+ *
+ * Index into parameters = iLoc*numParameters + iParam
+ *
* @param parameters Parameters at location
* @param numParameters Number of parameters
+ * @param numLocs Number of locations
*/
- void calcDensity(double* density,
- const double* parameters,
- const int numParameters);
+ void _calcDensity(const double* parameters,
+ const int numParameters,
+ const int numLocs);
- /** Compute density at location from parameters.
+ /** Compute density at locations from parameters.
*
- * @param elasticConsts Pointer to elastic constants at location
- * @param numConsts Number of elastic constants
+ * Results are stored in _elasticConsts.
+ *
+ * Index into parameters = iLoc*numParameters + iParam
+ *
* @param parameters Parameters at location
* @param numParameters Number of parameters
+ * @param numLocs Number of locations
*/
- void calcElasticConsts(double* elasticConsts,
- const int numConsts,
- const double* parameters,
- const int numParameters);
+ void _calcElasticConsts(const double* parameters,
+ const int numParameters,
+ const int numLocs);
// NOT IMPLEMENTED ////////////////////////////////////////////////////
private :
@@ -133,21 +149,6 @@
/// Not implemented
const ElasticIsotropic3D& operator=(const ElasticIsotropic3D& m);
- // PRIVATE MEMBERS ////////////////////////////////////////////////////
-private :
-
- /// Number of values expected in database of physical property parameters
- static const int _NUMDBVALUES;
-
- /// Names of values expected in database of physical property parameters
- static const char* _NAMESDBVALUES[];
-
- /// Number of physical property parameters
- static const int _NUMPARAMETERS;
-
- /// Names of physical property parameters
- static const char* _NAMESPARAMETERS[];
-
}; // class ElasticIsotropic3D
#include "ElasticIsotropic3D.icc" // inline methods
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc 2007-03-12 02:52:14 UTC (rev 6225)
@@ -16,38 +16,10 @@
// Create a pointer to a copy of this.
inline
-pylith::materials::ElasticMaterial3D*
+pylith::materials::ElasticMaterial*
pylith::materials::ElasticIsotropic3D::clone(void) const {
return new ElasticIsotropic3D(*this);
}
-// Get names of values expected to be in database of parameters for
-inline
-const char**
-pylith::materials::ElasticIsotropic3D::dbValues(void) const {
- return _NAMESDBVALUES;
-}
-// Get number of values expected to be in database of parameters for
-inline
-int
-pylith::materials::ElasticIsotropic3D::numDBValues(void) const {
- return _NUMDBVALUES;
-}
-
-// Get names of parameters for physical properties.
-inline
-const char**
-pylith::materials::ElasticIsotropic3D::parameterNames(void) const {
- return _NAMESPARAMETERS;
-}
-
-// Get number of parameters for physical properties.
-inline
-int
-pylith::materials::ElasticIsotropic3D::numParameters(void) const {
- return _NUMPARAMETERS;
-}
-
-
// End of file
Copied: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc (from rev 6221, short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.cc 2007-03-11 04:26:46 UTC (rev 6221)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc 2007-03-12 02:52:14 UTC (rev 6225)
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "ElasticMaterial.hh" // implementation of object methods
+
+#include "pylith/feassemble/ParameterManager.hh" // USES ParameterManager
+
+#include <petscmesh.h> // USES Mesh
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::materials::ElasticMaterial::ElasticMaterial(void) :
+ _density(0),
+ _elasticConsts(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor.
+pylith::materials::ElasticMaterial::~ElasticMaterial(void)
+{ // destructor
+ delete[] _density; _density = 0;
+ delete[] _elasticConsts; _elasticConsts = 0;
+} // destructor
+
+// ----------------------------------------------------------------------
+// Copy constructor.
+pylith::materials::ElasticMaterial::ElasticMaterial(const ElasticMaterial& m) :
+ Material(m),
+ _density(0),
+ _elasticConsts(0)
+{ // copy constructor
+} // copy constructor
+
+// ----------------------------------------------------------------------
+// Compute physical properties of cell at quadrature points.
+void
+pylith::materials::ElasticMaterial::calcProperties(
+ const topology_type::point_type& cell,
+ const topology_type::patch_type& patch,
+ const int numQuadPts)
+{ // calcProperties
+ _initCellData(numQuadPts);
+
+ const int numParams = _numParameters();
+ const char** paramNames = _parameterNames();
+
+ int size = numParams * numQuadPts;
+ double* paramsCell = (size > 0) ? new double[size] : 0;
+ for (int iParam=0; iParam < numParams; ++iParam) {
+ const ALE::Obj<real_section_type> parameter =
+ _parameters->getReal(paramNames[iParam]);
+ assert(numQuadPts == parameter->getFiberDimension(patch, cell));
+ const real_section_type::value_type* parameterCell =
+ parameter->restrict(patch, cell);
+ for (int iQuadPt=0; iQuadPt < numQuadPts; ++iQuadPt)
+ paramsCell[iQuadPt*numParams+iParam] = parameterCell[iQuadPt];
+ } // for
+ _calcDensity(paramsCell, numParams, numQuadPts);
+ _calcElasticConsts(paramsCell, numParams, numQuadPts);
+} // calcProperties
+
+// ----------------------------------------------------------------------
+// Initialize arrays holding cell data.
+void
+pylith::materials::ElasticMaterial::_initCellData(const int numQuadPts)
+{ // _initCellData
+ int size = numQuadPts;
+ delete[] _density; _density = (size > 0) ? new double[size] : 0;
+ size = numQuadPts * numElasticConsts();
+ delete[] _elasticConsts; _elasticConsts = (size > 0) ? new double[size] : 0;
+} // _initCellData
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh (from rev 6221, short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.hh 2007-03-11 04:26:46 UTC (rev 6221)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh 2007-03-12 02:52:14 UTC (rev 6225)
@@ -0,0 +1,185 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file libsrc/materials/ElasticMaterial.hh
+ *
+ * @brief C++ ElasticMaterial object
+ *
+ * Interface definition for 3-D linear and nonlinear elastic materials.
+ */
+
+#if !defined(pylith_materials_elasticmaterial_hh)
+#define pylith_materials_elasticmaterial_hh
+
+#include "Material.hh" // ISA Material
+
+#include <petscmesh.h> // USES Mesh
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace materials {
+ class ElasticMaterial;
+ } // materials
+} // pylith
+
+/// C++ object for material constitutive model.
+class pylith::materials::ElasticMaterial : public Material
+{ // class ElasticMaterial
+
+ // PUBLIC TYPEDEFS ////////////////////////////////////////////////////
+public :
+
+ typedef ALE::Mesh Mesh;
+ typedef Mesh::topology_type topology_type;
+ typedef Mesh::real_section_type real_section_type;
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Default constructor.
+ ElasticMaterial(void);
+
+ /// Destructor.
+ virtual
+ ~ElasticMaterial(void);
+
+ /** Create a pointer to a copy of this.
+ *
+ * @returns Pointer to copy
+ */
+ virtual
+ ElasticMaterial* clone(void) const = 0;
+
+ /** Get density values for cell at quadrature points.
+ *
+ * @returns Array of density values at cell's quadrature points.
+ */
+ const double* density(void) const;
+
+ /** Get elasticity constants for cell at quadrature points.
+ *
+ * Index into array of elasticity constants:
+ * index = iQuadPt*NUMELASTCONSTS + iConstant
+ *
+ * Order of elasticity constants for 3-D:
+ * 0: C1111, 1: C1122, 2: C1133, 3: C1112, 4: C1123, 5: C1113,
+ * 6: C2222, 7: C2233, 8: C2212, 9: C2223, 10: C2213,
+ * 11: C3333, 12: C3312, 13: C3323, 14: C3313,
+ * 15: C1212, 16: C1223, 17: C1213,
+ * 18: C2323, 19: C2313,
+ * 20: C1313
+ *
+ * Order of elasticity constants for 2-D:
+ * 0: C1111, 1: C1122, 2: C1112,
+ * 3: C2222, 4: C2212,
+ * 5: C1212
+ *
+ * Order of elasticity constants for 1-D:
+ * 0: C1111
+ *
+ * @returns Array of elasticity constants at cell's quadrature points.
+ */
+ const double* elasticConsts(void) const;
+
+ /** Get number of elastic constants for material.
+ *
+ * 1-D = 1
+ * 2-D = 6
+ * 3-D = 21
+ *
+ * @returns Number of elastic constants
+ */
+ virtual
+ const int numElasticConsts(void) const = 0;
+
+ /** Compute physical properties of cell at quadrature points.
+ *
+ * @param cell Finite-element cell
+ * @param patch Finite-element patch
+ * @param numQuadPts Number of quadrature points (consistency check)
+ */
+ void calcProperties(const topology_type::point_type& cell,
+ const topology_type::patch_type& patch,
+ const int numQuadPts);
+
+ // PROTECTED METHODS //////////////////////////////////////////////////
+protected :
+
+ /** Copy constructor.
+ *
+ * @param m Material to copy
+ */
+ ElasticMaterial(const ElasticMaterial& m);
+
+ /** Initialize arrays holding cell data.
+ *
+ * @param numQuadPts Number of quadrature points
+ */
+ void _initCellData(const int numQuadPts);
+
+ /** Compute density at locations from parameters.
+ *
+ * Results are stored in _density.
+ *
+ * @param parameters Parameters at location
+ * @param numParameters Number of parameters
+ * @param numLocs Number of locations
+ */
+ virtual
+ void _calcDensity(const double* parameters,
+ const int numParameters,
+ const int numLocs) = 0;
+
+ /** Compute density at locations from parameters.
+ *
+ * Results are stored in _elasticConsts.
+ *
+ * @param parameters Parameters at location
+ * @param numParameters Number of parameters
+ * @param numLocs Number of locations
+ */
+ virtual
+ void _calcElasticConsts(const double* parameters,
+ const int numParameters,
+ const int numLocs) = 0;
+
+ // NOT IMPLEMENTED ////////////////////////////////////////////////////
+private :
+
+ /// Not implemented
+ const ElasticMaterial& operator=(const ElasticMaterial& m);
+
+ // PROTECTED MEMBERS //////////////////////////////////////////////////
+protected :
+
+ /** Density value at quadrature points for current cell.
+ *
+ * size = numQuadPts
+ * index = iQuadPt
+ */
+ double* _density;
+
+ /** Array of elasticity constants at quadrature points for current cell.
+ *
+ * size = numElasticConsts*numQuadPts
+ * index = iQuadPt*numElasticConsts+iElasticConst
+ */
+ double* _elasticConsts;
+
+}; // class ElasticMaterial
+
+#include "ElasticMaterial.icc" // inline methods
+
+#endif // pylith_materials_elasticmaterial_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.icc 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.icc 2007-03-12 02:52:14 UTC (rev 6225)
@@ -0,0 +1,32 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#if !defined(pylith_materials_elasticmaterial_hh)
+#error "ElasticMaterial.icc can only be included from ElasticMaterial.hh"
+#endif
+
+// Get elasticity constants for cell at quadrature points.
+inline
+const double*
+pylith::materials::ElasticMaterial::elasticConsts(void) const {
+ return _elasticConsts;
+}
+
+// Get density values for cell at quadrature points.
+inline
+const double*
+pylith::materials::ElasticMaterial::density(void) const {
+ return _density;
+}
+
+
+// End of file
Deleted: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.cc 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.cc 2007-03-12 02:52:14 UTC (rev 6225)
@@ -1,56 +0,0 @@
-// -*- C++ -*-
-//
-// ----------------------------------------------------------------------
-//
-// Brad T. Aagaard
-// U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ----------------------------------------------------------------------
-//
-
-#include <portinfo>
-
-#include "ElasticMaterial3D.hh" // implementation of object methods
-
-#include <assert.h> // USES assert()
-
-// ----------------------------------------------------------------------
-const int pylith::materials::ElasticMaterial3D::NUMELASTCONSTS = 21;
-
-// ----------------------------------------------------------------------
-// Default constructor.
-pylith::materials::ElasticMaterial3D::ElasticMaterial3D(void)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Destructor.
-pylith::materials::ElasticMaterial3D::~ElasticMaterial3D(void)
-{ // destructor
-} // destructor
-
-// ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::ElasticMaterial3D::ElasticMaterial3D(const ElasticMaterial3D& m) :
- Material(m)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
-// Get section with inertia values.
-const ALE::Obj<ALE::Mesh::real_section_type>&
-pylith::materials::ElasticMaterial3D::density(void)
-{ // density
-} // density
-
-// ----------------------------------------------------------------------
-// Get section with elasticity constants.
-const ALE::Obj<ALE::Mesh::real_section_type>&
-pylith::materials::ElasticMaterial3D::elasticityConstants(void)
-{ // elasticityConstants
-} // elasticityConstants
-
-
-// End of file
Deleted: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.hh 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial3D.hh 2007-03-12 02:52:14 UTC (rev 6225)
@@ -1,132 +0,0 @@
-// -*- C++ -*-
-//
-// ----------------------------------------------------------------------
-//
-// Brad T. Aagaard
-// U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ----------------------------------------------------------------------
-//
-
-/** @file libsrc/materials/ElasticMaterial3D.hh
- *
- * @brief C++ ElasticMaterial object
- *
- * Interface definition for 3-D linear and nonlinear elastic materials.
- */
-
-#if !defined(pylith_materials_elasticmaterial3d_hh)
-#define pylith_materials_elasticmaterial3d_hh
-
-#include "Material.hh" // ISA Material
-
-#include <petscmesh.h> // USES Mesh
-
-
-/// Namespace for pylith package
-namespace pylith {
- namespace materials {
- class ElasticMaterial3D;
- } // materials
-} // pylith
-
-/// C++ object for material constitutive model.
-class pylith::materials::ElasticMaterial3D : public Material
-{ // class ElasticMaterial3D
-
- typedef ALE::Mesh::real_section_type real_section_type;
-
-
- // PUBLIC METHODS /////////////////////////////////////////////////////
-public :
-
- /// Default constructor.
- ElasticMaterial3D(void);
-
- /// Destructor.
- virtual
- ~ElasticMaterial3D(void);
-
- /** Create a pointer to a copy of this.
- *
- * @returns Pointer to copy
- */
- virtual
- ElasticMaterial3D* clone(void) const = 0;
-
- /** Get section with density values.
- *
- * @returns Section with density values.
- */
- const ALE::Obj<real_section_type>& density(void);
-
- /** Get section with elasticity constants.
- *
- * Index into array of elasticity constants:
- * index = iQuadPt*NUMELASTCONSTS + iConstant
- *
- * Order of elasticity constants:
- * 0: C1111, 1: C1122, 2: C1133, 3: C1112, 4: C1123, 5: C1113,
- * 6: C2222, 7: C2233, 8: C2212, 9: C2223, 10: C2213,
- * 11: C3333, 12: C3312, 13: C3323, 14: C3313,
- * 15: C1212, 16: C1223, 17: C1213,
- * 18: C2323, 19: C2313,
- * 20: C1313
- *
- * @returns Section with elasticity constants.
- */
- const ALE::Obj<real_section_type>& elasticityConstants(void);
-
- // PUBLIC MEMBERS /////////////////////////////////////////////////////
-public :
-
- static const int NUMELASTCONSTS; ///< Number of elastic constants
-
- // PROTECTED METHODS //////////////////////////////////////////////////
-protected :
-
- /** Copy constructor.
- *
- * @param m Material to copy
- */
- ElasticMaterial3D(const ElasticMaterial3D& m);
-
-
- /** Compute density at location from parameters.
- *
- * @param density Pointer to density at location
- * @param parameters Parameters at location
- * @param numParameters Number of parameters
- */
- virtual
- void calcDensity(double* density,
- const double* parameters,
- const int numParameters) = 0;
-
- /** Compute density at location from parameters.
- *
- * @param elasticConsts Pointer to elastic constants at location
- * @param numConsts Number of elastic constants
- * @param parameters Parameters at location
- * @param numParameters Number of parameters
- */
- virtual
- void calcElasticConsts(double* elasticConsts,
- const int numConstants,
- const double* parameters,
- const int numParameters) = 0;
-
- // NOT IMPLEMENTED ////////////////////////////////////////////////////
-private :
-
- /// Not implemented
- const ElasticMaterial3D& operator=(const ElasticMaterial3D& m);
-
-}; // class ElasticMaterial3D
-
-#endif // pylith_materials_elasticmaterial3d_hh
-
-
-// End of file
Modified: short/3D/PyLith/trunk/libsrc/materials/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Makefile.am 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/Makefile.am 2007-03-12 02:52:14 UTC (rev 6225)
@@ -16,8 +16,10 @@
subpkginclude_HEADERS = \
ElasticIsotropic3D.hh \
ElasticIsotropic3D.icc \
- ElasticMaterial3D.hh \
- Material.hh
+ ElasticMaterial.hh \
+ ElasticMaterial.icc \
+ Material.hh \
+ Material.icc
noinst_HEADERS =
Modified: short/3D/PyLith/trunk/libsrc/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.cc 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.cc 2007-03-12 02:52:14 UTC (rev 6225)
@@ -28,8 +28,8 @@
// ----------------------------------------------------------------------
// Default constructor.
pylith::materials::Material::Material(void) :
+ _parameters(0),
_db(0),
- _parameters(0),
_id(0),
_label("")
{ // constructor
@@ -48,8 +48,8 @@
// ----------------------------------------------------------------------
// Copy constructor.
pylith::materials::Material::Material(const Material& m) :
+ _parameters(m._parameters),
_db(m._db),
- _parameters(m._parameters),
_id(m._id),
_label(m._label)
{ // copy constructor
@@ -90,8 +90,8 @@
* this material, we want to carry around storage for density,
* etc. for cells not of this material.
*/
- const int numParams = numParameters();
- const char** paramNames = parameterNames();
+ const int numParams = _numParameters();
+ const char** paramNames = _parameterNames();
ALE::Obj<real_section_type>* paramSections =
(numParams > 0) ? new ALE::Obj<real_section_type>[numParams] : 0;
@@ -104,9 +104,9 @@
} // for
// Setup database for querying
- const int numValues = numDBValues();
+ const int numValues = _numDBValues();
_db->open();
- _db->queryVals(dbValues(), numValues);
+ _db->queryVals(_dbValues(), numValues);
// Loop over cells
double* queryData = (numValues > 0) ? new double[numValues] : 0;
@@ -147,7 +147,7 @@
delete[] paramData; paramData = 0;
throw std::runtime_error(msg.str());
} // if
- dbToParams(paramData, numParams, queryData, numValues);
+ _dbToParams(paramData, numParams, queryData, numValues);
for (int iParam=0; iParam < numParams; ++iParam)
cellData[iParam][iQuadPt] = paramData[iParam];
Modified: short/3D/PyLith/trunk/libsrc/materials/Material.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.hh 2007-03-11 16:17:07 UTC (rev 6224)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.hh 2007-03-12 02:52:14 UTC (rev 6225)
@@ -122,7 +122,7 @@
* @returns Names of values
*/
virtual
- const char** dbValues(void) const = 0;
+ const char** _dbValues(void) const = 0;
/** Get number of values expected to be in database of parameters for
* physical properties.
@@ -130,21 +130,21 @@
* @returns Number of values
*/
virtual
- int numDBValues(void) const = 0;
+ int _numDBValues(void) const = 0;
/** Get names of parameters for physical properties.
*
* @returns Names of parameters
*/
virtual
- const char** parameterNames(void) const = 0;
+ const char** _parameterNames(void) const = 0;
/** Get number of parameters for physical properties.
*
* @returns Number of parameters
*/
virtual
- int numParameters(void) const = 0;
+ int _numParameters(void) const = 0;
/** Compute parameters from values in spatial database.
*
@@ -154,7 +154,7 @@
* @param numValues Number of database values
*/
virtual
- void dbToParams(double* paramVals,
+ void _dbToParams(double* paramVals,
const int numParams,
double* dbValues,
const int numValues) const = 0;
@@ -165,15 +165,18 @@
/// Not implemented
const Material& operator=(const Material& m);
+ // PROTECTED MEMBERS //////////////////////////////////////////////////
+protected :
+
+ ///< Manager of parameters for physical properties of material
+ pylith::feassemble::ParameterManager* _parameters;
+
// PRIVATE MEMBERS ////////////////////////////////////////////////////
private :
/// Database of parameters for physical properties of material
spatialdata::spatialdb::SpatialDB* _db;
- ///< Manager of parameters for physical properties of material
- pylith::feassemble::ParameterManager* _parameters;
-
int _id; ///< Material identifier
std::string _label; ///< Label of material
More information about the cig-commits
mailing list