private void Resistivity_ValueChanged(object sender, EventArgs e) { if (Sigma.Value < 7000) { Resistivity_Feedback.Text = "i.e. Polyfill"; Porosity_Percent.Value = (decimal)99.7; } else if (Sigma.Value < 15000) { Resistivity_Feedback.Text = "i.e. Melamine Foam"; //11 [kg/cu m] / 1570 [kg/cu m] Porosity_Percent.Value = (decimal)99.3; } else if (Sigma.Value < 30000) { Resistivity_Feedback.Text = "i.e. Mineral Wool (45 kg/m^3)"; Porosity_Percent.Value = (decimal)98.4; } else if (Sigma.Value < 65000) { Resistivity_Feedback.Text = "i.e. Mineral Wool (90 kg/m^3)"; Porosity_Percent.Value = (decimal)96.8; } else if (Sigma.Value < 100000) { Resistivity_Feedback.Text = "i.e. Mineral Wool (145 kg/m^3)"; Porosity_Percent.Value = (decimal)95.2; } else { Resistivity_Feedback.Text = "???"; Porosity_Percent.Value = (decimal)95.2; } if (LayerList.SelectedIndex < 0) { return; } ABS_Layer L = (LayerList.Items[LayerList.SelectedIndex] as ABS_Layer); L.Flow_Resist = (double)Sigma.Value; L.porosity = (double)Porosity_Percent.Value / 100; LayerList.Items[LayerList.SelectedIndex] = L; Update_Graphs(); }
private void LayerList_SelectedIndexChanged(object sender, EventArgs e) { //Tell the interface that we have selected a material from the list, so that it doesn't update the graph, as the material settings populate. indexchanged = true; if (LayerList.SelectedIndex < 0) { return; } ABS_Layer L = (LayerList.Items[LayerList.SelectedIndex] as ABS_Layer); switch (L.T) { case ABS_Layer.LayerType.AirSpace: Material_Type.SelectedIndex = 0; break; case ABS_Layer.LayerType.BiotPorousAbsorber_Limp: Material_Type.SelectedIndex = 1; break; case ABS_Layer.LayerType.PorousDB: Material_Type.SelectedIndex = 2; break; case ABS_Layer.LayerType.PorousCA: Material_Type.SelectedIndex = 3; break; case ABS_Layer.LayerType.PorousM: Material_Type.SelectedIndex = 4; break; case ABS_Layer.LayerType.SolidPlate: Material_Type.SelectedIndex = 5; break; case ABS_Layer.LayerType.CircularPerforations: Material_Type.SelectedIndex = 8; break; case ABS_Layer.LayerType.SquarePerforations: Material_Type.SelectedIndex = 9; break; case ABS_Layer.LayerType.Perforated_Modal: Material_Type.SelectedIndex = 6; break; case ABS_Layer.LayerType.Slotted_Modal: Material_Type.SelectedIndex = 7; break; case ABS_Layer.LayerType.MicroPerforated: Material_Type.SelectedIndex = 12; break; case ABS_Layer.LayerType.Microslit: Material_Type.SelectedIndex = 11; break; case ABS_Layer.LayerType.Slots: Material_Type.SelectedIndex = 10; break; default: return; } depth.Value = (decimal)L.depth * 1000; pitch.Value = (decimal)L.pitch * 1000; diameter.Value = (decimal)L.width * 1000; Porosity_Percent.Value = (decimal)L.porosity * 100; Sigma.Value = (decimal)L.Flow_Resist; indexchanged = false; //Done Loading material. Updating may continue. }
private void Add_Click(object sender, EventArgs e) { if (Material_Type.SelectedIndex < 0) { return; } switch (Material_Type.SelectedIndex) { case 0: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.AirSpace, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 1: LayerList.Items.Add(ABS_Layer.CreateBiot(true, (double)depth.Value / 1000, (double)Solid_Density.Value, (double)YoungsModulus.Value * 1E9, (double)PoissonsRatio.Value, (double)SoundSpeed.Value, (double)Tortuosity.Value, (double)Sigma.Value, (double)Porosity_Percent.Value / 100, (double)ViscousCharacteristicLength.Value, (double)ThermalPermeability.Value)); break; case 2: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.PorousDB, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 3: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.PorousCA, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 4: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.PorousM, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 5: LayerList.Items.Add(ABS_Layer.CreateSolid((double)depth.Value / 1000, (double)Solid_Density.Value, (double)YoungsModulus.Value * 1E9, (double)PoissonsRatio.Value)); break; case 6: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.Perforated_Modal, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 7: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.Slotted_Modal, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 8: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.CircularPerforations, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 9: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.SquarePerforations, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 10: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.Slots, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 11: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.Microslit, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; case 12: LayerList.Items.Add(new ABS_Layer(ABS_Layer.LayerType.MicroPerforated, (double)depth.Value / 1000, (double)pitch.Value / 1000, (double)diameter.Value / 1000, (double)Sigma.Value, (double)Porosity_Percent.Value / 100)); break; } Update_Graphs(); }
private void param_ValueChanged(object sender, EventArgs e) { if (indexchanged == true) { return; } if (LayerList.SelectedIndex < 0) { return; } ABS_Layer L = (LayerList.Items[LayerList.SelectedIndex] as ABS_Layer); switch (Material_Type.SelectedIndex) { case 0: if (L.T != ABS_Layer.LayerType.AirSpace) { return; } break; case 1: if (L.T != ABS_Layer.LayerType.BiotPorousAbsorber_Limp) { return; } break; case 2: if (L.T != ABS_Layer.LayerType.PorousDB) { return; } break; case 3: if (L.T != ABS_Layer.LayerType.PorousCA) { return; } break; case 4: if (L.T != ABS_Layer.LayerType.PorousM) { return; } break; case 5: if (L.T != ABS_Layer.LayerType.Perforated_Modal) { return; } break; case 6: if (L.T != ABS_Layer.LayerType.Slotted_Modal) { return; } break; case 7: if (L.T != ABS_Layer.LayerType.SquarePerforations) { return; } break; case 8: if (L.T != ABS_Layer.LayerType.CircularPerforations) { return; } break; case 9: if (L.T != ABS_Layer.LayerType.Slots) { return; } break; case 10: if (L.T != ABS_Layer.LayerType.Microslit) { return; } break; case 11: if (L.T != ABS_Layer.LayerType.MicroPerforated) { return; } break; } L.Flow_Resist = (double)Sigma.Value; L.depth = (double)depth.Value / 1000; L.pitch = (double)pitch.Value / 1000; L.width = (double)diameter.Value / 1000; L.porosity = (double)Porosity_Percent.Value / 100; L.PoissonsRatio = (double)PoissonsRatio.Value; L.Thermal_Permeability = (double)ThermalPermeability.Value; L.YoungsModulus = (double)YoungsModulus.Value; L.Viscous_Characteristic_Length = (double)ViscousCharacteristicLength.Value; L.density = (double)Solid_Density.Value; L.tortuosity = (double)Tortuosity.Value; L.SpeedOfSound = (double)SoundSpeed.Value; LayerList.Items[LayerList.SelectedIndex] = L; Update_Graphs(); }