BioDynaMo
v1.05.120-25dc9790
|
Go to the documentation of this file.
15 #ifndef NEUROSCIENCE_NEURITE_ELEMENT_H_
16 #define NEUROSCIENCE_NEURITE_ELEMENT_H_
20 #include <unordered_map>
40 namespace neuroscience {
185 const Real3& direction_1,
186 const Real3& direction_2);
192 const Real3& direction_1,
193 const Real3& direction_2);
198 std::array<NeuriteElement*, 2>
Bifurcate(
const Real3& direction_1,
199 const Real3& direction_2);
204 std::array<NeuriteElement*, 2>
Bifurcate();
358 const std::array<real_t, 2>& position)
const;
539 const Real3& direction);
560 const Real3& direction);
566 #endif // NEUROSCIENCE_NEURITE_ELEMENT_H_
const Real3 & GetSpringAxis() const
bool & has_neurite_neighbor
Real3 TransformCoordinatesPolarToLocal(const Real3 &position) const
AgentPointer< NeuronOrNeurite > mother_
const Real3 & DistalEnd() const
Returns the position of the distal end == position_.
void SetMother(const AgentPointer< NeuronOrNeurite > &mother)
void ApplyDisplacement(const Real3 &displacement) override
void Update(const NewAgentEvent &event) override
Real3 & force_from_neighbors
void UpdateDiameter()
Recomputes diameter after volume has changed.
void InitializeSideExtensionOrBranching(NeuriteElement *mother, real_t length, real_t diameter, const Real3 &direction)
real_t GetTension() const
Real3 ProximalEnd() const
Real3 TransformCoordinatesGlobalToPolar(const Real3 &position) const
G -> L : G -> L, then L -> P.
void RemoveDaughter(const AgentPointer< NeuriteElement > &daughter) override
const Real3 & GetXAxis() const
real_t GetRestingLength() const
void Initialize(const NewAgentEvent &event) override
void SetDensity(real_t density)
void SetRestingLengthForDesiredTension(real_t tension)
real_t diameter_
NB: Use setter and don't assign values directly.
StructureIdentifierSWC GetIdentifierSWC() const override
void RetractTerminalEnd(real_t speed)
bool BranchPermitted() const
void UpdateRelative(const NeuronOrNeurite &old_relative, const NeuronOrNeurite &new_relative) override
NeuriteElement * Branch()
Create a branch for this neurite element.
void SetSpringConstant(real_t spring_constant)
Spinlock * GetLock() override
Real3 CalculateDisplacement(const InteractionForce *force, real_t squared_radius, real_t dt) override
const Real3 & GetAxis() const
Returns the axis direction of a neurite element.
MechanicalForcesFunctor(const InteractionForce *force, NeuriteElement *neurite, Real3 &force_from_neighbors, Real3 &force_on_my_mothers_point_mass, real_t &h_over_m, bool &has_neurite_neighbor, uint64_t &non_zero_neighbor_force)
Real3 y_axis_
Second axis of the local coordinate system.
real_t adherence_
NB: Use setter and don't assign values directly.
void RunDiscretization() override
void SetRestingLength(real_t resting_length)
void ChangeDiameter(real_t speed)
real_t GetActualLength() const
NeuriteElement * ExtendSideNeuriteElement(real_t length, real_t diameter, const Real3 &direction)
Extend a side neurite element and assign it to daughter right.
Real3 OriginOf(const AgentUid &daughter_uid) const override
Real3 TransformCoordinatesGlobalToLocal(const Real3 &position) const
void SetTension(real_t tension)
std::array< NeuriteElement *, 2 > Bifurcate()
Growth cone bifurcation.
Real3 TransformCoordinatesLocalToGlobal(const Real3 &position) const
Real3 TransformCoordinatesPolarToGlobal(const std::array< real_t, 2 > &position) const
P -> G : P -> L, then L -> G.
Contains code required by all agents.
void operator()(Agent *neighbor, real_t squared_distance) override
void UpdateDependentPhysicalVariables() override
Real3 z_axis_
Third axis of the local coordinate system.
const Real3 & GetPosition() const override
Real3 force_to_transmit_to_proximal_mass_
The part of the inter-object force transmitted to the mother (parent node)
std::set< std::string > GetRequiredVisDataMembers() const override
void SetAdherence(real_t adherence)
const AgentUid & GetUid() const override
real_t GetAdherence() const
NeuriteElement * SplitNeuriteElement(real_t distal_portion=0.5)
Split this neurite element into two segments.
const AgentPointer< NeuriteElement > & GetDaughterRight() const
uint64_t & non_zero_neighbor_force
int GetBranchOrder() const
void ChangeVolume(real_t speed)
const Real3 & GetZAxis() const
void CriticalRegion(std::vector< AgentPointer<>> *aptrs) override
Real3 position_
position_ is the middle point of cylinder
const Real3 & GetMassLocation() const
return end of neurite element position
void SetDaughterRight(const AgentPointer< NeuriteElement > &daughter)
void InitializeSplitOrBranching(NeuriteElement *other, real_t distal_portion)
AgentPointer< NeuriteElement > daughter_left_
void UpdateVolume()
Recomputes volume, after diameter has been changed.
const InteractionForce * force
void ElongateTerminalEnd(real_t speed, const Real3 &direction)
void SetDaughterLeft(const AgentPointer< NeuriteElement > &daughter)
void SetActualLength(real_t actual_length)
Should not be used, since the actual length depends on the geometry.
real_t GetDensity() const
AgentPointer< NeuronOrNeurite > & GetMother()
real_t LengthToProximalBranchingPoint() const
real_t GetSpringConstant() const
AgentPointer< NeuriteElement > daughter_right_
real_t GetDiameter() const override
void SetDiameter(real_t diameter) override
real_t density_
NB: Use setter and don't assign values directly.
Real3 x_axis_
First axis of the local coordinate system equal to cylinder axis.
void SetAxon(bool is_axon)
Shape GetShape() const override
void InitializeNeuriteBifurcation(NeuriteElement *mother, real_t length, real_t diameter, const Real3 &direction)
TODO.
void UpdateLocalCoordinateAxis()
void SetPosition(const Real3 &position) override
Real3 TransformCoordinatesLocalToPolar(const Real3 &position) const
bool BifurcationPermitted() const
Real3 ForceTransmittedFromDaugtherToMother(const NeuronOrNeurite &mother)
BDM_AGENT_HEADER(NeuriteElement, Agent, 1)
void InitializeNewNeuriteExtension(NeuronSoma *soma, real_t diameter, real_t phi, real_t theta)
TODO.
void SetMassLocation(const Real3 &mass_location)
const Real3 & GetYAxis() const
void MovePointMass(real_t speed, const Real3 &direction)
void RemoveProximalNeuriteElement()
Real3 & force_on_my_mothers_point_mass
friend std::ostream & operator<<(std::ostream &str, const NeuriteElement &n)
void Copy(const NeuriteElement &rhs)
void SetSpringAxis(const Real3 &axis)
const AgentPointer< NeuronOrNeurite > & GetMother() const
Real3 GetUnitaryAxisDirectionVector() const
void SetBranchOrder(int branch_order)
bool has_neurite_neighbor_
Helper variable needed in CalculateDisplacement.
const AgentPointer< NeuriteElement > & GetDaughterLeft() const