public void Cal_Z_Data() { Z_Data = new ClsData(); for (double i = StartValue; i <= EndValue; i = i + StepValue) { Z_Data.AddData(i); } }
private void setFrequency() { Frequency.Clear(); switch (FreqBand) { case 1: for (int i = 1; i < 101; i++) { Frequency.AddData(i * 100); } limitfreq = 100; break; case 2: Frequency.AddData(16); Frequency.AddData(31.5); Frequency.AddData(63); Frequency.AddData(125); Frequency.AddData(250); Frequency.AddData(500); Frequency.AddData(1000); Frequency.AddData(2000); Frequency.AddData(4000); Frequency.AddData(8000); Frequency.AddData(10000); limitfreq = 11; break; default: Frequency.AddData(10); Frequency.AddData(12.5); Frequency.AddData(16); Frequency.AddData(20); Frequency.AddData(25); Frequency.AddData(31.5); Frequency.AddData(40); Frequency.AddData(50); Frequency.AddData(63); Frequency.AddData(80); Frequency.AddData(100); Frequency.AddData(125); Frequency.AddData(160); Frequency.AddData(200); Frequency.AddData(250); Frequency.AddData(315); Frequency.AddData(400); Frequency.AddData(500); Frequency.AddData(630); Frequency.AddData(800); Frequency.AddData(1000); Frequency.AddData(1250); Frequency.AddData(1600); Frequency.AddData(2000); Frequency.AddData(2500); Frequency.AddData(3150); Frequency.AddData(4000); Frequency.AddData(5000); Frequency.AddData(6300); Frequency.AddData(8000); Frequency.AddData(10000); limitfreq = 31; break; } }
public bool Calc() { MPAMaterial Mat; double IncAngleStart; double IncAngleEnd; int IncAngleCount; int k; RigidBacking.Clear(); AnechoicTermination.Clear(); TransmissionLoss.Clear(); TotalThickness = this.CalcThickness(); if (Incidence == 1) { IncAngleStart = 0.1 * Math.Pow(10, -10); IncAngleEnd = IncAngleStart; IncAngleCount = 1; } else { IncAngleStart = 2; IncAngleEnd = IncAngle; IncAngleCount = (int)(IncAngle / IncAngleStart); } setInitialData(); setFrequency(); double[,] Rigid = new double[limitfreq, IncAngleCount]; double[,] Anechoic = new double[limitfreq, IncAngleCount]; double[,] TL = new double[limitfreq, IncAngleCount]; for (int i = 0; i < limitfreq; i++) { double freq = Frequency.GetData(i); k = 0; for (double IncAngleTemp = IncAngleStart; IncAngleTemp <= IncAngleEnd; IncAngleTemp = IncAngleTemp + IncAngleStart) { m_tempOut = TMCalc.TMInit(); m_TM = m_tempOut[1]; m_Result = m_tempOut[2]; // 임시 루틴. //m_TM = TMCalc.TMCheck(); double theta = IncAngleTemp * Math.PI / 180; for (int jj = 0; jj < MatCollection.Count; jj++) { Mat = (MPAMaterial)MatCollection[jj]; switch (Mat.MID) { case 1: m_TM = TMCalc.TMAir(m_c, m_Densityo, freq, Mat.Thick, theta); break; case 2: m_TM = TMCalc.TMPanel(m_c, Mat.BulkDens, Mat.Ymodulus, freq, Mat.Thick, Mat.PoissionR, theta); break; case 3: m_TM = TMCalc.TMImperMemb(m_c, Mat.BulkDens, freq, Mat.Thick, theta); break; case 4: m_TM = TMCalc.TMImperMemb(m_c, Mat.BulkDens, freq, Mat.Thick, theta); break; case 5: m_TM = TMCalc.TMLimp(Mat.BulkDens, m_c, m_Densityo, Mat.FlowRes, freq, Mat.Porosity, m_HeatRatio, m_ItaAir, Mat.Thick, m_Npr, m_P0, Mat.SFactor, Mat.ThermalCL / 1000000, theta, Mat.ViscousCL / 1000000); break; case 6: m_TM = TMCalc.TMRigid(Mat.BulkDens, m_c, m_Densityo, Mat.FlowRes, freq, Mat.Porosity, m_HeatRatio, m_ItaAir, Mat.Thick, m_Npr, m_P0, Mat.SFactor, Mat.ThermalCL / 1000000, theta, Mat.ViscousCL / 1000000); break; case 7: m_TM = TMCalc.TMElastic(Mat.BulkDens, m_c, m_Densityo, Mat.Ymodulus, Mat.FlowRes, freq, Mat.Porosity, m_HeatRatio, m_ItaAir, Mat.Thick, Mat.LossFactor, m_Npr, Mat.PoissionR, Mat.SFactor, Mat.ThermalCL / 1000000, theta, Mat.ViscousCL / 1000000); break; case 8: m_TM = TMCalc.TMPanelElastic(Mat.BulkDens, m_c, m_Densityo, Mat.DensityP1, Mat.Ymodulus, Mat.EmP1, Mat.FlowRes, freq, Mat.Porosity, m_HeatRatio, Mat.HP1, m_ItaAir, Mat.Thick, Mat.LossFactor, m_Npr, Mat.PoissionR, Mat.PRatioP1, Mat.SFactor, Mat.ThermalCL / 1000000, theta, Mat.ViscousCL / 1000000); break; case 9: m_TM = TMCalc.TMElasticPanel(Mat.BulkDens, m_c, m_Densityo, Mat.DensityP2, Mat.Ymodulus, Mat.EmP2, Mat.FlowRes, freq, Mat.Porosity, m_HeatRatio, Mat.HP2 / 1000, Mat.Thick, Mat.LossFactor, m_Npr, Mat.PoissionR, Mat.PRatioP2, Mat.SFactor, Mat.ThermalCL / 1000000, theta, Mat.ViscousCL / 1000000); break; default: m_TM = TMCalc.TMPanelElasticPanel(Mat.BulkDens, m_c, m_Densityo, Mat.DensityP1, Mat.DensityP2, Mat.Ymodulus, Mat.EmP1, Mat.EmP2, Mat.FlowRes, freq, Mat.Porosity, m_HeatRatio, Mat.HP1, Mat.HP2, m_ItaAir, Mat.Thick, Mat.LossFactor, m_Npr, Mat.PoissionR, Mat.PRatioP1, Mat.PRatioP2, Mat.SFactor, Mat.ThermalCL / 1000000, theta, Mat.ViscousCL / 1000000); break; } // 임시 루틴. //TMCalc.TMCheck(); m_Result = TMCalc.TMMul(m_TM, m_Result); // 임시 루틴. //TMCalc.TMCheck(); } m_Out = TMCalc.TMCalc(freq, theta, TotalThickness); // 임시 루틴. //TMCalc.TMCheck(); if (Incidence == 1) { RigidBacking.AddData(double.Parse(m_Out[1].ToString())); AnechoicTermination.AddData(double.Parse(m_Out[2].ToString())); TransmissionLoss.AddData(10 * Math.Log10(1 / double.Parse(m_Out[3].ToString()))); } else { Rigid[i, k] = 2 * double.Parse(m_Out[1].ToString()) * Math.Sin(theta) * Math.Cos(theta); Anechoic[i, k] = 2 * double.Parse(m_Out[2].ToString()) * Math.Sin(theta) * Math.Cos(theta); TL[i, k] = 2 * double.Parse(m_Out[3].ToString()) * Math.Sin(theta) * Math.Cos(theta); } k = k + 1; } } if (Incidence != 1) { double width = IncAngleStart * Math.PI / 180; for (int i = 0; i < limitfreq; i++) { double freq = Frequency.GetData(i); double RigidLast = 0; double AnechoicLast = 0; double TLLast = 0; for (int j = 0; j < (IncAngleCount - 2); j = j + 2) { RigidLast = RigidLast + (width / 3) * (Rigid[i, j] + 4 * Rigid[i, j + 1] + Rigid[i, j + 2]); AnechoicLast = AnechoicLast + (width / 3) * (Anechoic[i, j] + 4 * Anechoic[i, j + 1] + Anechoic[i, j + 2]); TLLast = TLLast + (width / 3) * (TL[i, j] + 4 * TL[i, j + 1] + TL[i, j + 2]); } RigidBacking.AddData(RigidLast); AnechoicTermination.AddData(AnechoicLast); TransmissionLoss.AddData(10 * Math.Log10(1 / TLLast)); } } return(true); }
public void Cal_Z_Data() { Z_Data = new ClsData(); for(double i = StartValue ; i <= EndValue ; i = i + StepValue) { Z_Data.AddData(i); } }
public bool Calc() { double IncAngleStart; double IncAngleEnd; int IncAngleCount; int k; Rgraph_RB = new ClsData(); Rgraph_AT = new ClsData(); Rgraph_TL = new ClsData(); if (Incidence == 1) { IncAngleStart = 0.1*Math.Pow(10,-10); IncAngleEnd = IncAngleStart; IncAngleCount = 1; } else { IncAngleStart = 0.5; IncAngleEnd = IncAngle; IncAngleCount = (int)(IncAngle / IncAngleStart); } setInitialData(); setFrequency(); double[,] Rigid= new double[limitfreq, IncAngleCount]; double[,] Anechoic= new double[limitfreq, IncAngleCount]; double[,] TL= new double[limitfreq, IncAngleCount]; for (int i=0; i<limitfreq;i++) { double freq=Frequency.GetData(i); k = 0; for (double IncAngleTemp = IncAngleStart;IncAngleTemp <= IncAngleEnd; IncAngleTemp = IncAngleTemp + IncAngleStart) { m_tempOut = TMCalc.TMInit(); m_TM = m_tempOut[1]; m_Result = m_tempOut[2]; double theta=IncAngleTemp*Math.PI/180; switch (MID) { case 5: m_TM = TMCalc.TMLimp(BulkDens, m_c,m_Densityo,FlowRes, freq, Porosity, m_HeatRatio,m_ItaAir,Thick,m_Npr,m_P0,SFactor,ThermalCL * 0.000001, theta,ViscousCL * 0.000001); break; case 6: m_TM = TMCalc.TMRigid(BulkDens,m_c,m_Densityo,FlowRes,freq,Porosity,m_HeatRatio,m_ItaAir,Thick,m_Npr,m_P0,SFactor,ThermalCL * 0.000001,theta,ViscousCL * 0.000001); break; case 7: m_TM = TMCalc.TMElastic(BulkDens, m_c, m_Densityo, Ymodulus, FlowRes, freq, Porosity, m_HeatRatio, m_ItaAir, Thick, LossFactor, m_Npr, PoissionR, SFactor, ThermalCL * 0.000001, theta, ViscousCL * 0.000001); break; } m_Result = TMCalc.TMMul(m_TM, m_Result); m_Out = TMCalc.TMCalc(freq, theta, Thick); if (Incidence == 1) { Rgraph_RB.AddData(double.Parse(m_Out[1].ToString())); Rgraph_AT.AddData(double.Parse(m_Out[2].ToString())); Rgraph_TL.AddData(10 * Math.Log10(1 / double.Parse(m_Out[3].ToString()))); } else { Rigid[i, k] = 2 * double.Parse(m_Out[1].ToString()) * Math.Sin(theta) * Math.Cos(theta); Anechoic[i, k] = 2 * double.Parse(m_Out[2].ToString()) * Math.Sin(theta) * Math.Cos(theta); TL[i, k] = 2 * double.Parse(m_Out[3].ToString()) * Math.Sin(theta) * Math.Cos(theta); } k = k+1; } } if (Incidence != 1) { double width = IncAngleStart*Math.PI/180; for (int i=0; i<limitfreq;i++) { double freq=Frequency.GetData(i); double RigidLast = 0; double AnechoicLast = 0; double TLLast = 0; for (int j=0;j<(IncAngleCount-2);j=j+2) { RigidLast = RigidLast + (width/3)*(Rigid[i,j]+4*Rigid[i,j+1]+Rigid[i,j+2]); AnechoicLast = AnechoicLast + (width/3)*(Anechoic[i,j]+4*Anechoic[i,j+1]+Anechoic[i,j+2]); TLLast = TLLast + (width/3)*(TL[i,j]+4*TL[i,j+1]+TL[i,j+2]); } Rgraph_RB.AddData(RigidLast); Rgraph_AT.AddData(AnechoicLast); Rgraph_TL.AddData(10*Math.Log10(1/TLLast)); } } return true; }
public bool Calc() { double IncAngleStart; double IncAngleEnd; int IncAngleCount; int k; Rgraph_RB = new ClsData(); Rgraph_AT = new ClsData(); Rgraph_TL = new ClsData(); if (Incidence == 1) { IncAngleStart = 0.1 * Math.Pow(10, -10); IncAngleEnd = IncAngleStart; IncAngleCount = 1; } else { IncAngleStart = 0.5; IncAngleEnd = IncAngle; IncAngleCount = (int)(IncAngle / IncAngleStart); } setInitialData(); setFrequency(); double[,] Rigid = new double[limitfreq, IncAngleCount]; double[,] Anechoic = new double[limitfreq, IncAngleCount]; double[,] TL = new double[limitfreq, IncAngleCount]; for (int i = 0; i < limitfreq; i++) { double freq = Frequency.GetData(i); k = 0; for (double IncAngleTemp = IncAngleStart; IncAngleTemp <= IncAngleEnd; IncAngleTemp = IncAngleTemp + IncAngleStart) { m_tempOut = TMCalc.TMInit(); m_TM = m_tempOut[1]; m_Result = m_tempOut[2]; double theta = IncAngleTemp * Math.PI / 180; switch (MID) { case 5: m_TM = TMCalc.TMLimp(BulkDens, m_c, m_Densityo, FlowRes, freq, Porosity, m_HeatRatio, m_ItaAir, Thick, m_Npr, m_P0, SFactor, ThermalCL * 0.000001, theta, ViscousCL * 0.000001); break; case 6: m_TM = TMCalc.TMRigid(BulkDens, m_c, m_Densityo, FlowRes, freq, Porosity, m_HeatRatio, m_ItaAir, Thick, m_Npr, m_P0, SFactor, ThermalCL * 0.000001, theta, ViscousCL * 0.000001); break; case 7: m_TM = TMCalc.TMElastic(BulkDens, m_c, m_Densityo, Ymodulus, FlowRes, freq, Porosity, m_HeatRatio, m_ItaAir, Thick, LossFactor, m_Npr, PoissionR, SFactor, ThermalCL * 0.000001, theta, ViscousCL * 0.000001); break; } m_Result = TMCalc.TMMul(m_TM, m_Result); m_Out = TMCalc.TMCalc(freq, theta, Thick); if (Incidence == 1) { Rgraph_RB.AddData(double.Parse(m_Out[1].ToString())); Rgraph_AT.AddData(double.Parse(m_Out[2].ToString())); Rgraph_TL.AddData(10 * Math.Log10(1 / double.Parse(m_Out[3].ToString()))); } else { Rigid[i, k] = 2 * double.Parse(m_Out[1].ToString()) * Math.Sin(theta) * Math.Cos(theta); Anechoic[i, k] = 2 * double.Parse(m_Out[2].ToString()) * Math.Sin(theta) * Math.Cos(theta); TL[i, k] = 2 * double.Parse(m_Out[3].ToString()) * Math.Sin(theta) * Math.Cos(theta); } k = k + 1; } } if (Incidence != 1) { double width = IncAngleStart * Math.PI / 180; for (int i = 0; i < limitfreq; i++) { double freq = Frequency.GetData(i); double RigidLast = 0; double AnechoicLast = 0; double TLLast = 0; for (int j = 0; j < (IncAngleCount - 2); j = j + 2) { RigidLast = RigidLast + (width / 3) * (Rigid[i, j] + 4 * Rigid[i, j + 1] + Rigid[i, j + 2]); AnechoicLast = AnechoicLast + (width / 3) * (Anechoic[i, j] + 4 * Anechoic[i, j + 1] + Anechoic[i, j + 2]); TLLast = TLLast + (width / 3) * (TL[i, j] + 4 * TL[i, j + 1] + TL[i, j + 2]); } Rgraph_RB.AddData(RigidLast); Rgraph_AT.AddData(AnechoicLast); Rgraph_TL.AddData(10 * Math.Log10(1 / TLLast)); } } return(true); }