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 1503 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 3030 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 1282 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 1014 of file PlantArchitecture.cpp.
| void Shoot::breakDormancy | ( | ) |
Definition at line 1192 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 3047 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 1305 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 1315 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 1370 of file PlantArchitecture.cpp.
| void Shoot::makeDormant | ( | ) |
Definition at line 1235 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 1383 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 3061 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 3131 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 3097 of file PlantArchitecture.cpp.
| bool Shoot::sampleVegetativeBudBreak_carb | ( | uint | node_index | ) | const |
Definition at line 552 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 1426 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 1396 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 1267 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 1272 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 1323 of file PlantArchitecture.cpp.
| helios::vec3 Shoot::base_position |
Definition at line 1631 of file PlantArchitecture.h.
| AxisRotation Shoot::base_rotation |
Definition at line 1632 of file PlantArchitecture.h.
| bool Shoot::build_context_geometry_internode = true |
Definition at line 1678 of file PlantArchitecture.h.
| float Shoot::carbohydrate_pool_molC = 0 |
Definition at line 1642 of file PlantArchitecture.h.
| std::map<int, std::vector<int> > Shoot::childIDs |
Definition at line 1681 of file PlantArchitecture.h.
| helios::Context* Shoot::context_ptr |
Definition at line 1694 of file PlantArchitecture.h.
| uint Shoot::current_node_number = 0 |
Definition at line 1628 of file PlantArchitecture.h.
| float Shoot::curvature_perturbation = 0 |
Definition at line 1666 of file PlantArchitecture.h.
| float Shoot::days_with_negative_carbon_balance = 0 |
Definition at line 1652 of file PlantArchitecture.h.
| uint Shoot::dormancy_cycles = 0 |
Definition at line 1658 of file PlantArchitecture.h.
| float Shoot::elongation_max = 0.25 |
Definition at line 1664 of file PlantArchitecture.h.
| float Shoot::elongation_rate_instantaneous |
Definition at line 1688 of file PlantArchitecture.h.
| float Shoot::gravitropic_curvature = 0 |
Definition at line 1669 of file PlantArchitecture.h.
| const int Shoot::ID |
Definition at line 1635 of file PlantArchitecture.h.
| const float Shoot::internode_length_max_shoot_initial |
Definition at line 1671 of file PlantArchitecture.h.
| uint Shoot::internode_tube_objID = 4294967294 |
Definition at line 1673 of file PlantArchitecture.h.
| bool Shoot::isdormant |
Definition at line 1657 of file PlantArchitecture.h.
| std::map<uint, float> Shoot::leaf_nitrogen_gN_m2 |
Per-leaf nitrogen tracking - maps leaf objID to nitrogen content per unit area (g N/m²)
Definition at line 1645 of file PlantArchitecture.h.
| bool Shoot::meristem_is_alive = true |
Definition at line 1660 of file PlantArchitecture.h.
| uint Shoot::nodes_this_season = 0 |
Definition at line 1629 of file PlantArchitecture.h.
| float Shoot::old_shoot_volume = 0 |
Definition at line 1647 of file PlantArchitecture.h.
| const uint Shoot::parent_node_index |
Definition at line 1638 of file PlantArchitecture.h.
| const uint Shoot::parent_petiole_index |
Definition at line 1640 of file PlantArchitecture.h.
| const int Shoot::parent_shoot_ID |
Definition at line 1636 of file PlantArchitecture.h.
| float Shoot::phyllochron_counter = 0 |
Definition at line 1662 of file PlantArchitecture.h.
| float Shoot::phyllochron_increase = 5 |
Definition at line 1649 of file PlantArchitecture.h.
| float Shoot::phyllochron_instantaneous |
Definition at line 1687 of file PlantArchitecture.h.
| float Shoot::phyllochron_min = 6.f |
Definition at line 1663 of file PlantArchitecture.h.
| float Shoot::phyllochron_recovery = phyllochron_increase |
Definition at line 1650 of file PlantArchitecture.h.
| std::vector<std::shared_ptr<Phytomer> > Shoot::phytomers |
Definition at line 1690 of file PlantArchitecture.h.
| PlantArchitecture* Shoot::plantarchitecture_ptr |
Definition at line 1692 of file PlantArchitecture.h.
| const uint Shoot::plantID |
Definition at line 1637 of file PlantArchitecture.h.
| helios::vec3 Shoot::radial_outward_axis |
Definition at line 1633 of file PlantArchitecture.h.
| const uint Shoot::rank |
Definition at line 1639 of file PlantArchitecture.h.
| std::vector<std::vector<float> > Shoot::shoot_internode_radii |
Definition at line 1676 of file PlantArchitecture.h.
| std::vector<std::vector<helios::vec3> > Shoot::shoot_internode_vertices |
Definition at line 1675 of file PlantArchitecture.h.
| ShootParameters Shoot::shoot_parameters |
Definition at line 1683 of file PlantArchitecture.h.
| std::string Shoot::shoot_type_label |
Definition at line 1685 of file PlantArchitecture.h.
| float Shoot::yaw_perturbation = 0 |
Definition at line 1667 of file PlantArchitecture.h.