56 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|