Chapter 11 Landward Movement

⬇ Download this chapter

11.1 Overview

This function simulates landward movement for fish moving upstream through riverine and estuarine systems, where agents adjust movement based on local water velocity, energetic condition, and the relative difficulty of swimming in a given flow. Within this submodel, upstream movement emerges from the interaction between hydrodynamic forcing, body size, and energetic state, as agents navigate spatially variable flow fields where velocity and depth constrain swimming difficulty and energetic cost. These relationships are consistent with allometric scaling in aquatic organisms (Brown et al. 2004) and observed behavioral responses of fish to hydrodynamic conditions during movement (Gibson et al. 2001a).

Movement is structured through a least-cost framework that is recalculated under changing hydrodynamic conditions, where agents respond locally to gradients in flow resistance and path difficulty rather than optimizing globally. This formulation allows movement pathways, travel time, and energy expenditure to emerge dynamically from repeated interactions between organismal capacity and the hydrodynamic environment.

11.2 Purpose

The purpose of this submodel is to represent upstream movement under realistic spatial hydrodynamic resistance. Agents evaluate flow velocity, movement difficulty, body condition, and patch level travel costs before advancing along a least cost path toward a home location.

11.3 Entities, State Variables, and Scales

11.3.1 Spatial and Temporal Scales

Spatial Unit: Patch (3 m x 3 m resolution)
Temporal Unit: 5 minute time steps (tick)

11.3.2 Global Variables

Variable Definition
max-seaward-velocity Maximum seaward directed velocity in the domain, used for normalization.
max-landward-velocity Maximum landward directed velocity in the domain.

11.3.3 Patch Variables

Variable Definition
velocity Depth averaged hydrodynamic velocity at the patch.
depth Water depth at the patch.
patch-terrain Indicates whether the patch is water or land.
cost-to-home Patch level cost field producing a least cost corridor.
visits-by-alewife Number of times the agent visits the patch.
ticks-spent-alewife Time spent on the patch.

11.3.4 Agent Variables

Variable Definition
weight Body mass of the fish.
speed Current swimming speed.
prev-speed Previous time step swimming speed.
max-speed Maximum sustained speed.
min-speed Minimum allowable speed.
swim-efficiency Scaling factor for acceleration and deceleration.
difficulty-factor Difficulty of movement under local velocity conditions.
planned-path Sequence of patches in the least cost route.
home-patch Destination patch for movement.
trail Record of patches visited by the agent.

11.4 Process Overview and Scheduling

  1. Compute swimming difficulty from hydrodynamic velocity and body size.

  2. Calculate swimming speed using desired-speed, velocity influence, and acceleration limits.

  3. Evaluate the least cost field and construct a path to the home patch.

  4. Move along the path for a distance proportional to swimming speed.

  5. Record patch visitation and time spent.

11.5 Design Concepts

Basic Principles: Hydrodynamic constraints, difficulty scaling, and body condition influence agent movement.

Emergence: movement routes, temporal occupancy, and movement speed emerge from repeated interactions of flow and difficulty.

Objectives: Agents attempt to reach the home patch but do not optimize globally. Movement follows the least cost route at each step.

Sensing: Agents sense velocity and depth of the local and neighboring patches.

Observation: Paths, timing, and residency can be monitored chronologically.

11.6 Initialization

Variable Initial Value Justification
velocity user-defined Hydrodynamic input data.
weight species-specific Required for difficulty scaling.
max-speed species-specific Physiological constraint.
min-speed species-specific Prevents speed collapse.
swim-efficiency species or constant Controls acceleration rate.
difficulty-factor 1 Neutral starting difficulty.
prev-speed starting speed Smooth initial movement.

11.7 Submodels

11.7.1 Swimming Difficulty

Swimming difficulty reflects the hydrodynamic effort required for the agent to move through its current patch. Velocity is normalized between the maximum observed landward and seaward velocities:

\[ V_{\text{normalized}} = \frac{V_{\text{patch}} - V_{\min}}{V_{\max} - V_{\min}} \hspace{2cm} \text{(11.1)} \]

