Skip to content

Penaeid shrimp growth

The growth of one penaeid shrimp from the juvenile stage, forced by the food and the water temperature.

  • Name: penaeid_shrimp
  • Field: biology/ecology
  • Formalism: ordinary differential equations
  • References: Franco et al. 2006; Bala et al. 2017

Select this system

from skcomplex.systems import create_simulation, create_system, describe

system = create_system('penaeid_shrimp')
entry = describe('penaeid_shrimp')
trajectory = create_simulation('penaeid_shrimp').prepare().run().trajectory_

Factory

@register_system(
    field='biology/ecology',
    tags=('individual growth', 'bioenergetics', 'aquaculture', 'stocks and flows', 'ode'),
    references=('Franco et al. 2006', 'Bala et al. 2017'),
    defaults={'until': 60.0, 'dt': 0.5},
)
def penaeid_shrimp(
    gut: float = 0.5,
    biomass: float = 1.0,
    *,
    ration: float = 2.5,
    respiration: float = 0.05,
    L_inf: float = 29.9,
    K: float = 0.013,
) -> System:
    """Return the growth of one penaeid shrimp from the juvenile stage, forced by the food and the water temperature.

    The individual ingests food up to a maximum ration set by its biomass and the water temperature, assimilates its
    gut content, respires, and spawns, while its gonads grow and its carapace length follows von Bertalanffy's curve
    `L(t) = L_inf (1 - exp(-K t))` from zero, which nears its asymptote after six to eight months. The gut content
    settles near `I / A_e`, the ingestion over the assimilation efficiency.

    The coefficients are those of the listing of Bala et al. (2017). With them the respiration of a juvenile at 28 C,
    `respiration exp(0.07 T) (phi B)^0.185`, is about half its biomass per day, more than its maximum ration, so the
    total biomass declines slowly while the gonads and the length grow. The weight gain the source describes needs a
    lower `respiration` coefficient, such as 0.02.

    Args:
        gut:
            The initial gut content, in grams of dry weight.

        biomass:
            The initial total biomass, in grams of dry weight.

        ration:
            The factor of the maximum ration, lower for males.

        respiration:
            The coefficient of the weight-specific respiration, per day.

        L_inf:
            The asymptotic carapace length, in millimetres.

        K:
            The growth coefficient of the length, per day.

    Returns:
        system:
            The system, with the states `shrimp.gut`, `shrimp.biomass`, `shrimp.gonads`, and `shrimp.length`.

    Examples:
        >>> from skcomplex.systems.biology.ecology import penaeid_shrimp
        >>> penaeid_shrimp().elements[0].K
        0.013
    """
    return System(
        elements=[
            ShrimpElement(
                'shrimp',
                gut=gut,
                biomass=biomass,
                ration=ration,
                respiration=respiration,
                L_inf=L_inf,
                K=K,
            ),
        ],
    )

Components

Elements:

  • ShrimpElement, from Element
