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); } } }