public void BloodIn(double dvol, BloodCompartment compFrom) { vol_current += dvol; if (vol_current < 0) { vol_current = 0.01; } // convert from ml to litres double vol_current_l = vol_current / 1000.0; double dvol_l = dvol / 1000.0; // calculate the change in oxygen concentration double o2_infow = (compFrom.to2 - to2) * dvol_l; to2 = (to2 * vol_current_l + o2_infow) / vol_current_l; if (to2 < 0) { to2 = 0; } // calculate the change in carbon dioxide concentration double co2_infow = (compFrom.tco2 - tco2) * dvol_l; tco2 = (tco2 * vol_current_l + co2_infow) / vol_current_l; if (tco2 < 0) { tco2 = 0; } }
public void InitializeExchanger(Model cm) { string[] comps = compartments.Split("_"); comp_blood_name = comps[0]; comp_gas_name = comps[1]; currentModel = cm; foreach (BloodCompartment blood_comp in currentModel.modelDefinition.blood_compartments) { if (blood_comp.name == comp_blood_name) { comp_blood = blood_comp; } } foreach (GasCompartment gas_comp in currentModel.modelDefinition.gas_compartments) { if (gas_comp.name == comp_gas_name) { comp_gas = gas_comp; } } currentModel.modelInterface.StatusMessage = $"Initialized gas exchange unit {name} : {comp_blood.name} to {comp_gas.name}"; }
public void InitBloodConnector(Model cm) { // find the two bloodcompartment names which this connector connects string[] comps = compartments.Split("_"); comp1_name = comps[0]; comp2_name = comps[1]; // store reference to the model currentModel = cm; // find the blood compartments which are connected by this connector foreach (BloodCompartment comp in currentModel.modelDefinition.blood_compartments) { if (comp.name == comp1_name) { comp1 = comp; } if (comp.name == comp2_name) { comp2 = comp; } } currentModel.modelInterface.StatusMessage = $"Initialized blood compartment connector {name} by connecting {comp1.name} to {comp2.name}"; }
public void InitializeDiffusor(Model cm) { string[] comps = compartments.Split("_"); comp1_name = comps[0]; comp2_name = comps[1]; currentModel = cm; foreach (BloodCompartment blood_comp in currentModel.modelDefinition.blood_compartments) { if (blood_comp.name == comp1_name) { comp1_blood = blood_comp; } if (blood_comp.name == comp2_name) { comp2_blood = blood_comp; } } foreach (GasCompartment gas_comp in currentModel.modelDefinition.gas_compartments) { if (gas_comp.name == comp1_name) { comp1_gas = gas_comp; } if (gas_comp.name == comp2_name) { comp2_gas = gas_comp; } } currentModel.modelInterface.StatusMessage = $"Initialized diffusor {name} : compartment {comp1_name} to compartment {comp2_name}"; }