Files
WyanMueller d2e409d10f InitalCommit
2025-11-16 10:30:26 +01:00

56 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Membrane
{
/// <summary>
/// Na+/Ca2+ Exchanger (3 Na⁺ in / 1 Ca²⁺ out)
/// Einfaches Michaelis-Menten-basiertes Modell mit Gradienten
/// </summary>
public class NCX : MembranEnzyme
{
public double NaStoich = 3.0; // Na⁺ pro Ca²⁺
public double CaStoich = 1.0;
/// <summary>
/// Berechnet die Transport-Rate abhängig von zellinternen und externen Ionenkonzentrationen
/// </summary>
public override void ComputeRate(double gradient, EnviromentState env)
{
// Michaelis-Menten-ähnliche Sättigung
rate = Vmax * gradient / (Km + Math.Abs(gradient));
}
/// <summary>
/// Wendet den Transport auf die Zellressourcen an
/// </summary>
public override void ApplyChanges(CellRessources res, double dt)
{
double flux = rate * dt;
// Na+ in die Zelle
res.Res.Ions.Na += NaStoich * flux;
res.Env.Na -= NaStoich * flux;
// Ca2+ aus der Zelle
res.Res.Ca.CytosolicCa -= CaStoich * flux;
res.Env.Ca += CaStoich * flux;
}
public override double CalculateGradient(CellRessources res)
{
// Gradienten: innen - außen
double naGradient = res.Res.Ions.Na - res.Env.Na; // mM
double caGradient = res.Res.Ca.CytosolicCa - res.Env.Ca; // mM
// Richtung: positiv = Ca raus / Na rein
return (naGradient / NaStoich) - (caGradient / CaStoich);
}
}
}