00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _MESH_ENTRY_H
00011 #define _MESH_ENTRY_H
00012
00017 enum MeshType {
00018 BAD,
00019 CUBOID,
00020 CYL, CYL_SHELL, CYL_SHELL_SEG,
00021 SPHERE, SPHERE_SHELL, SPHERE_SHELL_SEG,
00022 TETRAHEDRON, DISK
00023 };
00024
00025 class ChemCompt;
00026
00033 class MeshEntry
00034 {
00035 public:
00036 MeshEntry();
00037 MeshEntry( const ChemCompt* parent );
00039
00041
00042
00043 double getVolume( const Eref& e ) const;
00044
00048 unsigned int getDimensions( const Eref& e ) const;
00049
00062 unsigned int getMeshType( const Eref& e ) const;
00063
00069 vector< double > getCoordinates( const Eref& e )
00070 const;
00074 vector< unsigned int > getNeighbors( const Eref& e )
00075 const;
00076
00080 vector< double > getDiffusionArea( const Eref& e ) const;
00084 vector< double > getDiffusionScaling( const Eref& e) const;
00085
00086
00089
00090
00093
00094
00096
00097
00099
00100
00101
00103
00105
00106 void extent( DataId di, double volume, double area, double perimeter );
00107
00108 void process( const Eref& e, ProcPtr info );
00109 void reinit( const Eref& e, ProcPtr info );
00111
00113 void triggerRemesh( const Eref& e,
00114 double oldvol,
00115 unsigned int startEntry,
00116 const vector< unsigned int >& localIndices,
00117 const vector< double >& vols );
00118
00120
00122
00123 static const Cinfo* initCinfo();
00124 private:
00125 double volume_;
00126 const ChemCompt* parent_;
00127 };
00128
00129 #endif // _MESH_ENTRY_H