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); } } } }