PsdMesh Class Reference

#include <PsdMesh.h>

Inheritance diagram for PsdMesh:
Inheritance graph
[legend]
Collaboration diagram for PsdMesh:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 PsdMesh ()
 PsdMesh (const PsdMesh &other)
 ~PsdMesh ()
void updateCoords ()
unsigned int parent (unsigned int index) const
double getThickness () const
void setThickness (double v)
vector< unsigned int > getNeuronVoxel () const
vector< IdgetElecComptMap () const
vector< unsigned int > getStartVoxelInCompt () const
 Returns index of first voxel mapping to elec compt.
vector< unsigned int > getEndVoxelInCompt () const
 Returns index of end voxel mapping to elec compt, just first+1.
unsigned int getMeshType (unsigned int fid) const
 Virtual function to return MeshType of specified entry.
unsigned int getMeshDimensions (unsigned int fid) const
 Virtual function to return dimensions of specified entry.
double getMeshEntryVolume (unsigned int fid) const
 Virtual function to return volume of mesh Entry.
void setMeshEntryVolume (unsigned int fid, double volume)
 Virtual function to set volume of mesh Entry.
vector< double > getCoordinates (unsigned int fid) const
 Virtual function to return coords of mesh Entry.
vector< double > getDiffusionArea (unsigned int fid) const
 Virtual function to return diffusion X-section area.
vector< double > getDiffusionScaling (unsigned int fid) const
 Virtual function to return scale factor for diffusion. 1 here.
double extendedMeshEntryVolume (unsigned int fid) const
 Vol of all mesh Entries including abutting diff-coupled voxels.
unsigned int innerGetNumEntries () const
void innerSetNumEntries (unsigned int n)
 Inherited virtual func.
unsigned int innerGetDimensions () const
 Returns # of dimensions, always 3 here. Inherited pure virt func.
vector< unsigned int > getParentVoxel () const
const vector< double > & vGetVoxelVolume () const
 Virtual func so that derived classes can pass voxel volume back.
const vector< double > & vGetVoxelMidpoint () const
 Virtual func so that derived classes can return voxel midpoint.
const vector< double > & getVoxelArea () const
const vector< double > & getVoxelLength () const
double vGetEntireVolume () const
 Inherited virtual func.
bool vSetVolumeNotRates (double volume)
 Inherited virtual func.
void innerBuildDefaultMesh (const Eref &e, double volume, unsigned int numEntries)
 Virtual func to make a mesh with specified Volume and numEntries.
void innerHandleRequestMeshStats (const Eref &e, const SrcFinfo2< unsigned int, vector< double > > *meshStatsFinfo)
void innerHandleNodeInfo (const Eref &e, unsigned int numNodes, unsigned int numThreads)
void handlePsdList (const Eref &e, vector< double > params, vector< Id > elecCompts, vector< unsigned int > parentVoxel)
void transmitChange (const Eref &e)
void buildStencil ()
void matchMeshEntries (const ChemCompt *other, vector< VoxelJunction > &ret) const
void matchNeuroMeshEntries (const ChemCompt *other, vector< VoxelJunction > &ret) const
void matchCubeMeshEntries (const ChemCompt *other, vector< VoxelJunction > &ret) const
void matchSpineMeshEntries (const ChemCompt *other, vector< VoxelJunction > &ret) const
double nearest (double x, double y, double z, unsigned int &index) const
void indexToSpace (unsigned int index, double &x, double &y, double &z) const

Static Public Member Functions

static const CinfoinitCinfo ()

Detailed Description

The PsdMesh sets up the diffusion geometries for the PSD. It has to work in two contexts: first, as a PSD sitting on a spine head. Second, as a PSD sitting directly on the dendrite. In either case it is treated as a surface disc, not as a volume. On the dendrite this is a little strange conceptually (flat disc on round cylinder) but will do for now. Later can fine-tune the cap geometry.

In either case, the PsdMesh is filled by a message that contains information about the matching voxel index (either on spineMesh or NeuroMesh), the coordinates, the radial vector, and the diameter. The PsdMesh does not have any internal diffusion, and it expects to pass only N to the parent dendrite or spine.


