Files
CellSimulation/BaseCellSimulation/Membrane.cs
T
WyanMueller d2e409d10f InitalCommit
2025-11-16 10:30:26 +01:00

71 lines
2.2 KiB
C#

using BaseCellSimulation.Enzyms;
using BaseCellSimulation.Enzyms.Membrane;
using BaseCellSimulation.Enzyms.Membrane.GLUT;
namespace BaseCellSimulation
{
/// <summary>
/// Cell membrane small leakage and passive disposal of waste
/// </summary>
/// <param name="cellname"></param>
/// <param name="glucoseImportRate"></param>
/// <param name="oxygenImportRate"></param>
/// <param name="wasteOuttakeRate"></param>
public class Membrane : Organell
{
public readonly List<MembranEnzyme> enzyms = new List<MembranEnzyme>();
public readonly List<GLUT1> glutTransporters = new List<GLUT1>();
private readonly string name;
public Membrane() : this("Membrane") { }
public Membrane(string cellname)
{
this.name = cellname;
enzyms.Add(new KLeakChannel());
enzyms.Add(new MCT());
enzyms.Add(new NaK_ATPase());
enzyms.Add(new NCX());
enzyms.Add(new PMCA());
// Add GLUT transporters
glutTransporters.Add(new GLUT1());
}
public string getName()
{
return name;
}
public void applyChanges(CellRessources res, double dt)
{
foreach (MembranEnzyme enzyme in enzyms)
{
enzyme.ApplyChanges(res, dt);
}
foreach (GLUT1 glut in glutTransporters)
{
glut.ApplyChanges(res, dt);
}
// --- 5. Kleine Verluste anderer Stoffe (Diffusionslecks) ---
res.Res.Carbon.Glucose = Math.Max(0, res.Res.Carbon.Glucose - 0.001 * dt);
res.Res.Oxygen = Math.Max(0, res.Res.Oxygen - 0.001 * dt);
}
public void calculateRate(CellRessources res)
{
foreach (MembranEnzyme enzyme in enzyms)
{
double gradient = enzyme.CalculateGradient(res);
enzyme.ComputeRate(gradient, res.Env);
}
double glutGradient = glutTransporters[0].CalculateGradient(res);
foreach (GLUT1 glut in glutTransporters)
{
glut.ComputeRate(glutGradient, res.Env);
}
}
}
}