class ShrimpElement(Element):
    """Penaeid shrimp, an individual whose gut, biomass, gonads, and length grow on food at the water temperature.

    The shrimp ingests `I = R_max (1 - exp(-k F))` of the food `F`, with the maximum ration `R_max` the product of a
    table of its biomass, a table of the water temperature, and the factor `ration`. Its gut content `G` follows
    `dG/dt = I - A_e G`, and its total biomass `dB/dt = A_e G - M - S`, with the respiration `M = a exp(0.07 T) (phi
    B)^0.185 B` and the spawning `S = 9.3 L^2.8 E_w` of eggs of weight `E_w`. Its gonads grow as `dB_g/dt = GSI B`, and
    its carapace length follows von Bertalanffy, `dL/dt = K (L_inf - L)`. The food and the water temperature are the
    yearly series of the source, interpolated linearly in days.

    Args:
        label:
            The label of the shrimp.

        visual:
            How the element is drawn, or `None` for `default_visual_`.

        gut:
            The initial gut content, in grams of dry weight.

        biomass:
            The initial total biomass, in grams of dry weight.

        gonads:
            The initial reproductive biomass, in grams of dry weight.

        length:
            The initial carapace length, in millimetres.

        ration:
            The factor of the maximum ration.

        k:
            The consumption efficiency, per milligram of dry weight per square metre.

        assimilation:
            The assimilation efficiency of the gut content, per day.

        respiration:
            The coefficient of the weight-specific respiration, per day.

        phi:
            The conversion factor from dry to fresh weight.

        gsi:
            The gonadosomatic index, the growth of the gonads per unit biomass per day.

        egg_weight:
            The dry weight of one egg, in grams.

        L_inf:
            The asymptotic carapace length, in millimetres.

        K:
            The growth coefficient of the length, per day.

    Examples:
        >>> from skcomplex.systems.biology.ecology import ShrimpElement
        >>> ShrimpElement('shrimp').L_inf
        29.9
    """

    def __init__(
        self,
        label: str,
        visual: VisualSpec | None = None,
        *,
        gut: Annotated[float, StateSpec(domain=RealSet.closed_open(0, oo))] = 0.5,
        biomass: Annotated[float, StateSpec(domain=RealSet.closed_open(0, oo))] = 1.0,
        gonads: Annotated[float, StateSpec(domain=RealSet.closed_open(0, oo))] = 0.0001,
        length: Annotated[float, StateSpec(domain=RealSet.closed_open(0, oo))] = 0.0,
        ration: Annotated[float, ParameterSpec(domain=RealSet.open(0, oo))] = 2.5,
        k: Annotated[float, ParameterSpec(domain=RealSet.open(0, oo))] = 0.12,
        assimilation: Annotated[float, ParameterSpec(domain=RealSet.open(0, oo))] = 0.8,
        respiration: Annotated[float, ParameterSpec(domain=RealSet.closed_open(0, oo))] = 0.05,
        phi: Annotated[float, ParameterSpec(domain=RealSet.open(0, oo))] = 5.0,
        gsi: Annotated[float, ParameterSpec(domain=RealSet.closed_open(0, oo))] = 0.05,
        egg_weight: Annotated[float, ParameterSpec(domain=RealSet.closed_open(0, oo))] = 2.0e-6,
        L_inf: Annotated[float, ParameterSpec(domain=RealSet.open(0, oo))] = 29.9,
        K: Annotated[float, ParameterSpec(domain=RealSet.open(0, oo))] = 0.013,
    ) -> None:
        super().__init__(label, visual=visual)
        self.gut = gut
        self.biomass = biomass
        self.gonads = gonads
        self.length = length
        self.ration = ration
        self.k = k
        self.assimilation = assimilation
        self.respiration = respiration
        self.phi = phi
        self.gsi = gsi
        self.egg_weight = egg_weight
        self.L_inf = L_inf
        self.K = K

    def _get_laws(self, s: SimpleNamespace) -> list[BaseLaw]:
        """Return the ingestion, assimilation, respiration, spawning, gonad growth, and length growth.

        Args:
            s:
                The namespace of the symbols the laws can use.

        Returns:
            laws:
                The laws of the component.
        """
        food = series(s.t, DAYS, FOOD)
        temperature = series(s.t, DAYS, TEMPERATURE)
        max_ration = lookup(s.biomass, ALLOMETRY) * lookup(temperature, THERMAL) * s.ration
        ingestion = max_ration * (1 - exp(-s.k * food))
        assimilated = s.gut * s.assimilation
        respired = s.respiration * exp(0.07 * temperature) * (s.biomass * s.phi) ** 0.185 * s.biomass
        spawning = 9.3 * s.length**2.8 * s.egg_weight
        return [
            RateLaw(s.gut, ingestion - assimilated),
            RateLaw(s.biomass, assimilated - respired - spawning),
            RateLaw(s.gonads, s.biomass * s.gsi),
            RateLaw(s.length, s.K * (s.L_inf - s.length)),
        ]

Equations

