MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
PsdMesh.h
Go to the documentation of this file.
1 /**********************************************************************
2 ** This program is part of 'MOOSE', the
3 ** Messaging Object Oriented Simulation Environment.
4 ** Copyright (C) 2013 Upinder S. Bhalla. and NCBS
5 ** It is made available under the terms of the
6 ** GNU Lesser General Public License version 2.1
7 ** See the file COPYING.LIB for the full notice.
8 **********************************************************************/
9 
10 #ifndef _PSD_MESH_H
11 #define _PSD_MESH_H
12 
27 class PsdMesh: public MeshCompt
28 {
29  public:
30  PsdMesh();
31  PsdMesh( const PsdMesh& other );
32  ~PsdMesh();
33 // PsdMesh& operator=( const PsdMesh& other );
35  // Utility func
37 
42  void updateCoords();
43 
46  unsigned int parent( unsigned int index ) const;
47 
49  // Field assignment stuff
51 
56  double getThickness() const;
57  void setThickness( double v );
58 
59  vector< unsigned int > getNeuronVoxel() const;
60  vector< Id > getElecComptMap() const;
61 
63  vector< unsigned int > getStartVoxelInCompt() const;
65  vector< unsigned int > getEndVoxelInCompt() const;
66 
68  // FieldElement assignment stuff for MeshEntries
70 
72  unsigned int getMeshType( unsigned int fid ) const;
74  unsigned int getMeshDimensions( unsigned int fid ) const;
76  double getMeshEntryVolume( unsigned int fid ) const;
78  void setMeshEntryVolume( unsigned int fid, double volume );
80  vector< double > getCoordinates( unsigned int fid ) const;
82  vector< double > getDiffusionArea( unsigned int fid ) const;
84  vector< double > getDiffusionScaling( unsigned int fid ) const;
86  double extendedMeshEntryVolume( unsigned int fid ) const;
87 
89 
92  unsigned int innerGetNumEntries() const;
94  void innerSetNumEntries( unsigned int n );
95 
97  unsigned int innerGetDimensions() const;
98 
99  vector< unsigned int > getParentVoxel() const;
100  const vector< double >& vGetVoxelVolume() const;
101  const vector< double >& vGetVoxelMidpoint() const;
102  const vector< double >& getVoxelArea() const;
103  const vector< double >& getVoxelLength() const;
104 
106  double vGetEntireVolume() const;
107 
109  bool vSetVolumeNotRates( double volume );
111  // Dest funcs
113 
115  void innerBuildDefaultMesh( const Eref& e,
116  double volume, unsigned int numEntries );
117 
119  const Eref& e,
120  const SrcFinfo2< unsigned int, vector< double > >*
121  meshStatsFinfo
122  );
123 
124  void innerHandleNodeInfo(
125  const Eref& e,
126  unsigned int numNodes, unsigned int numThreads );
127 
128  void handlePsdList(
129  const Eref& e,
130  vector< double > params,
131  vector< Id > elecCompts,
132  vector< unsigned int > parentVoxel );
133 
134  void transmitChange( const Eref& e );
135 
136  void buildStencil();
137 
139  // inherited virtual funcs for Boundary
141 
142  void matchMeshEntries( const ChemCompt* other,
143  vector< VoxelJunction > & ret ) const;
144 
145  void matchNeuroMeshEntries( const ChemCompt* other,
146  vector< VoxelJunction > & ret ) const;
147 
148  void matchCubeMeshEntries( const ChemCompt* other,
149  vector< VoxelJunction > & ret ) const;
150 
151  void matchSpineMeshEntries( const ChemCompt* other,
152  vector< VoxelJunction > & ret ) const;
153 
162  double nearest( double x, double y, double z,
163  unsigned int& index ) const;
164 
165  void indexToSpace( unsigned int index,
166  double& x, double& y, double& z ) const;
167 
169  static const Cinfo* initCinfo();
170 
171  private:
173  double thickness_;
174 
178  vector< CylBase > psd_;
179  vector< CylBase > pa_;
180  vector< double > parentDist_;
181  vector< unsigned int > parent_;
182  vector< Id > elecCompt_;
183 
190 
191  vector< double > vs_;
192  vector< double > area_;
193  vector< double > length_;
194 };
195 
196 
197 #endif // _PSD_MESH_H
vector< CylBase > psd_
Definition: PsdMesh.h:178
vector< unsigned int > getNeuronVoxel() const
Definition: PsdMesh.cpp:184
unsigned int getMeshDimensions(unsigned int fid) const
Virtual function to return dimensions of specified entry.
Definition: PsdMesh.cpp:303
vector< Id > elecCompt_
Parent voxel index.
Definition: PsdMesh.h:182
unsigned int parent(unsigned int index) const
Definition: PsdMesh.cpp:395
double getMeshEntryVolume(unsigned int fid) const
Virtual function to return volume of mesh Entry.
Definition: PsdMesh.cpp:309
PsdMesh()
Definition: PsdMesh.cpp:136
void matchNeuroMeshEntries(const ChemCompt *other, vector< VoxelJunction > &ret) const
Definition: PsdMesh.cpp:509
vector< unsigned int > getStartVoxelInCompt() const
Returns index of first voxel mapping to elec compt.
Definition: PsdMesh.cpp:195
vector< double > getDiffusionScaling(unsigned int fid) const
Virtual function to return scale factor for diffusion. 1 here.
Definition: PsdMesh.cpp:357
void buildStencil()
Definition: PsdMesh.cpp:433
vector< double > getCoordinates(unsigned int fid) const
Virtual function to return coords of mesh Entry.
Definition: PsdMesh.cpp:331
const int numEntries
Definition: proc.cpp:60
void transmitChange(const Eref &e)
double thickness_
Thickness of PSD.
Definition: PsdMesh.h:173
void setMeshEntryVolume(unsigned int fid, double volume)
Virtual function to set volume of mesh Entry.
Definition: PsdMesh.cpp:318
unsigned int innerGetDimensions() const
Returns # of dimensions, always 3 here. Inherited pure virt func.
Definition: PsdMesh.cpp:221
vector< double > area_
Vol.
Definition: PsdMesh.h:192
double getThickness() const
Definition: PsdMesh.cpp:169
vector< CylBase > pa_
Specified disk of psd.
Definition: PsdMesh.h:179
vector< double > parentDist_
Specifies direction of psd. Length ignored.
Definition: PsdMesh.h:180
vector< double > getDiffusionArea(unsigned int fid) const
Virtual function to return diffusion X-section area.
Definition: PsdMesh.cpp:345
const vector< double > & getVoxelArea() const
Definition: PsdMesh.cpp:578
double nearest(double x, double y, double z, unsigned int &index) const
Definition: PsdMesh.cpp:474
void innerSetNumEntries(unsigned int n)
Inherited virtual func.
Definition: PsdMesh.cpp:416
vector< unsigned int > getEndVoxelInCompt() const
Returns index of end voxel mapping to elec compt, just first+1.
Definition: PsdMesh.cpp:203
void innerHandleNodeInfo(const Eref &e, unsigned int numNodes, unsigned int numThreads)
Definition: PsdMesh.cpp:388
Definition: Eref.h:26
void innerBuildDefaultMesh(const Eref &e, double volume, unsigned int numEntries)
Virtual func to make a mesh with specified Volume and numEntries.
Definition: PsdMesh.cpp:424
void matchCubeMeshEntries(const ChemCompt *other, vector< VoxelJunction > &ret) const
Definition: PsdMesh.cpp:520
void matchSpineMeshEntries(const ChemCompt *other, vector< VoxelJunction > &ret) const
Definition: PsdMesh.cpp:493
double vGetEntireVolume() const
Inherited virtual func.
Definition: PsdMesh.cpp:588
double extendedMeshEntryVolume(unsigned int fid) const
Vol of all mesh Entries including abutting diff-coupled voxels.
Definition: PsdMesh.cpp:364
unsigned int innerGetNumEntries() const
Definition: PsdMesh.cpp:407
vector< double > vs_
Definition: PsdMesh.h:191
~PsdMesh()
Definition: PsdMesh.cpp:161
void matchMeshEntries(const ChemCompt *other, vector< VoxelJunction > &ret) const
Definition: PsdMesh.cpp:443
void updateCoords()
Definition: PsdMesh.cpp:216
static unsigned int numNodes
vector< unsigned int > parent_
Specifies diff distance to PSD.
Definition: PsdMesh.h:181
double surfaceGranularity_
Ids of elec compts mapped to each voxel.
Definition: PsdMesh.h:189
unsigned int getMeshType(unsigned int fid) const
Virtual function to return MeshType of specified entry.
Definition: PsdMesh.cpp:296
const vector< double > & vGetVoxelMidpoint() const
Virtual func so that derived classes can return voxel midpoint.
Definition: PsdMesh.cpp:561
vector< unsigned int > getParentVoxel() const
Definition: PsdMesh.cpp:542
static const Cinfo * initCinfo()
Definition: PsdMesh.cpp:28
void handlePsdList(const Eref &e, vector< double > params, vector< Id > elecCompts, vector< unsigned int > parentVoxel)
Definition: PsdMesh.cpp:227
bool vSetVolumeNotRates(double volume)
Inherited virtual func.
Definition: PsdMesh.cpp:597
const vector< double > & getVoxelLength() const
Definition: PsdMesh.cpp:583
vector< double > length_
area
Definition: PsdMesh.h:193
void innerHandleRequestMeshStats(const Eref &e, const SrcFinfo2< unsigned int, vector< double > > *meshStatsFinfo)
Definition: PsdMesh.cpp:381
void indexToSpace(unsigned int index, double &x, double &y, double &z) const
Definition: PsdMesh.cpp:464
Definition: Cinfo.h:18
const vector< double > & vGetVoxelVolume() const
Virtual func so that derived classes can pass voxel volume back.
Definition: PsdMesh.cpp:549
void setThickness(double v)
Definition: PsdMesh.cpp:173
vector< Id > getElecComptMap() const
Definition: PsdMesh.cpp:190