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 () |
| void | mobilizeStarch () |
Definition at line 1522 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 3216 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 1324 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 1060 of file PlantArchitecture.cpp.
| void Shoot::breakDormancy | ( | ) |
Definition at line 1234 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 3233 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 1347 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 1357 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 1422 of file PlantArchitecture.cpp.
| void Shoot::makeDormant | ( | ) |
Definition at line 1277 of file PlantArchitecture.cpp.
| void Shoot::mobilizeStarch | ( | ) |
Definition at line 617 of file CarbohydrateModel.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 1435 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 3247 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 3317 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 3283 of file PlantArchitecture.cpp.
| bool Shoot::sampleVegetativeBudBreak_carb | ( | uint | node_index | ) | const |
Definition at line 577 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 1478 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 1448 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 1309 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 1314 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 1365 of file PlantArchitecture.cpp.
| helios::vec3 Shoot::base_position |
Definition at line 1650 of file PlantArchitecture.h.
| AxisRotation Shoot::base_rotation |
Definition at line 1651 of file PlantArchitecture.h.
| bool Shoot::build_context_geometry_internode = true |
Definition at line 1701 of file PlantArchitecture.h.
| std::map<int, std::vector<int> > Shoot::childIDs |
Definition at line 1704 of file PlantArchitecture.h.
| helios::Context* Shoot::context_ptr |
Definition at line 1717 of file PlantArchitecture.h.
| uint Shoot::current_node_number = 0 |
Definition at line 1647 of file PlantArchitecture.h.
| float Shoot::curvature_perturbation = 0 |
Definition at line 1689 of file PlantArchitecture.h.
| float Shoot::days_with_negative_carbon_balance = 0 |
Definition at line 1673 of file PlantArchitecture.h.
| uint Shoot::dormancy_cycles = 0 |
Definition at line 1681 of file PlantArchitecture.h.
| float Shoot::elongation_max = 0.25 |
Definition at line 1687 of file PlantArchitecture.h.
| float Shoot::elongation_rate_instantaneous |
Definition at line 1711 of file PlantArchitecture.h.
| float Shoot::gravitropic_curvature = 0 |
Definition at line 1692 of file PlantArchitecture.h.
| const int Shoot::ID |
Definition at line 1654 of file PlantArchitecture.h.
| const float Shoot::internode_length_max_shoot_initial |
Definition at line 1694 of file PlantArchitecture.h.
| uint Shoot::internode_tube_objID = 4294967294 |
Definition at line 1696 of file PlantArchitecture.h.
| bool Shoot::isdormant |
Definition at line 1680 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 1666 of file PlantArchitecture.h.
| bool Shoot::meristem_is_alive = true |
Definition at line 1683 of file PlantArchitecture.h.
| uint Shoot::nodes_this_season = 0 |
Definition at line 1648 of file PlantArchitecture.h.
| float Shoot::old_shoot_volume = 0 |
Definition at line 1668 of file PlantArchitecture.h.
| const uint Shoot::parent_node_index |
Definition at line 1657 of file PlantArchitecture.h.
| const uint Shoot::parent_petiole_index |
Definition at line 1659 of file PlantArchitecture.h.
| const int Shoot::parent_shoot_ID |
Definition at line 1655 of file PlantArchitecture.h.
| float Shoot::phyllochron_counter = 0 |
Definition at line 1685 of file PlantArchitecture.h.
| float Shoot::phyllochron_increase = 5 |
Definition at line 1670 of file PlantArchitecture.h.
| float Shoot::phyllochron_instantaneous |
Definition at line 1710 of file PlantArchitecture.h.
| float Shoot::phyllochron_min = 3.f |
Definition at line 1686 of file PlantArchitecture.h.
| float Shoot::phyllochron_recovery = phyllochron_increase |
Definition at line 1671 of file PlantArchitecture.h.
| std::vector<std::shared_ptr<Phytomer> > Shoot::phytomers |
Definition at line 1713 of file PlantArchitecture.h.
| PlantArchitecture* Shoot::plantarchitecture_ptr |
Definition at line 1715 of file PlantArchitecture.h.
| const uint Shoot::plantID |
Definition at line 1656 of file PlantArchitecture.h.
| helios::vec3 Shoot::radial_outward_axis |
Definition at line 1652 of file PlantArchitecture.h.
| const uint Shoot::rank |
Definition at line 1658 of file PlantArchitecture.h.
| std::vector<std::vector<float> > Shoot::shoot_internode_radii |
Definition at line 1699 of file PlantArchitecture.h.
| std::vector<std::vector<helios::vec3> > Shoot::shoot_internode_vertices |
Definition at line 1698 of file PlantArchitecture.h.
| ShootParameters Shoot::shoot_parameters |
Definition at line 1706 of file PlantArchitecture.h.
| std::string Shoot::shoot_type_label |
Definition at line 1708 of file PlantArchitecture.h.
| float Shoot::starch_pool_molC = 0 |
Definition at line 1662 of file PlantArchitecture.h.
| float Shoot::sugar_pool_molC = 0 |
Definition at line 1661 of file PlantArchitecture.h.
| float Shoot::total_carbohydrate_pool_molC = sugar_pool_molC + starch_pool_molC |
Definition at line 1663 of file PlantArchitecture.h.
| float Shoot::yaw_perturbation = 0 |
Definition at line 1690 of file PlantArchitecture.h.