Constructor & Destructor Documentation

PsdMesh::PsdMesh (  ) 
PsdMesh::PsdMesh ( const PsdMesh other  ) 
PsdMesh::~PsdMesh (  ) 

Member Function Documentation

void PsdMesh::buildStencil (  ) 

References MeshCompt::innerResetStencil(), and MeshCompt::setStencilSize().

Referenced by updateCoords().

Here is the call graph for this function:

double PsdMesh::extendedMeshEntryVolume ( unsigned int  fid  )  const [virtual]

Vol of all mesh Entries including abutting diff-coupled voxels.

Virtual function to return volume of mesh Entry, including for diffusively coupled voxels from other solvers.

Reimplemented from MeshCompt.

References getMeshEntryVolume().

Here is the call graph for this function:

vector< double > PsdMesh::getCoordinates ( unsigned int  fid  )  const [virtual]

Virtual function to return coords of mesh Entry.

Virtual function to return coords of mesh Entry. For PsdMesh, coords are x1y1z1 x2y2z2 dia

Implements ChemCompt.

vector< double > PsdMesh::getDiffusionArea ( unsigned int  fid  )  const [virtual]

Virtual function to return diffusion X-section area.

Virtual function to return diffusion X-section area for each neighbor.

Implements ChemCompt.

vector< double > PsdMesh::getDiffusionScaling ( unsigned int  fid  )  const [virtual]

Virtual function to return scale factor for diffusion. 1 here.

Virtual function to return scale factor for diffusion. I think all dendite tips need to return just one entry of 1.

Implements ChemCompt.

vector< Id > PsdMesh::getElecComptMap (  )  const

Referenced by initCinfo().

vector< unsigned int > PsdMesh::getEndVoxelInCompt (  )  const

Returns index of end voxel mapping to elec compt, just first+1.

Referenced by initCinfo().

unsigned int PsdMesh::getMeshDimensions ( unsigned int  fid  )  const [virtual]

Virtual function to return dimensions of specified entry.

Implements ChemCompt.

double PsdMesh::getMeshEntryVolume ( unsigned int  fid  )  const [virtual]

Virtual function to return volume of mesh Entry.

Implements ChemCompt.

Referenced by extendedMeshEntryVolume().

unsigned int PsdMesh::getMeshType ( unsigned int  fid  )  const [virtual]

Virtual function to return MeshType of specified entry.

Implements ChemCompt.

References DISK.

vector< unsigned int > PsdMesh::getNeuronVoxel (  )  const

Returns index of voxel on NeuroMesh to which this spine is connected. This isn't such a great function, as it only works if the spine is sitting directly on the NeuroMesh. Otherwise it returns the vector of voxels of parent spine heads, which isn't what the name indicates.

Referenced by initCinfo().

vector< unsigned int > PsdMesh::getParentVoxel (  )  const [virtual]

This function returns the diffusively connected parent voxel within the current (psd) mesh. Since each spine is treated as an independed voxel, there is no such voxel, so we return -1U for each psd. Note that there is a separate function that returns the parentVoxel referred to the NeuroMesh that this spine/psd sits on.

Implements MeshCompt.

vector< unsigned int > PsdMesh::getStartVoxelInCompt (  )  const

Returns index of first voxel mapping to elec compt.

Referenced by initCinfo().

double PsdMesh::getThickness (  )  const

An assumed thickness for PSD. The volume is computed as the PSD area passed in to each PSD, times this value. Defaults to 50 nanometres. For reference, membranes are 5 nm.

Referenced by initCinfo().

const vector< double > & PsdMesh::getVoxelArea (  )  const [virtual]

Implements MeshCompt.

const vector< double > & PsdMesh::getVoxelLength (  )  const [virtual]

Implements MeshCompt.

void PsdMesh::handlePsdList ( const Eref e,
vector< double >  params,
vector< Id elecCompts,
vector< unsigned int >  parentVoxel 
)

Referenced by initCinfo().

void PsdMesh::indexToSpace ( unsigned int  index,
double &  x,
double &  y,
double &  z 
) const [virtual]