Where:

  • \(V_{normalized}\) is the normalized patch velocity (dimensionless).
  • \(V_{patch}\) is the depth-averaged along-channel water velocity at the patch (m s⁻¹).
  • \(V_{min}\) is the minimum observed velocity (m s⁻¹).
  • \(V_{max}\) is the maximum observed velocity (m s⁻¹).

This normalized velocity is scaled by relative body size \(M_{\text{agent}} / M_{\max}\) and raised to a scaling exponent \(k\) (Brown et al. 2004; Gibson et al. 2001a):

\[ Df_{\text{raw}} = \left( \frac{V_{\text{normalized}}}{A_{\text{mass}} / M_{\max}} \right)^k \hspace{2cm} \text{(11.2)} \]

Where:

  • \(Df_{raw}\) is the raw hydrodynamic difficulty prior to mapping (dimensionless).
  • \(V_{normalized}\) is the normalized patch velocity (m s⁻¹).
  • \(A_{mass}\) is an agent’s body mass used for allometric and energetic scaling (g).
  • \(M_{max}\) is the maximum body mass across the population (g).
  • \(k\) is the energy scaling exponent (dimensionless).

Difficulty is then mapped onto the one to ten range:

\[ D_f = 1 + 9 \cdot Df_{\text{raw}} \hspace{2cm} \text{(11.3)} \]

Where:

  • \(D_f\) is the swimming difficulty index (dimensionless).
  • \(Df_{raw}\) is the raw hydrodynamic difficulty prior to mapping (dimensionless).

and constrained:

\[ D_f \in [1, 10] \hspace{2cm} \text{(11.4)} \]

Where:

  • \(D_f\) is the mapped swimming difficulty index (dimensionless, range 1–10).

Difficulty increases when:

  • \(M_{\text{agent}}\) is small
  • \(|V_{\text{patch}}|\) approaches its maximum value
  • flow opposes movement

11.7.2 Swimming Speed

Swimming speed depends on energetic condition, hydrodynamic difficulty, and the effect of local flow. The agent first computes an energy factor:

\[ E_{\text{factor}} = \frac{E_{\text{agent}}}{100} \hspace{2cm} \text{(11.5)} \]

Where:

  • \(E_{factor}\) is the normalized energy level of the agent (dimensionless).
  • \(E_{agent}\) is the total internal energy available to the agent (energy units).

Velocity impact from hydrodynamics is:

\[ V_{\text{impact}} = k \cdot V_{\text{patch}} \cdot 300 \hspace{2cm} \text{(11.6)} \]

Where:

  • \(V_{impact}\) is the flow contribution to desired swimming speed (m tick⁻¹).
  • \(k\) is the energy scaling exponent used in velocity, difficulty, and osmoregulation terms (dimensionless).
  • \(V_{patch}\) is the depth-Averaged along-channel water velocity at the patch (m s⁻¹).
  • \(300\) is the timestep conversion from seconds to one tick (s/tick, e.g., 5 minutes).

The desired swimming speed is:

\[ V_{\text{desired}} = \frac{V_{\max} \cdot E_{\text{factor}}}{D_f} + V_{\text{impact}} \hspace{2cm} \text{(11.7)} \]

Where:

  • \(V_{desired}\) is the desired swimming speed before constraints (m tick⁻¹).
  • \(V_{max}\) is the maximum observed velocity (m tick⁻¹).
  • \(E_{factor}\) is the normalized energy level of the agent (dimensionless).
  • \(D_f\) is the mapped swimming difficulty index (dimensionless).
  • \(V_{impact}\) is the flow contribution to desired swimming speed (m tick⁻¹).

Speed is constrained between a minimum and maximum:

\[ V_{\text{desired}} = \min(V_{\max}, \max(V_{\min}, V_{\text{desired}})) \hspace{2cm} \text{(11.8)} \]

Where:

  • \(V_{desired}\) is the desired swimming speed before constraints (m tick⁻¹).
  • \(V_{max}\) is the maximum observed velocity (m tick⁻¹).
  • \(V_{min}\) is the minimum observed velocity (m tick⁻¹).

Acceleration is smoothed using the previous speed:

\[ \Delta V_{max} = 0.5 \cdot swim_{Eff} \hspace{2cm} \text{(11.9)} \]

Where:

  • \(\Delta V_{max}\) is the maximum allowable speed change per tick (m s⁻¹/tick).
  • \(swim_{Eff}\) is the efficiency multiplier applied to swimming energetics (%).

