BioDynaMo  v1.05.119-a4ff3934
neurite_element.h
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------
2 //
3 // Copyright (C) 2021 CERN & University of Surrey for the benefit of the
4 // BioDynaMo collaboration. All Rights Reserved.
5 //
6 // Licensed under the Apache License, Version 2.0 (the "License");
7 // you may not use this file except in compliance with the License.
8 //
9 // See the LICENSE file distributed with this work for details.
10 // See the NOTICE file distributed with this work for additional information
11 // regarding copyright ownership.
12 //
13 // -----------------------------------------------------------------------------
14 
15 #ifndef NEUROSCIENCE_NEURITE_ELEMENT_H_
16 #define NEUROSCIENCE_NEURITE_ELEMENT_H_
17 
18 #include <set>
19 #include <string>
20 #include <unordered_map>
21 #include <vector>
22 
23 #include "core/agent/agent.h"
24 #include "core/interaction_force.h"
25 #include "core/scheduler.h"
26 #include "core/shape.h"
27 #include "core/util/log.h"
28 #include "core/util/math.h"
29 #include "core/util/random.h"
37 #include "neuroscience/param.h"
38 
39 namespace bdm {
40 namespace neuroscience {
41 
56 class NeuriteElement : public Agent, public NeuronOrNeurite {
58 
59  public:
61 
62  void Initialize(const NewAgentEvent& event) override;
63 
64  void Update(const NewAgentEvent& event) override;
65 
66  const AgentUid& GetUid() const override { return Base::GetUid(); }
67 
68  Spinlock* GetLock() override { return Base::GetLock(); }
69 
70  void CriticalRegion(std::vector<AgentPointer<>>* aptrs) override;
71 
72  Shape GetShape() const override { return Shape::kCylinder; }
73 
76  std::set<std::string> GetRequiredVisDataMembers() const override;
77 
78  void SetDiameter(real_t diameter) override;
79 
80  void SetDensity(real_t density);
81 
82  const Real3& GetPosition() const override { return position_; }
83 
84  void SetPosition(const Real3& position) override;
85 
86  void UpdatePosition();
87 
89  const Real3& GetMassLocation() const { return mass_location_; }
90 
91  void SetMassLocation(const Real3& mass_location);
92 
93  real_t GetAdherence() const { return adherence_; }
94 
95  void SetAdherence(real_t adherence);
96 
97  const Real3& GetXAxis() const { return x_axis_; }
98  const Real3& GetYAxis() const { return y_axis_; }
99  const Real3& GetZAxis() const { return z_axis_; }
100 
101  real_t GetVolume() const { return volume_; }
102 
103  real_t GetDiameter() const override { return diameter_; }
104 
105  real_t GetDensity() const { return density_; }
106 
107  real_t GetMass() const { return density_ * volume_; }
108 
113  Real3 OriginOf(const AgentUid& daughter_uid) const override;
114 
117  StructureIdentifierSWC GetIdentifierSWC() const override;
118 
119  // TODO(neurites) arrange in order end
120 
135  void RetractTerminalEnd(real_t speed);
136 
145  void ElongateTerminalEnd(real_t speed, const Real3& direction);
146 
149  bool BranchPermitted() const;
150 
154  NeuriteElement* Branch(real_t new_branch_diameter, const Real3& direction,
155  real_t length = 1.0);
156 
161  NeuriteElement* Branch(const Real3& direction);
162 
167  NeuriteElement* Branch(real_t diameter);
168 
175 
179  bool BifurcationPermitted() const;
183  std::array<NeuriteElement*, 2> Bifurcate(real_t length, real_t diameter_1,
184  real_t diameter_2,
185  const Real3& direction_1,
186  const Real3& direction_2);
187 
191  std::array<NeuriteElement*, 2> Bifurcate(real_t diameter_1, real_t diameter_2,
192  const Real3& direction_1,
193  const Real3& direction_2);
194 
198  std::array<NeuriteElement*, 2> Bifurcate(const Real3& direction_1,
199  const Real3& direction_2);
200 
204  std::array<NeuriteElement*, 2> Bifurcate();
205 
206  // ***************************************************************************
207  // METHODS FOR NEURON TREE STRUCTURE *
208  // ***************************************************************************
209 
210  // TODO(neurites) documentation
211  void RemoveDaughter(const AgentPointer<NeuriteElement>& daughter) override;
212 
213  // TODO(neurites) add documentation
214  void UpdateRelative(const NeuronOrNeurite& old_relative,
215  const NeuronOrNeurite& new_relative) override;
216 
221 
222  // ***************************************************************************
223  // DISCRETIZATION , SPATIAL NODE, CELL ELEMENT
224  // ***************************************************************************
225 
231  void RunDiscretization() override;
232 
233  // ***************************************************************************
234  // ELONGATION, RETRACTION, BRANCHING
235  // ***************************************************************************
236 
244  void MovePointMass(real_t speed, const Real3& direction);
245 
249  void ChangeVolume(real_t speed);
252  void ChangeDiameter(real_t speed);
253 
254  struct MechanicalForcesFunctor : public Functor<void, Agent*, real_t> {
262 
264  NeuriteElement* neurite,
268  uint64_t& non_zero_neighbor_force)
269  : force(force),
270  ne(neurite),
276 
277  void operator()(Agent* neighbor, real_t squared_distance) override;
278  };
279 
280  // ***************************************************************************
281  // Physics
282  // ***************************************************************************
283 
285  real_t squared_radius, real_t dt) override;
286 
287  // TODO(neurites) documentation
288  void ApplyDisplacement(const Real3& displacement) override;
289 
297  void UpdateDiameter();
299  void UpdateVolume();
300 
301  // ***************************************************************************
302  // Coordinates transform
303  // ***************************************************************************
304 
329 
335  Real3 TransformCoordinatesGlobalToLocal(const Real3& position) const;
336 
342  Real3 TransformCoordinatesLocalToGlobal(const Real3& position) const;
343 
348  Real3 TransformCoordinatesLocalToPolar(const Real3& position) const;
349 
354  Real3 TransformCoordinatesPolarToLocal(const Real3& position) const;
355 
358  const std::array<real_t, 2>& position) const;
359 
361  Real3 TransformCoordinatesGlobalToPolar(const Real3& position) const;
362 
363  // ***************************************************************************
364  // GETTERS & SETTERS
365  // ***************************************************************************
366 
367  bool IsAxon() const { return is_axon_; }
368 
369  void SetAxon(bool is_axon) { is_axon_ = is_axon; }
370 
372 
374 
376  mother_ = mother;
377  }
378 
382 
383  void SetDaughterLeft(const AgentPointer<NeuriteElement>& daughter);
384 
389 
390  void SetDaughterRight(const AgentPointer<NeuriteElement>& daughter);
391 
392  int GetBranchOrder() const { return branch_order_; }
393 
394  void SetBranchOrder(int branch_order) { branch_order_ = branch_order; }
395 
397 
399  void SetActualLength(real_t actual_length);
400 
402 
403  void SetRestingLength(real_t resting_length);
404 
405  const Real3& GetSpringAxis() const { return spring_axis_; }
406 
407  void SetSpringAxis(const Real3& axis);
408 
410 
411  void SetSpringConstant(real_t spring_constant);
412 
413  real_t GetTension() const { return tension_; }
414 
415  void SetTension(real_t tension);
416 
421 
424  bool IsTerminal() const { return daughter_left_ == nullptr; }
425 
430 
432  const Real3& DistalEnd() const { return mass_location_; }
433 
440 
441  real_t GetLength() const { return actual_length_; }
442 
444  const Real3& GetAxis() const;
445 
451  void UpdateDependentPhysicalVariables() override;
452 
453  friend std::ostream& operator<<(std::ostream& str, const NeuriteElement& n);
454 
455  protected:
456  void Copy(const NeuriteElement& rhs);
457 
458  private:
459  // TODO(lukas) data members same as in cell -> resolve once ROOT-9321 has been
460  // resolved
463  Real3 mass_location_ = {{0.0, 0.0, 0.0}};
464 
466  Real3 position_ = {{0.0, 0.0, 0.0}};
467 
476  Real3 x_axis_ = {{1.0, 0.0, 0.0}};
478  Real3 y_axis_ = {{0.0, 1.0, 0.0}};
480  Real3 z_axis_ = {{0.0, 0.0, 1.0}};
481 
482  bool is_axon_ = false;
483 
487 
494 
497  int branch_order_ = 0;
498 
501 
505  Real3 spring_axis_ = {{0, 0, 0}};
506 
510 
514 
518 
522 
524  bool has_neurite_neighbor_ = false;
525 
529  NeuriteElement* SplitNeuriteElement(real_t distal_portion = 0.5);
530 
534 
539  const Real3& direction);
540 
542  void InitializeNewNeuriteExtension(NeuronSoma* soma, real_t diameter,
543  real_t phi, real_t theta);
544 
547  real_t diameter, const Real3& direction);
548 
553  void InitializeSplitOrBranching(NeuriteElement* other, real_t distal_portion);
554 
559  real_t diameter,
560  const Real3& direction);
561 };
562 
563 } // namespace neuroscience
564 } // namespace bdm
565 
566 #endif // NEUROSCIENCE_NEURITE_ELEMENT_H_
bdm::NewAgentEvent
Definition: new_agent_event.h:61
shape.h
bdm::neuroscience::NeuriteElement::GetSpringAxis
const Real3 & GetSpringAxis() const
Definition: neurite_element.h:405
bdm::Shape
Shape
Definition: shape.h:20
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::has_neurite_neighbor
bool & has_neurite_neighbor
Definition: neurite_element.h:260
bdm::neuroscience::NeuriteElement::TransformCoordinatesPolarToLocal
Real3 TransformCoordinatesPolarToLocal(const Real3 &position) const
Definition: neurite_element.cc:705
bdm::neuroscience::NeuriteElement::mother_
AgentPointer< NeuronOrNeurite > mother_
Definition: neurite_element.h:486
bdm::neuroscience::NeuriteElement::DistalEnd
const Real3 & DistalEnd() const
Returns the position of the distal end == position_.
Definition: neurite_element.h:432
bdm::neuroscience::NeuriteElement::SetMother
void SetMother(const AgentPointer< NeuronOrNeurite > &mother)
Definition: neurite_element.h:375
bdm::neuroscience::NeuriteElement::ApplyDisplacement
void ApplyDisplacement(const Real3 &displacement) override
Definition: neurite_element.cc:624
bdm::neuroscience::NeuriteElement::Update
void Update(const NewAgentEvent &event) override
Definition: neurite_element.cc:77
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::force_from_neighbors
Real3 & force_from_neighbors
Definition: neurite_element.h:257
bdm::neuroscience::NeuriteElement::UpdateDiameter
void UpdateDiameter()
Recomputes diameter after volume has changed.
Definition: neurite_element.cc:669
bdm::neuroscience::NeuriteElement::InitializeSideExtensionOrBranching
void InitializeSideExtensionOrBranching(NeuriteElement *mother, real_t length, real_t diameter, const Real3 &direction)
Definition: neurite_element.cc:1016
bdm::neuroscience::NeuriteElement::GetTension
real_t GetTension() const
Definition: neurite_element.h:413
bdm::neuroscience::NeuriteElement::ProximalEnd
Real3 ProximalEnd() const
Definition: neurite_element.h:429
bdm::neuroscience::NeuriteElement::TransformCoordinatesGlobalToPolar
Real3 TransformCoordinatesGlobalToPolar(const Real3 &position) const
G -> L : G -> L, then L -> P.
Definition: neurite_element.cc:722
bdm::neuroscience::NeuriteElement::RemoveDaughter
void RemoveDaughter(const AgentPointer< NeuriteElement > &daughter) override
Definition: neurite_element.cc:336
bdm::neuroscience::NeuriteElement::GetXAxis
const Real3 & GetXAxis() const
Definition: neurite_element.h:97
bdm
Definition: agent.cc:39
bdm::neuroscience::NeuriteElement::GetRestingLength
real_t GetRestingLength() const
Definition: neurite_element.h:401
bdm::neuroscience::NeuriteElement::Initialize
void Initialize(const NewAgentEvent &event) override
Definition: neurite_element.cc:34
bdm::neuroscience::NeuriteElement::SetDensity
void SetDensity(real_t density)
Definition: neurite_element.cc:146
bdm::InteractionForce
Definition: interaction_force.h:26
bdm::AgentPointer
Definition: agent_pointer.h:58
bdm::neuroscience::NeuriteElement::SetRestingLengthForDesiredTension
void SetRestingLengthForDesiredTension(real_t tension)
Definition: neurite_element.cc:443
bdm::neuroscience::NeuriteElement::diameter_
real_t diameter_
NB: Use setter and don't assign values directly.
Definition: neurite_element.h:470
bdm::neuroscience::NeuriteElement::GetIdentifierSWC
StructureIdentifierSWC GetIdentifierSWC() const override
Definition: neurite_element.cc:179
bdm::neuroscience::NeuriteElement::RetractTerminalEnd
void RetractTerminalEnd(real_t speed)
Definition: neurite_element.cc:187
bdm::neuroscience::NeuriteElement::BranchPermitted
bool BranchPermitted() const
Definition: neurite_element.cc:240
bdm::neuroscience::NeuriteElement::UpdatePosition
void UpdatePosition()
Definition: neurite_element.cc:158
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::ne
NeuriteElement * ne
Definition: neurite_element.h:256
bdm::neuroscience::NeuriteElement::UpdateRelative
void UpdateRelative(const NeuronOrNeurite &old_relative, const NeuronOrNeurite &new_relative) override
Definition: neurite_element.cc:353
bdm::neuroscience::NeuriteElement::Branch
NeuriteElement * Branch()
Create a branch for this neurite element.
Definition: neurite_element.cc:267
bdm::neuroscience::NeuriteElement::SetSpringConstant
void SetSpringConstant(real_t spring_constant)
Definition: neurite_element.cc:762
bdm::neuroscience::NeuriteElement::GetLock
Spinlock * GetLock() override
Definition: neurite_element.h:68
bdm::real_t
double real_t
Definition: real_t.h:21
bdm::neuroscience::NeuriteElement::GetLength
real_t GetLength() const
Definition: neurite_element.h:441
bdm::neuroscience::NeuriteElement::CalculateDisplacement
Real3 CalculateDisplacement(const InteractionForce *force, real_t squared_radius, real_t dt) override
Definition: neurite_element.cc:533
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor
Definition: neurite_element.h:254
bdm::neuroscience::NeuriteElement::GetAxis
const Real3 & GetAxis() const
Returns the axis direction of a neurite element.
Definition: neurite_element.cc:789
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::MechanicalForcesFunctor
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)
Definition: neurite_element.h:263
bdm::neuroscience::NeuriteElement::y_axis_
Real3 y_axis_
Second axis of the local coordinate system.
Definition: neurite_element.h:478
bdm::neuroscience::NeuriteElement::adherence_
real_t adherence_
NB: Use setter and don't assign values directly.
Definition: neurite_element.h:474
scheduler.h
neuron_or_neurite.h
neuron_soma.h
bdm::neuroscience::NeuriteElement::RunDiscretization
void RunDiscretization() override
Definition: neurite_element.cc:387
bdm::neuroscience::NeuriteElement::SetRestingLength
void SetRestingLength(real_t resting_length)
Definition: neurite_element.cc:753
new_neurite_extension_event.h
bdm::neuroscience::NeuriteElement::ChangeDiameter
void ChangeDiameter(real_t speed)
Definition: neurite_element.cc:467
bdm::neuroscience::NeuronSoma
Definition: neuron_soma.h:30
bdm::neuroscience::NeuriteElement::GetActualLength
real_t GetActualLength() const
Definition: neurite_element.h:396
bdm::neuroscience::NeuriteElement::spring_axis_
Real3 spring_axis_
Definition: neurite_element.h:505
bdm::neuroscience::NeuriteElement::ExtendSideNeuriteElement
NeuriteElement * ExtendSideNeuriteElement(real_t length, real_t diameter, const Real3 &direction)
Extend a side neurite element and assign it to daughter right.
Definition: neurite_element.cc:903
math.h
bdm::neuroscience::NeuriteElement::IsAxon
bool IsAxon() const
Definition: neurite_element.h:367
neurite_branching_event.h
bdm::neuroscience::NeuriteElement::OriginOf
Real3 OriginOf(const AgentUid &daughter_uid) const override
Definition: neurite_element.cc:175
random.h
bdm::neuroscience::NeuriteElement::IsTerminal
bool IsTerminal() const
Definition: neurite_element.h:424
bdm::neuroscience::NeuriteElement::TransformCoordinatesGlobalToLocal
Real3 TransformCoordinatesGlobalToLocal(const Real3 &position) const
Definition: neurite_element.cc:681
bdm::neuroscience::NeuriteElement::SetTension
void SetTension(real_t tension)
Definition: neurite_element.cc:766
bdm::neuroscience::NeuriteElement::NeuriteElement
NeuriteElement()
Definition: neurite_element.cc:21
bdm::neuroscience::NeuriteElement::Bifurcate
std::array< NeuriteElement *, 2 > Bifurcate()
Growth cone bifurcation.
Definition: neurite_element.cc:317
bdm::neuroscience::NeuriteElement::TransformCoordinatesLocalToGlobal
Real3 TransformCoordinatesLocalToGlobal(const Real3 &position) const
Definition: neurite_element.cc:687
bdm::neuroscience::NeuriteElement::TransformCoordinatesPolarToGlobal
Real3 TransformCoordinatesPolarToGlobal(const std::array< real_t, 2 > &position) const
P -> G : P -> L, then L -> G.
Definition: neurite_element.cc:711
bdm::Agent
Contains code required by all agents.
Definition: agent.h:79
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::operator()
void operator()(Agent *neighbor, real_t squared_distance) override
Definition: neurite_element.cc:475
bdm::neuroscience::NeuriteElement::spring_constant_
real_t spring_constant_
Definition: neurite_element.h:517
bdm::neuroscience::NeuriteElement::resting_length_
real_t resting_length_
Definition: neurite_element.h:521
bdm::neuroscience::NeuriteElement::UpdateDependentPhysicalVariables
void UpdateDependentPhysicalVariables() override
Definition: neurite_element.cc:794
bdm::neuroscience::NeuriteElement::z_axis_
Real3 z_axis_
Third axis of the local coordinate system.
Definition: neurite_element.h:480
bdm::neuroscience::NeuriteElement::GetPosition
const Real3 & GetPosition() const override
Definition: neurite_element.h:82
bdm::neuroscience::NeuriteElement::force_to_transmit_to_proximal_mass_
Real3 force_to_transmit_to_proximal_mass_
The part of the inter-object force transmitted to the mother (parent node)
Definition: neurite_element.h:500
bdm::Functor
Definition: functor.h:24
bdm::neuroscience::NeuriteElement::GetMass
real_t GetMass() const
Definition: neurite_element.h:107
bdm::neuroscience::NeuriteElement::GetRequiredVisDataMembers
std::set< std::string > GetRequiredVisDataMembers() const override
Definition: neurite_element.cc:134
bdm::neuroscience::NeuriteElement::SetAdherence
void SetAdherence(real_t adherence)
Definition: neurite_element.cc:168
bdm::neuroscience::NeuriteElement::GetUid
const AgentUid & GetUid() const override
Definition: neurite_element.h:66
bdm::neuroscience::NeuriteElement::GetAdherence
real_t GetAdherence() const
Definition: neurite_element.h:93
bdm::neuroscience::NeuriteElement::SplitNeuriteElement
NeuriteElement * SplitNeuriteElement(real_t distal_portion=0.5)
Split this neurite element into two segments.
Definition: neurite_element.cc:864
bdm::neuroscience::NeuronOrNeurite
Definition: neuron_or_neurite.h:42
bdm::Spinlock
Definition: spinlock.h:22
bdm::neuroscience::NeuriteElement::GetDaughterRight
const AgentPointer< NeuriteElement > & GetDaughterRight() const
Definition: neurite_element.cc:737
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::non_zero_neighbor_force
uint64_t & non_zero_neighbor_force
Definition: neurite_element.h:261
bdm::neuroscience::NeuriteElement::GetBranchOrder
int GetBranchOrder() const
Definition: neurite_element.h:392
bdm::neuroscience::NeuriteElement::mass_location_
Real3 mass_location_
Definition: neurite_element.h:463
bdm::neuroscience::NeuriteElement::GetVolume
real_t GetVolume() const
Definition: neurite_element.h:101
bdm::neuroscience::NeuriteElement::ChangeVolume
void ChangeVolume(real_t speed)
Definition: neurite_element.cc:454
bdm::neuroscience::NeuriteElement::GetZAxis
const Real3 & GetZAxis() const
Definition: neurite_element.h:99
bdm::neuroscience::NeuriteElement::CriticalRegion
void CriticalRegion(std::vector< AgentPointer<>> *aptrs) override
Definition: neurite_element.cc:122
bdm::neuroscience::NeuriteElement::position_
Real3 position_
position_ is the middle point of cylinder
Definition: neurite_element.h:466
bdm::neuroscience::NeuriteElement::GetMassLocation
const Real3 & GetMassLocation() const
return end of neurite element position
Definition: neurite_element.h:89
bdm::neuroscience::NeuriteElement::SetDaughterRight
void SetDaughterRight(const AgentPointer< NeuriteElement > &daughter)
Definition: neurite_element.cc:741
bdm::neuroscience::NeuriteElement::InitializeSplitOrBranching
void InitializeSplitOrBranching(NeuriteElement *other, real_t distal_portion)
Definition: neurite_element.cc:995
bdm::neuroscience::NeuriteElement::daughter_left_
AgentPointer< NeuriteElement > daughter_left_
Definition: neurite_element.h:490
bdm::neuroscience::StructureIdentifierSWC
StructureIdentifierSWC
Definition: neuron_or_neurite.h:32
bdm::neuroscience::NeuriteElement::UpdateVolume
void UpdateVolume()
Recomputes volume, after diameter has been changed.
Definition: neurite_element.cc:677
bdm::neuroscience::NeuriteElement::tension_
real_t tension_
Definition: neurite_element.h:513
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::force
const InteractionForce * force
Definition: neurite_element.h:255
param.h
bdm::neuroscience::NeuriteElement::ElongateTerminalEnd
void ElongateTerminalEnd(real_t speed, const Real3 &direction)
Definition: neurite_element.cc:233
agent.h
neurite_bifurcation_event.h
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::h_over_m
real_t & h_over_m
Definition: neurite_element.h:259
bdm::neuroscience::NeuriteElement::SetDaughterLeft
void SetDaughterLeft(const AgentPointer< NeuriteElement > &daughter)
Definition: neurite_element.cc:732
bdm::neuroscience::NeuriteElement::SetActualLength
void SetActualLength(real_t actual_length)
Should not be used, since the actual length depends on the geometry.
Definition: neurite_element.cc:746
bdm::neuroscience::NeuriteElement::GetDensity
real_t GetDensity() const
Definition: neurite_element.h:105
bdm::neuroscience::NeuriteElement::GetMother
AgentPointer< NeuronOrNeurite > & GetMother()
Definition: neurite_element.h:371
bdm::neuroscience::NeuriteElement::LengthToProximalBranchingPoint
real_t LengthToProximalBranchingPoint() const
Definition: neurite_element.cc:778
bdm::neuroscience::NeuriteElement::GetSpringConstant
real_t GetSpringConstant() const
Definition: neurite_element.h:409
log.h
bdm::neuroscience::NeuriteElement::daughter_right_
AgentPointer< NeuriteElement > daughter_right_
Definition: neurite_element.h:493
split_neurite_element_event.h
bdm::neuroscience::NeuriteElement::GetDiameter
real_t GetDiameter() const override
Definition: neurite_element.h:103
bdm::neuroscience::NeuriteElement::SetDiameter
void SetDiameter(real_t diameter) override
Definition: neurite_element.cc:138
bdm::neuroscience::NeuriteElement::density_
real_t density_
NB: Use setter and don't assign values directly.
Definition: neurite_element.h:472
bdm::neuroscience::NeuriteElement::x_axis_
Real3 x_axis_
First axis of the local coordinate system equal to cylinder axis.
Definition: neurite_element.h:476
bdm::neuroscience::NeuriteElement::volume_
real_t volume_
Definition: neurite_element.h:468
bdm::neuroscience::NeuriteElement::SetAxon
void SetAxon(bool is_axon)
Definition: neurite_element.h:369
bdm::AgentUid
Definition: agent_uid.h:25
bdm::neuroscience::NeuriteElement::GetShape
Shape GetShape() const override
Definition: neurite_element.h:72
bdm::neuroscience::NeuriteElement::InitializeNeuriteBifurcation
void InitializeNeuriteBifurcation(NeuriteElement *mother, real_t length, real_t diameter, const Real3 &direction)
TODO.
Definition: neurite_element.cc:954
bdm::neuroscience::NeuriteElement::UpdateLocalCoordinateAxis
void UpdateLocalCoordinateAxis()
Definition: neurite_element.cc:650
bdm::neuroscience::NeuriteElement::SetPosition
void SetPosition(const Real3 &position) override
Definition: neurite_element.cc:153
bdm::neuroscience::NeuriteElement::TransformCoordinatesLocalToPolar
Real3 TransformCoordinatesLocalToPolar(const Real3 &position) const
Definition: neurite_element.cc:699
bdm::neuroscience::NeuriteElement::BifurcationPermitted
bool BifurcationPermitted() const
Definition: neurite_element.cc:276
bdm::neuroscience::NeuriteElement::ForceTransmittedFromDaugtherToMother
Real3 ForceTransmittedFromDaugtherToMother(const NeuronOrNeurite &mother)
Definition: neurite_element.cc:369
bdm::neuroscience::NeuriteElement::BDM_AGENT_HEADER
BDM_AGENT_HEADER(NeuriteElement, Agent, 1)
bdm::neuroscience::NeuriteElement::InitializeNewNeuriteExtension
void InitializeNewNeuriteExtension(NeuronSoma *soma, real_t diameter, real_t phi, real_t theta)
TODO.
Definition: neurite_element.cc:915
bdm::neuroscience::NeuriteElement::SetMassLocation
void SetMassLocation(const Real3 &mass_location)
Definition: neurite_element.cc:163
bdm::neuroscience::NeuriteElement::branch_order_
int branch_order_
Definition: neurite_element.h:497
side_neurite_extension_event.h
bdm::neuroscience::NeuriteElement::GetYAxis
const Real3 & GetYAxis() const
Definition: neurite_element.h:98
bdm::neuroscience::NeuriteElement::MovePointMass
void MovePointMass(real_t speed, const Real3 &direction)
Definition: neurite_element.cc:418
bdm::neuroscience::NeuriteElement::actual_length_
real_t actual_length_
Definition: neurite_element.h:509
bdm::neuroscience::NeuriteElement::RemoveProximalNeuriteElement
void RemoveProximalNeuriteElement()
Definition: neurite_element.cc:870
bdm::MathArray< real_t, 3 >
bdm::kCylinder
@ kCylinder
Definition: shape.h:20
bdm::neuroscience::NeuriteElement::MechanicalForcesFunctor::force_on_my_mothers_point_mass
Real3 & force_on_my_mothers_point_mass
Definition: neurite_element.h:258
bdm::neuroscience::NeuriteElement::operator<<
friend std::ostream & operator<<(std::ostream &str, const NeuriteElement &n)
Definition: neurite_element.cc:809
bdm::neuroscience::NeuriteElement::is_axon_
bool is_axon_
Definition: neurite_element.h:482
bdm::neuroscience::NeuriteElement::Copy
void Copy(const NeuriteElement &rhs)
Definition: neurite_element.cc:849
bdm::neuroscience::NeuriteElement::SetSpringAxis
void SetSpringAxis(const Real3 &axis)
Definition: neurite_element.cc:757
interaction_force.h
bdm::neuroscience::NeuriteElement::GetMother
const AgentPointer< NeuronOrNeurite > & GetMother() const
Definition: neurite_element.h:373
bdm::neuroscience::NeuriteElement::GetUnitaryAxisDirectionVector
Real3 GetUnitaryAxisDirectionVector() const
Definition: neurite_element.cc:773
bdm::neuroscience::NeuriteElement::SetBranchOrder
void SetBranchOrder(int branch_order)
Definition: neurite_element.h:394
bdm::neuroscience::NeuriteElement::has_neurite_neighbor_
bool has_neurite_neighbor_
Helper variable needed in CalculateDisplacement.
Definition: neurite_element.h:524
bdm::neuroscience::NeuriteElement::GetDaughterLeft
const AgentPointer< NeuriteElement > & GetDaughterLeft() const
Definition: neurite_element.cc:728
bdm::neuroscience::NeuriteElement
Definition: neurite_element.h:56