using BaseCellSimulation.Enzyms;
using BaseCellSimulation.Enzyms.Membrane;
using BaseCellSimulation.Enzyms.Membrane.GLUT;
namespace BaseCellSimulation
{
///
/// Cell membrane small leakage and passive disposal of waste
///
///
///
///
///
public class Membrane : Organell
{
public readonly List enzyms = new List();
public readonly List glutTransporters = new List();
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);
}
}
}
}