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}";
        }
Exemple #3
0
        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}";
        }