Public Member Functions | |
Shoot (uint plant_ID, int shoot_ID, int parent_shoot_ID, uint parent_node, uint parent_petiole_index, uint rank, const helios::vec3 &shoot_base_position, const AxisRotation &shoot_base_rotation, uint current_node_number, float internode_length_shoot_initial, ShootParameters &shoot_params, std::string shoot_type_label, PlantArchitecture *plant_architecture_ptr) | |
Constructor. | |
void | buildShootPhytomers (float internode_radius, float internode_length, float internode_length_scale_factor_fraction, float leaf_scale_factor_fraction, float radius_taper) |
Constructs and appends shoot phytomers to the shoot structure. | |
int | appendPhytomer (float internode_radius, float internode_length_max, float internode_length_scale_factor_fraction, float leaf_scale_factor_fraction, const PhytomerParameters &phytomer_parameters) |
Append a phytomer at the shoot apex. | |
std::string | sampleChildShootType () const |
Randomly sample the type of a child shoot based on the probabilities defined in the shoot parameters. | |
bool | sampleVegetativeBudBreak (uint node_index) const |
Randomly sample whether a vegetative bud should break into a new shoot. | |
bool | sampleVegetativeBudBreak_carb (uint node_index) const |
uint | sampleEpicormicShoot (float dt, std::vector< float > &epicormic_positions_fraction) const |
Randomly sample whether the shoot should produce an epicormic shoot (water sprout) over timestep. | |
void | terminateApicalBud () |
Terminates the apical bud of the shoot. This function marks the apical meristem of the shoot as no longer alive. | |
void | terminateAxillaryVegetativeBuds () |
Terminates all axillary vegetative buds within the shoot. This function iterates through all phytomers of the current shoot and marks the axillary vegetative buds as no longer alive. | |
void | addTerminalFloralBud () |
Adds terminal floral buds to the shoot. This function creates and initializes a specified number of terminal floral buds at the apex of the shoot. Each bud is assigned its position, rotation, and bending axis, based on the shoot's parameters. | |
float | calculateShootInternodeVolume () const |
Calculates the total volume of the shoot's internode tubes. This function iterates through all phytomers of the shoot and sums the volume of the internode tube objects if they exist. | |
float | calculateShootLength () const |
Calculates the total length of the shoot. This function iterates through all phytomers in the shoot and sums their internode lengths. | |
helios::vec3 | getShootAxisVector (float shoot_fraction) const |
Determines the shoot axis vector based on a specified fraction along the shoot's length. | |
float | sumShootLeafArea (uint start_node_index=0) const |
Calculates the total leaf area of a shoot starting from a given node index. | |
float | sumChildVolume (uint start_node_index=0) const |
Calculates the total volume of all child shoots starting from a specified node index. | |
void | propagateDownstreamLeafArea (const Shoot *shoot, uint node_index, float leaf_area) |
Propagates the given leaf area downstream through the specified shoot. | |
void | updateShootNodes (bool update_context_geometry=true) |
Updates the shoot node positions and their associated geometries. | |
void | breakDormancy () |
void | makeDormant () |
Definition at line 1380 of file PlantArchitecture.h.
Shoot::Shoot | ( | uint | plant_ID, |
int | shoot_ID, | ||
int | parent_shoot_ID, | ||
uint | parent_node, | ||
uint | parent_petiole_index, | ||
uint | rank, | ||
const helios::vec3 & | shoot_base_position, | ||
const AxisRotation & | shoot_base_rotation, | ||
uint | current_node_number, | ||
float | internode_length_shoot_initial, | ||
ShootParameters & | shoot_params, | ||
std::string | shoot_type_label, | ||
PlantArchitecture * | plant_architecture_ptr | ||
) |
Constructor.
Definition at line 2636 of file PlantArchitecture.cpp.
void Shoot::addTerminalFloralBud | ( | ) |
Adds terminal floral buds to the shoot. This function creates and initializes a specified number of terminal floral buds at the apex of the shoot. Each bud is assigned its position, rotation, and bending axis, based on the shoot's parameters.
Definition at line 1189 of file PlantArchitecture.cpp.
int Shoot::appendPhytomer | ( | float | internode_radius, |
float | internode_length_max, | ||
float | internode_length_scale_factor_fraction, | ||
float | leaf_scale_factor_fraction, | ||
const PhytomerParameters & | phytomer_parameters | ||
) |
Append a phytomer at the shoot apex.
[in] | internode_radius | Initial radius of the internode |
[in] | internode_length_max | Maximum length of the internode |
[in] | internode_length_scale_factor_fraction | Fraction of the total fully-elongated internode length |
[in] | leaf_scale_factor_fraction | Fraction of the total fully-elongated leaf scale factor (i.e., =1 for fully-elongated leaf) |
Definition at line 959 of file PlantArchitecture.cpp.
void Shoot::breakDormancy | ( | ) |
Definition at line 1099 of file PlantArchitecture.cpp.
void Shoot::buildShootPhytomers | ( | float | internode_radius, |
float | internode_length, | ||
float | internode_length_scale_factor_fraction, | ||
float | leaf_scale_factor_fraction, | ||
float | radius_taper | ||
) |
Constructs and appends shoot phytomers to the shoot structure.
[in] | internode_radius | Initial radius of the phytomer internode. |
[in] | internode_length | Length of the internode for each phytomer. |
[in] | internode_length_scale_factor_fraction | Fraction to scale the internode length. |
[in] | leaf_scale_factor_fraction | Fraction to scale the leaf size. |
[in] | radius_taper | Degree of tapering applied to reduce the internode radius along the shoot. |
Definition at line 2653 of file PlantArchitecture.cpp.
float Shoot::calculateShootInternodeVolume | ( | ) | const |
Calculates the total volume of the shoot's internode tubes. This function iterates through all phytomers of the shoot and sums the volume of the internode tube objects if they exist.
Definition at line 1212 of file PlantArchitecture.cpp.
float Shoot::calculateShootLength | ( | ) | const |
Calculates the total length of the shoot. This function iterates through all phytomers in the shoot and sums their internode lengths.
Definition at line 1222 of file PlantArchitecture.cpp.
helios::vec3 Shoot::getShootAxisVector | ( | float | shoot_fraction | ) | const |
Determines the shoot axis vector based on a specified fraction along the shoot's length.
[in] | shoot_fraction | A float value representing the fraction along the shoot's length (0 to 1). |
Definition at line 1277 of file PlantArchitecture.cpp.
void Shoot::makeDormant | ( | ) |
Definition at line 1142 of file PlantArchitecture.cpp.
Propagates the given leaf area downstream through the specified shoot.
[in] | shoot | Pointer to the shoot through which leaf area is propagated |
[in] | node_index | Index of the node to start propagation from |
[in] | leaf_area | Leaf area to add downstream |
Definition at line 1290 of file PlantArchitecture.cpp.
std::string Shoot::sampleChildShootType | ( | ) | const |
Randomly sample the type of a child shoot based on the probabilities defined in the shoot parameters.
Definition at line 2667 of file PlantArchitecture.cpp.
uint Shoot::sampleEpicormicShoot | ( | float | dt, |
std::vector< float > & | epicormic_positions_fraction | ||
) | const |
Randomly sample whether the shoot should produce an epicormic shoot (water sprout) over timestep.
[in] | dt | Time step in days |
[out] | epicormic_positions_fraction | Vector of fractions of the shoot's length where epicormic shoots will be produced |
Definition at line 2736 of file PlantArchitecture.cpp.
bool Shoot::sampleVegetativeBudBreak | ( | uint | node_index | ) | const |
Randomly sample whether a vegetative bud should break into a new shoot.
[in] | node_index | Index of the node along the shoot |
Definition at line 2703 of file PlantArchitecture.cpp.
bool Shoot::sampleVegetativeBudBreak_carb | ( | uint | node_index | ) | const |
Definition at line 528 of file CarbohydrateModel.cpp.
float Shoot::sumChildVolume | ( | uint | start_node_index = 0 | ) | const |
Calculates the total volume of all child shoots starting from a specified node index.
[in] | start_node_index | The starting index of the node from which to sum child volumes. |
Definition at line 1332 of file PlantArchitecture.cpp.
float Shoot::sumShootLeafArea | ( | uint | start_node_index = 0 | ) | const |
Calculates the total leaf area of a shoot starting from a given node index.
[in] | start_node_index | [optional] The index of the starting node in the shoot. |
Definition at line 1302 of file PlantArchitecture.cpp.
void Shoot::terminateApicalBud | ( | ) |
Terminates the apical bud of the shoot. This function marks the apical meristem of the shoot as no longer alive.
Definition at line 1174 of file PlantArchitecture.cpp.
void Shoot::terminateAxillaryVegetativeBuds | ( | ) |
Terminates all axillary vegetative buds within the shoot. This function iterates through all phytomers of the current shoot and marks the axillary vegetative buds as no longer alive.
Definition at line 1179 of file PlantArchitecture.cpp.
void Shoot::updateShootNodes | ( | bool | update_context_geometry = true | ) |
Updates the shoot node positions and their associated geometries.
[in] | update_context_geometry | Indicates whether the geometry context should be updated for the shoot nodes. |
Definition at line 1230 of file PlantArchitecture.cpp.
helios::vec3 Shoot::base_position |
Definition at line 1508 of file PlantArchitecture.h.
AxisRotation Shoot::base_rotation |
Definition at line 1509 of file PlantArchitecture.h.
bool Shoot::build_context_geometry_internode = true |
Definition at line 1551 of file PlantArchitecture.h.
float Shoot::carbohydrate_pool_molC = 0 |
Definition at line 1519 of file PlantArchitecture.h.
std::map<int, std::vector<int> > Shoot::childIDs |
Definition at line 1554 of file PlantArchitecture.h.
helios::Context* Shoot::context_ptr |
Definition at line 1567 of file PlantArchitecture.h.
uint Shoot::current_node_number = 0 |
Definition at line 1505 of file PlantArchitecture.h.
float Shoot::curvature_perturbation = 0 |
Definition at line 1539 of file PlantArchitecture.h.
float Shoot::days_with_negative_carbon_balance = 0 |
Definition at line 1525 of file PlantArchitecture.h.
uint Shoot::dormancy_cycles = 0 |
Definition at line 1531 of file PlantArchitecture.h.
float Shoot::elongation_max = 0.25 |
Definition at line 1537 of file PlantArchitecture.h.
float Shoot::elongation_rate_instantaneous |
Definition at line 1561 of file PlantArchitecture.h.
float Shoot::gravitropic_curvature = 0 |
Definition at line 1542 of file PlantArchitecture.h.
const int Shoot::ID |
Definition at line 1512 of file PlantArchitecture.h.
const float Shoot::internode_length_max_shoot_initial |
Definition at line 1544 of file PlantArchitecture.h.
uint Shoot::internode_tube_objID = 4294967294 |
Definition at line 1546 of file PlantArchitecture.h.
bool Shoot::isdormant |
Definition at line 1530 of file PlantArchitecture.h.
bool Shoot::meristem_is_alive = true |
Definition at line 1533 of file PlantArchitecture.h.
uint Shoot::nodes_this_season = 0 |
Definition at line 1506 of file PlantArchitecture.h.
float Shoot::old_shoot_volume = 0 |
Definition at line 1520 of file PlantArchitecture.h.
const uint Shoot::parent_node_index |
Definition at line 1515 of file PlantArchitecture.h.
const uint Shoot::parent_petiole_index |
Definition at line 1517 of file PlantArchitecture.h.
const int Shoot::parent_shoot_ID |
Definition at line 1513 of file PlantArchitecture.h.
float Shoot::phyllochron_counter = 0 |
Definition at line 1535 of file PlantArchitecture.h.
float Shoot::phyllochron_increase = 5 |
Definition at line 1522 of file PlantArchitecture.h.
float Shoot::phyllochron_instantaneous |
Definition at line 1560 of file PlantArchitecture.h.
float Shoot::phyllochron_min = 6.f |
Definition at line 1536 of file PlantArchitecture.h.
float Shoot::phyllochron_recovery = phyllochron_increase |
Definition at line 1523 of file PlantArchitecture.h.
std::vector<std::shared_ptr<Phytomer> > Shoot::phytomers |
Definition at line 1563 of file PlantArchitecture.h.
PlantArchitecture* Shoot::plantarchitecture_ptr |
Definition at line 1565 of file PlantArchitecture.h.
const uint Shoot::plantID |
Definition at line 1514 of file PlantArchitecture.h.
helios::vec3 Shoot::radial_outward_axis |
Definition at line 1510 of file PlantArchitecture.h.
const uint Shoot::rank |
Definition at line 1516 of file PlantArchitecture.h.
std::vector<std::vector<float> > Shoot::shoot_internode_radii |
Definition at line 1549 of file PlantArchitecture.h.
std::vector<std::vector<helios::vec3> > Shoot::shoot_internode_vertices |
Definition at line 1548 of file PlantArchitecture.h.
ShootParameters Shoot::shoot_parameters |
Definition at line 1556 of file PlantArchitecture.h.
std::string Shoot::shoot_type_label |
Definition at line 1558 of file PlantArchitecture.h.
float Shoot::yaw_perturbation = 0 |
Definition at line 1540 of file PlantArchitecture.h.