#include <PsdMesh.h>
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< Id > | getElecComptMap () 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 Cinfo * | initCinfo () |
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.
PsdMesh::PsdMesh | ( | ) |
PsdMesh::PsdMesh | ( | const PsdMesh & | other | ) |
PsdMesh::~PsdMesh | ( | ) |
void PsdMesh::buildStencil | ( | ) |
References MeshCompt::innerResetStencil(), and MeshCompt::setStencilSize().
Referenced by updateCoords().
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().
vector< double > PsdMesh::getCoordinates | ( | unsigned int | fid | ) | const [virtual] |
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] |
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().
const Cinfo * PsdMesh::initCinfo | ( | ) | [static] |
Reimplemented from ChemCompt.
References getElecComptMap(), getEndVoxelInCompt(), getNeuronVoxel(), getStartVoxelInCompt(), getThickness(), handlePsdList(), ChemCompt::initCinfo(), and setThickness().
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().
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] |
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().
double PsdMesh::vGetEntireVolume | ( | ) | const [virtual] |
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().