Converts specified index to xyz coords of middle of voxel Values out of range return original xyz

Implements ChemCompt.

References innerGetNumEntries().

Here is the call graph for this function:

const Cinfo * PsdMesh::initCinfo (  )  [static]
void PsdMesh::innerBuildDefaultMesh ( const Eref e,
double  volume,
unsigned int  numEntries 
) [virtual]

Virtual func to make a mesh with specified Volume and numEntries.

Not permitted

Implements ChemCompt.

unsigned int PsdMesh::innerGetDimensions (  )  const [virtual]

Returns # of dimensions, always 3 here. Inherited pure virt func.

Implements ChemCompt.

unsigned int PsdMesh::innerGetNumEntries (  )  const [virtual]

Inherited virtual func. Returns number of MeshEntry in array

Implements ChemCompt.

Referenced by indexToSpace().

void PsdMesh::innerHandleNodeInfo ( const Eref e,
unsigned int  numNodes,
unsigned int  numThreads 
) [virtual]

Implements ChemCompt.

void PsdMesh::innerHandleRequestMeshStats ( const Eref e,
const SrcFinfo2< unsigned int, vector< double > > *  meshStatsFinfo 
)
void PsdMesh::innerSetNumEntries ( unsigned int  n  )  [virtual]

Inherited virtual func.

Inherited virtual func. Assigns number of MeshEntries. Doesn't do anything, we have to set psd # from geometry.

Implements ChemCompt.

void PsdMesh::matchCubeMeshEntries ( const ChemCompt other,
vector< VoxelJunction > &  ret 
) const
void PsdMesh::matchMeshEntries ( const ChemCompt other,
vector< VoxelJunction > &  ret 
) const
void PsdMesh::matchNeuroMeshEntries ( const ChemCompt other,
vector< VoxelJunction > &  ret 
) const
void PsdMesh::matchSpineMeshEntries ( const ChemCompt other,
vector< VoxelJunction > &  ret 
) const
double PsdMesh::nearest ( double  x,
double  y,
double  z,
unsigned int &  index 
) const [virtual]

This works a little different from other subclass versions of the function. It finds the index of the mesh entry whose centre is closest to the specified coords, and returns the distance to the centre. Doesn't worry about whether this distance is inside or outside cell.

Implements ChemCompt.

References a, d, and Vec::distance().

Here is the call graph for this function:

unsigned int PsdMesh::parent ( unsigned int  index  )  const

Return voxel# on parent compartment on spine or dendrite. For now PSD is always on spine, so it just returns the index.

void PsdMesh::setMeshEntryVolume ( unsigned int  fid,
double  volume 
) [virtual]

Virtual function to set volume of mesh Entry.

Virtual function to assign volume of mesh Entry. Thickness not touched.

Reimplemented from ChemCompt.

References PI.

void PsdMesh::setThickness ( double  v  ) 

Referenced by initCinfo().

void PsdMesh::transmitChange ( const Eref e  ) 
void PsdMesh::updateCoords (  ) 

Recomputes all local coordinate and meshing data following a change in any of the coord parameters

This assumes that lambda is the quantity to preserve, over numEntries. So when the compartment changes volume, numEntries changes too. Assumes that the soma node is at index 0.

References buildStencil().

Here is the call graph for this function:

double PsdMesh::vGetEntireVolume (  )  const [virtual]

Inherited virtual func.

Implements ChemCompt.

Referenced by vSetVolumeNotRates().

const vector< double > & PsdMesh::vGetVoxelMidpoint (  )  const [virtual]

Virtual func so that derived classes can return voxel midpoint.

Implements ChemCompt.

const vector< double > & PsdMesh::vGetVoxelVolume (  )  const [virtual]

Virtual func so that derived classes can pass voxel volume back.

Implements ChemCompt.

bool PsdMesh::vSetVolumeNotRates ( double  volume  )  [virtual]

Inherited virtual func.

Implements ChemCompt.

References vGetEntireVolume().

Here is the call graph for this function:


The documentation for this class was generated from the following files:

Generated on 1 Jul 2015 for MOOSE by  doxygen 1.6.1