-
Notifications
You must be signed in to change notification settings - Fork 0
Function Reference
Generated automatically from Doxygen-style docblocks in .cpp files.
Legend: πΈ Purpose | β¬οΈ Inputs | β¬οΈ Outputs | π Notes | π Click function names to open source
πΉ bcorner_move
Type: agent
Source: Open bcorner_move.cpp
- πΈ Purpose: Synchronize each BCORNER agent position with the current domain boundary coordinates.
- β¬οΈ Inputs:
- Agent variable: id
- Environment properties: COORDS_BOUNDARIES[6]
- β¬οΈ Outputs:
- Updated BCORNER position (x, y, z)
- π Notes:
- BCORNER ids 1..8 map to the eight corners of the simulation box.
Type: agent
Source: Open bcorner_output_location_data.cpp
- πΈ Purpose: Publish BCORNER identifiers and coordinates to spatial messages.
- β¬οΈ Inputs:
- Agent variables: id, x, y, z
- β¬οΈ Outputs:
- MessageSpatial3D payload for downstream consumers
πΉ cell_MaxID_update
Type: agent
Source: Open cell_MaxID_update.cpp
- πΈ Purpose: Synchronize the agent's max_global_cell_id variable with the environment macro property.
- β¬οΈ Inputs:
- Environment macro property: MACRO_MAX_GLOBAL_CELL_ID
- β¬οΈ Outputs:
- Updated agent variable: max_global_cell_id
Type: agent
Source: Open cell_bucket_location_data.cpp
- πΈ Purpose: Export CELL state required by bucket-based readers (e.g., focal adhesion updates).
- β¬οΈ Inputs:
- CELL variables: id, position, orientation, anchor arrays
- β¬οΈ Outputs:
- MessageBucket keyed by CELL id containing anchor geometry and pose
πΉ cc_clampf
Type: helper
Source: Open cell_cell_interaction.cpp
- πΈ Purpose: Clamp a scalar to the closed interval [lo, hi].
- β¬οΈ Inputs:
- x: value to clamp
- lo: lower bound
- hi: upper bound
- β¬οΈ Outputs:
- Returns clamped value
πΉ cc_normalize3
Type: helper
Source: Open cell_cell_interaction.cpp
- πΈ Purpose: Normalize a 3D vector in-place; if near-zero, sets a default unit vector.
- β¬οΈ Inputs:
- x, y, z: vector components (modified)
- β¬οΈ Outputs:
- x, y, z: normalized vector components
Type: agent
Source: Open cell_cell_interaction.cpp
- πΈ Purpose: Compute short-range CELL-CELL mechanics with strong contact repulsion and weak finite-range adhesion shell (soft cohesion) to promote aggregate compactness while allowing escape under other motility cues.
- β¬οΈ Inputs:
- cell_spatial_location_message (spatial neighbors)
- Environment interaction parameters
- β¬οΈ Outputs:
- Per-cell interaction velocity contribution (cc_dv*) [um/s]
πΉ ccs_clampf
Type: helper
Source: Open cell_contact_stress_update.cpp
- πΈ Purpose: Clamps a scalar to the closed interval [lo, hi].
πΉ ccs_safeInv
Type: helper
Source: Open cell_contact_stress_update.cpp
- πΈ Purpose: Returns 1/x when |x| > eps, otherwise returns 0.
πΉ ccs_normalize3
Type: helper
Source: Open cell_contact_stress_update.cpp
- πΈ Purpose: Normalizes a 3D vector in-place; if near-zero, sets a default unit vector.
πΉ ccs_swapf
Type: helper
Source: Open cell_contact_stress_update.cpp
- πΈ Purpose: Swaps two floats by reference.
πΉ ccs_swap_col3
Type: helper
Source: Open cell_contact_stress_update.cpp
- πΈ Purpose: Swaps two columns of a 3x3 matrix (used for eigenvector column reordering).
πΉ ccs_eig_sym_3x3
Type: helper
Source: Open cell_contact_stress_update.cpp
- πΈ Purpose: Jacobi eigendecomposition for a real symmetric 3x3 matrix.
Type: agent
Source: Open cell_contact_stress_update.cpp
- πΈ Purpose: Computes nucleus stress from contact-derived stresslet accumulators
- β¬οΈ Inputs:
- cc_S_, cf_S_, cl_S_* (agent variables, written each step)
- eps_* (persistent viscoelastic strain state)
- nucleus_radius, cell_type, orx/y/z
- Environment: NUCLEUS_E, NUCLEUS_NU, NUCLEUS_TAU, NUCLEUS_EPS_CLAMP,
- β¬οΈ Outputs:
- sig_* (stress tensor, fresh each step)
- eps_* (viscoelastic strain, evolved each step)
- sig_eig_* (principal stresses + eigenvectors)
- eps_eig_* (principal strains + eigenvectors)
- orx/y/z (cell orientation, updated when INCLUDE_ORIENTATION_ALIGN)
πΉ vec3Div
Type: helper
Source: Open cell_cycle.cpp
- πΈ Purpose: Divide a 3D vector (x, y, z) by a scalar divisor in-place.
- β¬οΈ Inputs:
- x, y, z: vector components (modified)
- divisor: scalar value
- β¬οΈ Outputs:
- x, y, z: scaled vector components
πΉ vec3Length
Type: helper
Source: Open cell_cycle.cpp
- πΈ Purpose: Compute the Euclidean length of a 3D vector (x, y, z).
- β¬οΈ Inputs:
- x, y, z: vector components
- β¬οΈ Outputs:
- Returns the magnitude of the vector
πΉ cell_cycle
Type: agent
Source: Open cell_cycle.cpp
- πΈ Purpose: Agent function for cell cycle progression, division, and death. Handles cell phase transitions, damage accumulation, and division logic.
- β¬οΈ Inputs:
- CELL agent variables: id, cell_type, position, orientation, metabolic rates, anchor arrays, etc.
- Environment properties: cell cycle timings, thresholds, rates
- β¬οΈ Outputs:
- Updated cell state variables (phase, clock, damage, division, daughter creation)
- π Notes:
- Dead cells may remain ALIVE for agent purposes if DEAD_CELLS_DISAPPEAR is set.
- Division logic includes randomization and mass/anchor inheritance.
Type: agent
Source: Open cell_ecm_interaction_metabolism.cpp
- πΈ Purpose: Couple each CELL to its nearest ECM voxel for species exchange and run intracellular metabolic reactions with mass-consistent updates.
- β¬οΈ Inputs:
- CELL position/volume and metabolic rate arrays
- ECM voxel concentration fields read from Array3D
- β¬οΈ Outputs:
- Updated CELL species amounts/concentrations
- Atomic updates to ECM concentration macro-property (C_SP_MACRO)
πΉ cell_fnode_remodel
Type: agent
Source: Open cell_fnode_remodel.cpp
- πΈ Purpose: Probabilistically create a single FNODE around a CELL and request reciprocal parent-link update through environment macros.
- β¬οΈ Inputs:
- Nearby FNODE spatial messages (id, x, y, z, connectivity_count)
- CELL state (position, stress proxy, concentration, dead)
- Remodeling environment properties and macro properties
- β¬οΈ Outputs:
- Optional newborn FNODE via agent output (max 1 per CELL per step)
- Updated CELL cooldown variable
fnode_birth_cooldown
πΉ cell_fnode_repulsion
Type: agent
Source: Open cell_fnode_repulsion.cpp
- πΈ Purpose: Prevent CELL centers from approaching FNODE points closer than an exclusion distance by adding a short-range repulsive velocity component.
- β¬οΈ Inputs:
- fnode_spatial_location_message (spatial neighbors)
- Environment interaction parameters
- β¬οΈ Outputs:
- Per-cell FNODE interaction velocity contribution (cf_dv*) [um/s]
πΉ cell_focad_update
Type: agent
Source: Open cell_focad_update.cpp
- πΈ Purpose: Accumulates the FOCAD stresslet tensor from focal adhesion anchor forces
πΉ cl_normalize3
Type: helper
Source: Open cell_lumen_interaction.cpp
- πΈ Purpose: Normalize a 3D vector in-place; if near-zero, sets a default unit vector.
Type: agent
Source: Open cell_lumen_interaction.cpp
- πΈ Purpose: Compute CELL-LUMEN repulsion (Newton's 3rd law pair of lumen_cell_interaction). When a LUMEN droplet overlaps with a cell, the cell is pushed away from the lumen (simulating hydrostatic pressure from the lumen cavity pushing the surrounding cells outward).
- β¬οΈ Inputs:
- lumen_spatial_location_message (spatial neighbors)
- Environment parameters: LUMEN_K_LUMEN_CELL_REPULSION, CELL_D_DUMPING,
- β¬οΈ Outputs:
- Per-CELL interaction velocity contribution (cl_dv*) [um/s]
πΉ cls_normalize3
Type: helper
Source: Open cell_lumen_secretion.cpp
- πΈ Purpose: Normalize a 3D vector in-place; if near-zero, sets a default unit vector.
πΉ cell_lumen_secretion
Type: agent
Source: Open cell_lumen_secretion.cpp
- πΈ Purpose: Each CELL agent stochastically secretes a LUMEN droplet in the direction opposite to its orientation vector (apical side = anti-orientation). The new LUMEN droplet is placed at one contact distance (cell_radius + LUMEN_RADIUS) behind the cell. A per-cell cooldown timer prevents continuous secretion.
- β¬οΈ Inputs:
- CELL variables: x, y, z, orx, ory, orz, radius, lumen_secretion_cooldown, dead
- Environment: TIME_STEP, LUMEN_RADIUS, LUMEN_SECRETION_RATE,
- MACRO_MAX_GLOBAL_LUMEN_ID for unique id assignment
- β¬οΈ Outputs:
- New LUMEN agent (if secretion fires), updated lumen_secretion_cooldown
πΉ cell_move
Type: agent
Source: Open cell_move.cpp
- πΈ Purpose: Update CELL velocity/orientation-driven migration by combining Brownian, chemotactic, chemokinetic and durotactic components, then advance position.
- β¬οΈ Inputs:
- CELL kinematic state, stress/strain eigensystem, chemotaxis sensitivities
- Environment controls for chemotaxis/durotaxis and timestep
- β¬οΈ Outputs:
- Updated CELL position, velocity, orientation-aligned motion state
Type: agent
Source: Open cell_spatial_location_data.cpp
- πΈ Purpose: Broadcast CELL kinematics and metabolic parameters over a spatial message list.
- β¬οΈ Inputs:
- CELL variables: id, x,y,z, vx,vy,vz
- Species arrays: k_consumption, k_production, k_reaction, C_sp, M_sp
- β¬οΈ Outputs:
- MessageSpatial3D record for nearby agent queries
πΉ ccs_clampf
Type: helper
Source: Open cell_stress_state_update.cpp
- πΈ Purpose: Clamps a scalar to the closed interval [lo, hi].
πΉ ccs_safeInv
Type: helper
Source: Open cell_stress_state_update.cpp
- πΈ Purpose: Returns 1/x when |x| > eps, otherwise returns 0.
πΉ ccs_normalize3
Type: helper
Source: Open cell_stress_state_update.cpp
- πΈ Purpose: Normalizes a 3D vector in-place; if near-zero, sets a default unit vector.
πΉ ccs_swapf
Type: helper
Source: Open cell_stress_state_update.cpp
- πΈ Purpose: Swaps two floats by reference.
πΉ ccs_swap_col3
Type: helper
Source: Open cell_stress_state_update.cpp
- πΈ Purpose: Swaps two columns of a 3x3 matrix (used for eigenvector column reordering).
πΉ ccs_eig_sym_3x3
Type: helper
Source: Open cell_stress_state_update.cpp
- πΈ Purpose: Jacobi eigendecomposition for a real symmetric 3x3 matrix.
Type: agent
Source: Open cell_stress_state_update.cpp
- πΈ Purpose: Unified constitutive pipeline for ALL nucleus stress sources.
- β¬οΈ Inputs:
- focad_S_, cc_S_, cf_S_, cl_S_ (agent stresslet accumulators)
- eps_* (persistent viscoelastic strain)
- nucleus_radius, x, y, z, cell_type, orx/y/z
- u_ref_x_i/y_i/z_i (reference anchor directions, if FA)
- Environment: NUCLEUS_E, NUCLEUS_NU, NUCLEUS_TAU, NUCLEUS_EPS_CLAMP,
- β¬οΈ Outputs:
- sig_* (stress tensor)
- eps_* (updated viscoelastic strain)
- sig_eig_* (principal stresses + eigenvectors)
- eps_eig_* (principal strains + eigenvectors)
- orx/y/z (updated orientation when INCLUDE_ORIENTATION_ALIGN)
- x_i/y_i/z_i (anchor positions, when INCLUDE_FOCAL_ADHESIONS)
πΉ ecm_Csp_update
Type: agent
Source: Open ecm_Csp_update.cpp
- πΈ Purpose: Refresh each ECM voxel concentration array from the global macro property buffer.
- β¬οΈ Inputs:
- Agent variable: grid_lin_id
- Environment macro property: C_SP_MACRO
- β¬οΈ Outputs:
- Updated per-agent C_sp array
- π Notes:
- This is the synchronization bridge from macro-level concentration updates
- back into per-agent concentration variables.
πΉ vec3Length_dsp_lumen
Type: helper
Source: Open ecm_Dsp_lumen_update.cpp
- πΈ Purpose: vec3Length_dsp_lumen (local helper, avoids name collision)
πΉ ecm_Dsp_lumen_update
Type: agent
Source: Open ecm_Dsp_lumen_update.cpp
- πΈ Purpose: Override the D_sp diffusion coefficient of ECM voxels that contain at least one LUMEN agent. LUMEN represents a liquid void with free diffusion, so if any LUMEN droplet is found within the voxel's equilibrium distance, D_sp is overwritten with LUMEN_DIFFUSION_COEFF_MULTI (the lumen-specific diffusion coefficient) for all species. This runs after ecm_Dsp_update (the fibre-crowding reduction step), replacing its value where lumen is present. Only called when INCLUDE_LUMEN is True.
- β¬οΈ Inputs:
- lumen_spatial_location_message (broadcast radius >= ECM_ECM_EQUILIBRIUM_DISTANCE)
- Environment: ECM_ECM_EQUILIBRIUM_DISTANCE, LUMEN_DIFFUSION_COEFF_MULTI
- β¬οΈ Outputs:
- Updated D_sp array per ECM agent (overwritten to lumen value when lumen present)
πΉ vec3CrossProd
Type: helper
Source: Open ecm_Dsp_update.cpp
- πΈ Purpose: Compute the cross product of two 3D vectors and store result in (x, y, z).
- β¬οΈ Inputs:
- x1, y1, z1: first vector
- x2, y2, z2: second vector
- β¬οΈ Outputs:
- x, y, z: cross product result (modified)
πΉ vec3Div
Type: helper
Source: Open ecm_Dsp_update.cpp
- πΈ Purpose: Divide a 3D vector (x, y, z) by a scalar divisor in-place.
- β¬οΈ Inputs:
- x, y, z: vector components (modified)
- divisor: scalar value
- β¬οΈ Outputs:
- x, y, z: scaled vector components
πΉ vec3Length
Type: helper
Source: Open ecm_Dsp_update.cpp
- πΈ Purpose: Compute the Euclidean length of a 3D vector (x, y, z).
- β¬οΈ Inputs:
- x, y, z: vector components
- β¬οΈ Outputs:
- Returns the magnitude of the vector
πΉ vec3Normalize
Type: helper
Source: Open ecm_Dsp_update.cpp
- πΈ Purpose: Normalize a 3D vector in-place using its length.
- β¬οΈ Inputs:
- x, y, z: vector components (modified)
- β¬οΈ Outputs:
- x, y, z: normalized vector components
πΉ ecm_Dsp_update
Type: agent
Source: Open ecm_Dsp_update.cpp
- πΈ Purpose: Compute local FNODE crowding around each ECM voxel and downscale diffusion coefficients to represent heterogeneous transport in dense regions. Only called if HETEROGENEOUS_DIFFUSION is true in the model config.
- β¬οΈ Inputs:
- Spatial FNODE messages around each ECM position
- Environment controls: equilibrium distance, average voxel density
- β¬οΈ Outputs:
- Updated D_sp array per ECM agent
Type: agent
Source: Open ecm_boundary_concentration_conditions.cpp
- πΈ Purpose: Apply boundary concentration conditions to ECM agents located near domain faces.
- β¬οΈ Inputs:
- ECM position and current species concentrations
- Boundary positions and boundary concentration macro properties
- β¬οΈ Outputs:
- Updated agent C_sp and synchronized C_SP_MACRO values for touched boundaries
πΉ vec3CrossProd
Type: helper
Source: Open ecm_ecm_interaction.cpp
- πΈ Purpose: Compute the cross product of two 3D vectors and store result in (x, y, z).
- β¬οΈ Inputs:
- x1, y1, z1: first vector
- x2, y2, z2: second vector
- β¬οΈ Outputs:
- x, y, z: cross product result (modified)
πΉ vec3Div
Type: helper
Source: Open ecm_ecm_interaction.cpp
- πΈ Purpose: Divide a 3D vector (x, y, z) by a scalar divisor in-place.
- β¬οΈ Inputs:
- x, y, z: vector components (modified)
- divisor: scalar value
- β¬οΈ Outputs:
- x, y, z: scaled vector components
πΉ vec3Length
Type: helper
Source: Open ecm_ecm_interaction.cpp
- πΈ Purpose: Compute the Euclidean length of a 3D vector (x, y, z).
- β¬οΈ Inputs:
- x, y, z: vector components
- β¬οΈ Outputs:
- Returns the magnitude of the vector
πΉ vec3Normalize
Type: helper
Source: Open ecm_ecm_interaction.cpp
- πΈ Purpose: Normalize a 3D vector in-place using its length.
- β¬οΈ Inputs:
- x, y, z: vector components (modified)
- β¬οΈ Outputs:
- x, y, z: normalized vector components
πΉ getAngleBetweenVec
Type: helper
Source: Open ecm_ecm_interaction.cpp
- πΈ Purpose: Compute the angle (in radians) between two 3D vectors.
- β¬οΈ Inputs:
- x1, y1, z1: first vector
- x2, y2, z2: second vector
- β¬οΈ Outputs:
- Returns angle in radians
πΉ ecm_ecm_interaction
Type: agent
Source: Open ecm_ecm_interaction.cpp
- πΈ Purpose: Execute ECM voxel-to-voxel mechanical coupling and multi-species diffusion on the same neighborhood pass.
- β¬οΈ Inputs:
- Array3D ECM neighborhood messages (positions, velocities, concentrations)
- Environment controls for diffusion mode, timestep, and mechanics
- β¬οΈ Outputs:
- Updated ECM mechanical forces (fx, fy, fz)
- Updated concentration state C_sp and C_SP_MACRO entries
- π Notes:
- Includes the semi-implicit diffusion branch used to prevent unstable Euler
- blow-up when diffusion CFL-like conditions are violated.
Type: agent
Source: Open ecm_grid_location_data.cpp
- πΈ Purpose: Publish ECM voxel-centered state into the Array3D message for neighborhood reads.
- β¬οΈ Inputs:
- ECM grid coordinates and linear index
- Mechanical and diffusion-related voxel variables
- β¬οΈ Outputs:
- MessageArray3D entry indexed by (grid_i, grid_j, grid_k)
πΉ boundPosition
Type: helper
Source: Open ecm_move.cpp
- πΈ Purpose: Clamp ECM agent coordinates against moving boundaries and update per-axis clamp flags when contact conditions are met.
πΉ ecm_move
Type: agent
Source: Open ecm_move.cpp
- πΈ Purpose: Advance ECM agent motion from accumulated forces, then enforce boundary clamping/sliding rules and boundary-driven kinematics.
- β¬οΈ Inputs:
- ECM force, velocity, clamp state, and boundary/environment parameters
- β¬οΈ Outputs:
- Updated position, velocity, clamp flags, and boundary force channels
πΉ ecm_vasc_Csp_update
Type: agent
Source: Open ecm_vasc_Csp_update.cpp
- πΈ Purpose: For each ECM voxel, find nearby alive VASC nodes (via MessageSpatial3D) and impose a concentration floor: if any VASC neighbour carries a higher per-species concentration than the current ECM value, that value is adopted. This ensures the vascular network acts as a sustained source that diffusion cannot erode below the vessel-supplied level.
- β¬οΈ Inputs:
- Agent variables: x, y, z, grid_lin_id, C_sp[N_SPECIES]
- MessageSpatial3D: vasc_spatial_location_message (dead flag + C_sp per VASC node)
- Environment macro property: C_SP_MACRO (shared concentration buffer)
- β¬οΈ Outputs:
- Updated agent C_sp[N_SPECIES] (so the L1 ECM broadcast reflects VASC influence)
- Updated C_SP_MACRO[species][grid_lin_id] (so L4 ecm_Csp_update preserves the floor)
- π Notes:
- Must run after vasc_spatial_location_data and before the L1 ECM broadcast.
- Each ECM agent writes only to its own grid_lin_id slot, so no write conflicts.
Type: agent
Source: Open fnode_apply_remodel_updates.cpp
- πΈ Purpose: Apply remodeling topology updates and optionally remove terminally degraded nodes.
- β¬οΈ Inputs:
- FNODE connectivity arrays
- Spatial FNODE messages (id, x,y,z, closest_fnode_id, second_closest_fnode_id)
- β¬οΈ Outputs:
- Updated
linked_nodes/equilibrium_distance - Updated
connectivity_count - Returns DEAD when
marked_for_removalis set
- Updated
Type: agent
Source: Open fnode_boundary_interaction.cpp
- πΈ Purpose: Compute boundary reaction forces on FNODE agents near domain boundaries, including optional elastic and damping contributions per face.
- β¬οΈ Inputs:
- FNODE position/velocity
- Boundary coordinates, stiffness/damping, and movement settings
- β¬οΈ Outputs:
- boundary_fx, boundary_fy, boundary_fz stored on each FNODE
Type: agent
Source: Open fnode_bucket_location_data.cpp
- πΈ Purpose: Export FNODE state and connectivity arrays into a bucket message keyed by node id.
- β¬οΈ Inputs:
- FNODE kinematics and material parameters
- Connectivity arrays: linked_nodes, equilibrium_distance
- β¬οΈ Outputs:
- MessageBucket record for direct id-based neighbor access
Type: agent
Source: Open fnode_bucket_location_data_postmove.cpp
- πΈ Purpose: Broadcast FNODE post-move positions into a dedicated bucket message list. This runs after fnode_move in L8 so that focad_move can read the current-step FNODE position instead of the stale L1 pre-move data.
- π Notes:
- This is a lightweight version of fnode_bucket_location_data that only
- carries the variables needed by focad_move (position and velocity).
πΉ fnode_cell_repulsion
Type: agent
Source: Open fnode_cell_repulsion.cpp
- πΈ Purpose: Prevent FNODE points from being pushed into CELL centers by adding a short-range repulsive force (Newton-3 counterpart of cell_fnode_repulsion).
- β¬οΈ Inputs:
- cell_spatial_location_message (spatial neighbors)
- Environment interaction parameters (same as cell_fnode_repulsion)
- β¬οΈ Outputs:
- Updated FNODE force components (fx, fy, fz) with repulsive contributions added
Type: agent
Source: Open fnode_fnode_bucket_interaction.cpp
- πΈ Purpose: Compute spring-damper forces along explicit FNODE connectivity links and accumulate network mechanical metrics (extension/compression/elastic energy).
- β¬οΈ Inputs:
- Bucket messages keyed by linked node ids
- Connectivity arrays and per-link equilibrium distances
- β¬οΈ Outputs:
- Updated FNODE force components and mechanical summary variables
Type: agent
Source: Open fnode_fnode_spatial_interaction.cpp
- πΈ Purpose: Apply short-range repulsion between nearby FNODE agents to prevent overlap.
- β¬οΈ Inputs:
- Spatial FNODE neighbor messages
- Environment parameters: MAX_SEARCH_RADIUS_FNODES, FIBRE_NODE_REPULSION_K
- β¬οΈ Outputs:
- Updated repulsive force components (fx, fy, fz) on each FNODE
Type: agent
Source: Open fnode_focad_interaction.cpp
- πΈ Purpose: Transfer precomputed FOCAD traction forces onto the corresponding FNODE.
- β¬οΈ Inputs:
- Spatial FOCAD messages containing force and attachment status
- FNODE id/position/force state
- β¬οΈ Outputs:
- Updated FNODE force components (fx, fy, fz)
- π Notes:
- This function is scheduled after focad_fnode_interaction, which computes
- and stores the adhesion force on each FOCAD agent.
πΉ boundPosition
Type: helper
Source: Open fnode_move.cpp
- πΈ Purpose: Clamp FNODE coordinates near boundaries and update clamp state flags based on contact and configuration flags.
πΉ fnode_move
Type: agent
Source: Open fnode_move.cpp
- πΈ Purpose: Update FNODE positions/velocities under internal, boundary, and transmitted forces while enforcing clamp and sliding boundary behavior.
- β¬οΈ Inputs:
- FNODE force channels (network + boundary), current kinematics, clamp flags
- Boundary movement/clamping parameters from the environment
- β¬οΈ Outputs:
- Updated node kinematics, clamp state, and boundary force contributions
πΉ fnode_remodel
Type: agent
Source: Open fnode_remodel.cpp
- πΈ Purpose: Update FNODE degradation/reinforcement state from nearby CELLs and register removal requests when net degradation reaches 1.
- β¬οΈ Inputs:
- CELL spatial messages (x, y, z, dead)
- FNODE state (degradation, reinforcement, id)
- Remodeling environment properties and removal macro buffers
- β¬οΈ Outputs:
- Updated FNODE
degradation,reinforcement,marked_for_removal
- Updated FNODE
Type: agent
Source: Open fnode_spatial_location_data.cpp
- πΈ Purpose: Broadcast FNODE position for spatial proximity queries.
- β¬οΈ Inputs:
- FNODE variables: id, x, y, z
- β¬οΈ Outputs:
- MessageSpatial3D payload used by FNODE/FOCAD interaction kernels
πΉ fnode_update_links
Type: agent
Source: Open fnode_update_links.cpp
- πΈ Purpose: Update FNODE link list using bucket messages keyed by linked node id. If a linked node has no bucket message (e.g., removed), clear that link.
- β¬οΈ Inputs:
- FNODE bucket messages keyed by id
- FNODE linked_nodes / equilibrium_distance
- β¬οΈ Outputs:
- Updated linked_nodes
- Updated connectivity_count
πΉ focad_anchor_update
Type: agent
Source: Open focad_anchor_update.cpp
- πΈ Purpose: Re-anchor each FOCAD agent to a CELL nucleus anchor point read from bucket messages keyed by cell_id.
- β¬οΈ Inputs:
- MessageBucket from CELL containing nucleus pose and anchor arrays
- Current FOCAD position and cell association
- β¬οΈ Outputs:
- Updated FOCAD nucleus center/orientation and selected anchor (x_i,y_i,z_i)
- π Notes:
- If no fixed anchor_id exists, the closest anchor point is selected each step.
Type: agent
Source: Open focad_bucket_location_data.cpp
- πΈ Purpose: Publish full FOCAD state for bucket-keyed readers (mainly CELL/FOCAD coupling steps).
- β¬οΈ Inputs:
- FOCAD identifiers, kinematics, mechanics, lifecycle flags and timers
- β¬οΈ Outputs:
- MessageBucket keyed by cell_id with adhesion state and force data
Type: agent
Source: Open focad_fnode_interaction.cpp
- πΈ Purpose: Manage FOCAD-FNODE attachment dynamics and compute traction forces stored on FOCAD for subsequent FNODE-side force transfer.
- β¬οΈ Inputs:
- Spatial FNODE messages near each FOCAD
- FOCAD mechanics/lifecycle state and environment kinetics parameters
- β¬οΈ Outputs:
- Updated adhesion attachment state, lifecycle timers/state, and force
- π Notes:
- Scheduled before fnode_focad_interaction so computed traction can be read
- and applied to the linked FNODE.
πΉ focad_move
Type: agent
Source: Open focad_move.cpp
- πΈ Purpose: Update focal adhesion positions by either following attached FNODEs or executing bounded exploratory motion when detached/inactive.
- β¬οΈ Inputs:
- FOCAD state: attachment flags, anchor position, velocity, fnode_id
- FNODE bucket messages (for attached movement)
- Domain and adhesion motion constraints from environment
- β¬οΈ Outputs:
- Updated FOCAD position/velocity within boundary limits
Type: agent
Source: Open focad_post_cycle_update.cpp
- πΈ Purpose: Update FOCAD anchor association after cell division, switching anchor points between parent and daughter cells. Ensures spatial and orientation variables are updated for correct cell association.
- β¬οΈ Inputs:
- FOCAD agent variables: cell_id, anchor_id, spatial coordinates
- MessageBucket: parent cell state
- Environment: N_ANCHOR_POINTS
- β¬οΈ Outputs:
- Updated anchor_id, spatial variables, cell association
- π Notes:
- Uses a two-pass loop to select the correct target message, avoiding duplicated anchor update code.
- Pass 0: For parent cell, require just_divided message (ensures correct anchor after division).
- Pass 1: Fallback, accept any available message if none found in pass 0.
Type: agent
Source: Open focad_spatial_location_data.cpp
- πΈ Purpose: Broadcast active adhesion position/force state for local spatial interaction queries.
- β¬οΈ Inputs:
- FOCAD variables: id, x,y,z, fx,fy,fz, fnode_id, attached, active
- β¬οΈ Outputs:
- MessageSpatial3D payload consumed by FNODE-side force transfer
πΉ vec3CrossProd
Type: helper
Source: Open handy_device_functions_template.cpp
- πΈ Purpose: Provide reusable device-side vector algebra helpers for interaction kernels.
- π Notes:
- This file is a template/reference module and is intended for copy-paste use
- inside runtime-compiled FLAMEGPU agent function files.
- vec3CrossProd: compute cross product (x1,y1,z1) x (x2,y2,z2).
πΉ lc_normalize3
Type: helper
Source: Open lumen_cell_interaction.cpp
- πΈ Purpose: Normalize a 3D vector in-place; if near-zero, sets a default unit vector.
Type: agent
Source: Open lumen_cell_interaction.cpp
- πΈ Purpose: Compute LUMEN-CELL repulsion (hydrostatic pressure effect). When a LUMEN droplet overlaps with a cell, it is pushed away. This is the LUMEN-side reaction; the corresponding CELL-side reaction is handled in cell_lumen_interaction.cpp.
- β¬οΈ Inputs:
- cell_spatial_location_message (spatial neighbors)
- Environment parameters: LUMEN_K_LUMEN_CELL_REPULSION, LUMEN_ETA,
- β¬οΈ Outputs:
- Per-LUMEN interaction velocity contribution (lc_dv*) [um/s]
πΉ ll_normalize3
Type: helper
Source: Open lumen_lumen_interaction.cpp
- πΈ Purpose: Normalize a 3D vector in-place; if near-zero, sets a default unit vector.
Type: agent
Source: Open lumen_lumen_interaction.cpp
- πΈ Purpose: Compute short-range LUMEN-LUMEN mechanics: volume exclusion repulsion at contact and a cohesive adhesion shell beyond contact (surface-tension analogue). This keeps LUMEN droplets together as a coherent liquid mass while preventing overlap.
- β¬οΈ Inputs:
- lumen_spatial_location_message (spatial neighbors)
- Environment parameters: LUMEN_K_LUMEN_LUMEN_REPULSION, LUMEN_K_LUMEN_LUMEN_ADHESION,
- β¬οΈ Outputs:
- Per-LUMEN interaction velocity contribution (ll_dv*) [um/s]
πΉ lumen_move
Type: agent
Source: Open lumen_move.cpp
- πΈ Purpose: Advance LUMEN agent position using overdamped dynamics. Combines all interaction velocity contributions (LUMEN-LUMEN and LUMEN-CELL) and integrates position with a forward-Euler step. Resets per-step velocity accumulators to zero after applying them.
- β¬οΈ Inputs:
- LUMEN kinematic state, ll_dv*, lc_dv* contributions
- Environment: TIME_STEP, domain boundary coordinates
- β¬οΈ Outputs:
- Updated LUMEN position, velocity; reset interaction velocity accumulators
Type: agent
Source: Open lumen_spatial_location_data.cpp
- πΈ Purpose: Broadcast LUMEN agent position and radius over a spatial message list so that other agents (LUMEN, CELL, ECM) can query nearby LUMEN droplets.
- β¬οΈ Inputs:
- LUMEN variables: id, x, y, z, radius
- β¬οΈ Outputs:
- MessageSpatial3D record for nearby agent queries
πΉ vasc_Csp_update
Type: agent
Source: Open vasc_Csp_update.cpp
- πΈ Purpose: Propagate species concentrations along the vascular tree. Each non-source VASC node looks up all its parents (parent_ids array). As long as at least one parent is alive it inherits the maximum concentration across the live parents per species. If ALL parents are dead or absent the node is marked dead (dead=1) and its concentration falls to zero, simulating vessel regression when fully disconnected from the source. Source nodes (all parent_ids entries < 0) act as Dirichlet boundaries and keep their initial INIT_VASCULARIZATION_CONCENTRATION_VALS unchanged.
- β¬οΈ Inputs:
- Agent variables: dead, parent_ids[MAX_VASC_CONNECTIVITY], C_sp[N_SPECIES]
- MessageBucket: vasc_bucket_location_message (keyed by global VASC id)
- β¬οΈ Outputs:
- Updated agent C_sp[N_SPECIES]
- Updated agent dead (set to 1 if all parents are dead/absent)
- π Notes:
- Must run after vasc_bucket_location_data so all parent messages are committed.
- Always returns flamegpu::ALIVE; death is signalled via the dead variable.
Type: agent
Source: Open vasc_bucket_location_data.cpp
- πΈ Purpose: Broadcast full VASC node state into a MessageBucket keyed by the node's own id.
- β¬οΈ Inputs:
- Agent variables: id, x, y, z, parent_ids[MAX_VASC_CONNECTIVITY], dead, C_sp[N_SPECIES], children_ids[MAX_VASC_CONNECTIVITY]
- β¬οΈ Outputs:
- MessageBucket entry keyed by id carrying all agent state for peer lookup
- π Notes:
- Must run before vasc_Csp_update so parent messages are available for reading.
πΉ vasc_ecm_cell_spawn
Type: agent
Source: Open vasc_ecm_cell_spawn.cpp
- πΈ Purpose: Template function for VASC-driven cell spawning. Each alive VASC node reads the local ECM species concentration from the shared macro buffer (C_SP_MACRO) and, when a user-defined condition is met, spawns a single new CELL agent at the VASC node position. Spawning rules are currently unknown and are left as clearly marked TODO sections. The template demonstrates how to:
- β¬οΈ Inputs:
- Agent variables: dead, x, y, z, id
- Environment macro property: C_SP_MACRO (shared ECM concentration buffer)
- Environment properties: ECM_AGENTS_PER_DIR, COORDS_BOUNDARIES, CELL_RADIUS,
- β¬οΈ Outputs:
- Optional new CELL agent via agent_out (at most one per VASC node per step)
- π Notes:
- FLAMEGPU2 permits at most one agent_out output per function execution.
- Use early-exit after the first successful spawn to guarantee this.
- All TODO markers must be replaced with real rules before production use.
- To add more cell types, duplicate the corresponding TODO block and adjust
- the condition and cell_type value.
πΉ vasc_move
Type: agent
Source: Open vasc_move.cpp
- πΈ Purpose: Advect each alive VASC node with the local ECM grid velocity so the vascular network deforms coherently when the simulation boundaries move.
- β¬οΈ Inputs:
- Agent variables: dead, x, y, z
- MessageArray3D: ecm_grid_location_message (vx, vy, vz per grid voxel)
- Environment properties: TIME_STEP, ECM_AGENTS_PER_DIR[3], COORDS_BOUNDARIES[6]
- β¬οΈ Outputs:
- Updated agent x, y, z (new position after advection)
- Updated agent vx, vy, vz (local ECM velocity, cached for output)
- π Notes:
- Only registered in the model when MOVING_BOUNDARIES is True.
Type: agent
Source: Open vasc_spatial_location_data.cpp
- πΈ Purpose: Broadcast VASC node position, liveness, and current species concentrations into a MessageSpatial3D, allowing nearby ECM agents to find and read VASC state within a configurable search radius.
- β¬οΈ Inputs:
- Agent variables: x, y, z, id, dead, C_sp[N_SPECIES]
- β¬οΈ Outputs:
- MessageSpatial3D entry (vasc_spatial_location_message) carrying x, y, z, id, dead, C_sp
- π Notes:
- Must run before ecm_vasc_Csp_update so ECM agents see updated VASC concentrations.