shrimp.gut: diff(gut_shrimp(t), t) == -ration_shrimp*(e^(-k_shrimp*where(t < 0.0, 695.0, where(t < 175.0, where(t < 87.5, where(t < 29.2, 1.8835616438356164*t + 695.0, where(t < 58.3, 750.0, -0.684931506849315*t + 789.931506849315)), where(t < 117.0, -0.3389830508474576*t + 759.6610169491526, where(t < 146.0, -0.3448275862068966*t + 760.3448275862069, 710.0))), where(t < 263.0, where(t < 204.0, 0.8620689655172413*t + 559.1379310344828, where(t < 233.0, -1.7241379310344827*t + 1086.7241379310344, -1.8333333333333333*t + 1112.1666666666667)), where(t < 321.0, where(t < 292.0, 1.206896551724138*t + 312.58620689655174, 1.896551724137931*t + 111.20689655172418), where(t < 350.0, -0.3448275862068966*t + 830.6896551724138, 710.0)))))) - 1)*where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 25.0, 0.902, where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 28.5, where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 26.4, where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 25.7, 0.025714285714285762*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) + 0.259142857142856, 0.044285714285714206*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) - 0.21814285714285508), where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 27.1, 0.05571428571428554*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) - 0.5198571428571385, where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 27.8, 0.042857142857142934*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) - 0.17142857142857348, 0.057142857142857245*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) - 0.5685714285714314))), where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 30.6, where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 29.2, 0.028571428571428623*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) + 0.24571428571428422, where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 29.9, 1.08, 0.01428571428571424*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) + 0.6528571428571442)), where(where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) < 31.3, 0.014285714285714311*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8))))) + 0.6528571428571421, 1.1))))*where(biomass_shrimp(t) < 1.0, 0.15, where(biomass_shrimp(t) < 5.5, where(biomass_shrimp(t) < 2.8, where(biomass_shrimp(t) < 1.9, 0.10333333333333333*biomass_shrimp(t) + 0.04666666666666666, 0.09333333333333337*biomass_shrimp(t) + 0.06566666666666662), where(biomass_shrimp(t) < 3.7, 0.0733333333333333*biomass_shrimp(t) + 0.12166666666666676, where(biomass_shrimp(t) < 4.6, 0.09000000000000001*biomass_shrimp(t) + 0.05999999999999994, 0.0766666666666667*biomass_shrimp(t) + 0.12133333333333318))), where(biomass_shrimp(t) < 8.2, where(biomass_shrimp(t) < 6.4, 0.07999999999999992*biomass_shrimp(t) + 0.10300000000000048, where(biomass_shrimp(t) < 7.3, 0.05333333333333341*biomass_shrimp(t) + 0.2736666666666661, 0.049999999999999954*biomass_shrimp(t) + 0.2980000000000004)), where(biomass_shrimp(t) < 9.1, 0.030000000000000016*biomass_shrimp(t) + 0.46199999999999986, where(biomass_shrimp(t) < 10.0, 0.016666666666666677*biomass_shrimp(t) + 0.5833333333333333, 0.75))))) - assimilation_shrimp*gut_shrimp(t)
shrimp.biomass: diff(biomass_shrimp(t), t) == -9.3*egg_weight_shrimp*length_shrimp(t)^2.8 - (phi_shrimp*biomass_shrimp(t))^0.185*respiration_shrimp*biomass_shrimp(t)*e^(0.07*where(t < 0.0, 27.3, where(t < 175.0, where(t < 87.5, where(t < 29.2, 0.07534246575342463*t + 27.3, where(t < 58.3, 0.03436426116838488*t + 28.49656357388316, -0.136986301369863*t + 38.486301369863014)), where(t < 117.0, 0.027118644067796634*t + 24.127118644067796, where(t < 146.0, 0.05172413793103448*t + 21.248275862068965, 0.09310344827586205*t + 15.206896551724142))), where(t < 263.0, where(t < 204.0, -0.06896551724137931*t + 43.56896551724138, where(t < 233.0, -0.1275862068965517*t + 55.527586206896544, 0.05666666666666664*t + 12.596666666666673)), where(t < 321.0, where(t < 292.0, 0.01034482758620692*t + 24.77931034482758, 0.058620689655172385*t + 10.682758620689661), where(t < 350.0, 0.01034482758620692*t + 26.179310344827577, 29.8)))))) + assimilation_shrimp*gut_shrimp(t)
shrimp.gonads: diff(gonads_shrimp(t), t) == gsi_shrimp*biomass_shrimp(t)
shrimp.length: diff(length_shrimp(t), t) == K_shrimp*(L_inf_shrimp - length_shrimp(t))