If \(|V_{\text{desired}} - V_{\text{prev}}| > \Delta V_{\max}\),where \(V_{prev}\) is the previous speed then speed moves gradually toward the desired value. Otherwise speed is set directly.

11.7.3 Path Based Movement

Landward movement uses a least cost routing strategy instead of direct vector movement. The number of patches traversed in a tick is based on swimming speed:

\[ D_{travel} = \frac{A_{speed}}{3} \hspace{2cm} \text{(11.10)} \]

Where:

  • \(D_{travel}\) is the distance traveled in the current tick (patch units), where 1 patch = 3 m.
  • \(A_{speed}\) is the actual swimming speed used for movement (m tick⁻¹).

Movement follows:

  1. compute cost-to-home
  2. generate a path using decreasing cost
  3. move through the first \(\lceil \mathrm{travel\_distance} \rceil\) patches
  4. record patch visits and time spent
  5. append patch-here to the trail if new location

11.7.4 Travel Cost

Travel cost for a candidate patch incorporates velocity magnitude, slope, and difficulty:

\[ \text{cost}_{\text{raw}} = |V_{\text{patch}}| + 0.5 \cdot \max(0, \Delta \text{depth}) \hspace{2cm} \text{(11.11)} \]

Where:

  • \(cost_{raw}\) is the base travel cost including velocity and slope (dimensionless).
  • \(V_{patch}\) is the depth-Averaged along-channel water velocity at the patch (m s⁻¹).
  • \(\Delta d\) is the change in depth between patches (m).

Difficulty multiplies the base cost:

\[ \text{cost} = \text{cost}_{\text{raw}} \cdot D_f \hspace{2cm} \text{(11.12)} \]

Where:

  • \(cost\) is the difficulty-scaled travel cost per patch (energy units).
  • \(cost_{raw}\) is the base travel cost including velocity and slope (dimensionless).
  • \(D_f\) is the mapped swimming difficulty index (dimensionless).

This produces a cost-to-home field representing hydrodynamic resistance (dimensionless), which is used for route selection.

11.7.5 Swimming Energy

Swimming incurs a metabolic cost that scales with base swimming cost, difficulty, and swim efficiency.

Let \(\beta = 0.75\).
Let the effective multiplier be:

\[ M_{swim} = \frac{D_f}{swim_{Eff}} \hspace{2cm} \text{(11.13)} \]

Where:

  • \(M_{swim}\) is the swimming energy multiplier (dimensionless).
  • \(D_f\) is the mapped swimming difficulty index (dimensionless).
  • \(swim_{Eff}\) is the efficiency multiplier applied to swimming energetics (dimensionless).

Where lower efficiency results in higher energetic cost.

Energy expenditure is:

\[ E_{\text{swim}} = swim_{base} \cdot M_{swim}^\beta \hspace{2cm} \text{(11.14)} \]

Where:

  • \(E_{swim}\) is the energy cost of swimming for the tick (energy units).
  • \(swim_{base}\) is the baseline energetic cost of swimming ((energy units) patch⁻¹).
  • \(M_{swim}\) is the swimming energy multiplier (dimensionless).
  • \(\beta\) is the exponent controlling swimming cost scaling (dimensionless).

Total energy is reduced accordingly:

\[ E_{\text{agent}} = \max(0, E_{\text{agent}} - E_{\text{swim}}) \hspace{2cm} \text{(11.15)} \]

Where:

  • \(E_{agent}\) is the total internal energy available to the agent (energy units).
  • \(E_{swim}\) is the energy cost of swimming for the tick (energy units).

Higher difficulty and lower swim efficiency increase metabolic cost.

11.8 Netlogo Implementation

References

Brown, James H., James F. Gillooly, Andrew P. Allen, Van M. Savage, and Geoffrey B. West. 2004. TOWARD a METABOLIC THEORY OF ECOLOGY.” Ecology 85 (7): 1771–89. https://doi.org/10.1890/03-9000.
Gibson, R. N., M. Barnes, and R. J. A. Atkinson. 2001a. “Selective Tidal-Stream Transport of Marine Animals.” Oceanography and Marine Biology: An Annual Review 39: 305–53.