71 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|