51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BaseCellSimulation.Enzyms.Cytosol
|
|
{
|
|
public class NucleosideDiphosphateKinase : InternalEnzym
|
|
{
|
|
private const double k_eq = 0.25; // 0.25 / s → recht schnell, da NDK sehr aktiv ist
|
|
|
|
public NucleosideDiphosphateKinase()
|
|
{
|
|
Km = 0.05; // unspezifisch, da das Enzym viele Nukleotide akzeptiert
|
|
Vmax = 1.0; // fiktiver Maximalumsatz (mmol/L·s)
|
|
}
|
|
|
|
public override void ApplyChanges(CellRessources res, double dt)
|
|
{
|
|
var energy = res.Res.Energy;
|
|
|
|
// --- Austausch zwischen ATP und GTP ---
|
|
double delta = (energy.ATP - energy.GTP) * k_eq * dt;
|
|
|
|
if (Math.Abs(delta) < 1e-9)
|
|
return;
|
|
|
|
// Begrenzung: kein negativer Pool
|
|
if (delta > 0)
|
|
{
|
|
delta = Math.Min(delta, energy.ATP);
|
|
}
|
|
else
|
|
{
|
|
delta = Math.Max(delta, -energy.GTP);
|
|
}
|
|
|
|
// Umsetzung: ATP -> GTP oder umgekehrt
|
|
energy.ATP -= delta;
|
|
energy.GTP += delta;
|
|
}
|
|
|
|
public override void ComputeRate(Resources res)
|
|
{
|
|
double diff = Math.Abs(res.Energy.ATP - res.Energy.GTP);
|
|
Michaelis_Menten(diff);
|
|
}
|
|
}
|
|
}
|