Beispiel #1
0
        public void Cal_Z_Data()
        {
            Z_Data = new ClsData();

            for (double i = StartValue; i <= EndValue; i = i + StepValue)
            {
                Z_Data.AddData(i);
            }
        }
Beispiel #2
0
        public bool Calc()
        {
            if (EstData.Count > 0)
            {
                int DataCount = EstData.Count;
                for (int i = 0; i < DataCount; i++)
                {
                    ((MPEData)EstData[i]).Calc();

                    Thickness   = Thickness + ((MPEData)EstData[i]).Thickness;
                    BulkDensity = BulkDensity + ((MPEData)EstData[i]).BulkDensity;
                    FResist     = FResist + ((MPEData)EstData[i]).FResist;
                    SFactor     = SFactor + ((MPEData)EstData[i]).SFactor;
                    Porosity    = Porosity + ((MPEData)EstData[i]).Porosity;
                    ViscousCL   = ViscousCL + ((MPEData)EstData[i]).ViscousCL;
                    ThermalCL   = ThermalCL + ((MPEData)EstData[i]).ThermalCL;
                    Ymodulus    = Ymodulus + ((MPEData)EstData[i]).Ymodulus;
                    PoissonR    = PoissonR + ((MPEData)EstData[i]).PoissonR;
                    LossFactor  = LossFactor + ((MPEData)EstData[i]).LossFactor;

                    MAbsorption.Sum(((MPEData)EstData[i]).MAbsorption);
                    MRealSurfaceImpedance.Sum(((MPEData)EstData[i]).MRealSurfaceImpedance);
                    MImagSurfaceImpedance.Sum(((MPEData)EstData[i]).MImagSurfaceImpedance);
                    CAbsorption.Sum(((MPEData)EstData[i]).CAbsorption);
                    CRealSurfaceImpedance.Sum(((MPEData)EstData[i]).CRealSurfaceImpedance);
                    CImagSurfaceImpedance.Sum(((MPEData)EstData[i]).CImagSurfaceImpedance);
                }

                Thickness   = Thickness / DataCount;
                BulkDensity = BulkDensity / DataCount;
                FResist     = FResist / DataCount;
                SFactor     = SFactor / DataCount;
                Porosity    = Porosity / DataCount;
                ViscousCL   = ViscousCL * 1000000 / DataCount;
                ThermalCL   = ThermalCL * 1000000 / DataCount;
                Ymodulus    = Ymodulus / DataCount;
                PoissonR    = PoissonR / DataCount;
                LossFactor  = LossFactor / DataCount;

                Frequency = ((MPEData)EstData[0]).Frequency;
                MAbsorption.Divide(DataCount);
                MRealSurfaceImpedance.Divide(DataCount);
                MImagSurfaceImpedance.Divide(DataCount);
                CAbsorption.Divide(DataCount);
                CRealSurfaceImpedance.Divide(DataCount);
                CImagSurfaceImpedance.Divide(DataCount);


                return(true);
            }
            else
            {
                bool result = false;

                return(result);
            }
        }
Beispiel #3
0
 public void Temp()
 {
     Frequency             = ((MPEData)EstData[0]).Frequency;
     MAbsorption           = ((MPEData)EstData[0]).MAbsorption;
     MRealSurfaceImpedance = ((MPEData)EstData[0]).MRealSurfaceImpedance;
     MImagSurfaceImpedance = ((MPEData)EstData[0]).MImagSurfaceImpedance;
     CAbsorption           = ((MPEData)EstData[0]).CAbsorption;
     CRealSurfaceImpedance = ((MPEData)EstData[0]).CRealSurfaceImpedance;
     CImagSurfaceImpedance = ((MPEData)EstData[0]).CImagSurfaceImpedance;
 }
Beispiel #4
0
        public SAClass()
        {
            //
            // TODO: 여기에 생성자 논리를 추가합니다.
            //
            Frequency = new ClsData();

            Sgraph = new ArrayList();             // List of ClsData
            TMCalc = new TM.TMclassClass();
        }
Beispiel #5
0
        public MPALayer()
        {
            //
            // TODO: ���⿡ ������ ����� �߰��մϴ�.
            //
            MatCollection = new ArrayList();

            Frequency = new ClsData();
            RigidBacking = new ClsData();
            AnechoicTermination = new ClsData();
            TransmissionLoss = new ClsData();
            TMCalc = new TM.TMclassClass();
        }
Beispiel #6
0
        public MPALayer()
        {
            //
            // TODO: 여기에 생성자 논리를 추가합니다.
            //
            MatCollection = new ArrayList();

            Frequency           = new ClsData();
            RigidBacking        = new ClsData();
            AnechoicTermination = new ClsData();
            TransmissionLoss    = new ClsData();
            TMCalc = new TM.TMclassClass();
        }
Beispiel #7
0
        public void Sum(ClsData NewData)
        {
            if (Data.Count == 0)
            {
                for (int i = 0; i < NewData.GetCount(); i++)
                {
                    Data.Add((double)0.0);
                }
            }

            for (int i = 0; i < Data.Count; i++)
            {
                Data[i] = (double)Data[i] + NewData.GetData(i);
            }
        }
Beispiel #8
0
        public void Sum(ClsData NewData)
        {
            if (Data.Count == 0)
            {
                for (int i=0;i<NewData.GetCount();i++)
                {
                    Data.Add((double)0.0);
                }
            }

            for (int i=0;i<Data.Count;i++)
            {
                Data[i] = (double)Data[i] + NewData.GetData(i);
            }
        }
Beispiel #9
0
        public MPEClass()
        {
            //
            // TODO: 여기에 생성자 논리를 추가합니다.
            //
            EstData = new ArrayList();

            Frequency             = new ClsData();
            MAbsorption           = new ClsData();
            MRealSurfaceImpedance = new ClsData();
            MImagSurfaceImpedance = new ClsData();
            CAbsorption           = new ClsData();
            CRealSurfaceImpedance = new ClsData();
            CImagSurfaceImpedance = new ClsData();
        }
Beispiel #10
0
        public MPEClass()
        {
            //
            // TODO: ���⿡ ������ ����� �߰��մϴ�.
            //
            EstData = new ArrayList();

            Frequency = new ClsData();
            MAbsorption = new ClsData();
            MRealSurfaceImpedance = new ClsData();
            MImagSurfaceImpedance = new ClsData();
            CAbsorption = new ClsData();
            CRealSurfaceImpedance = new ClsData();
            CImagSurfaceImpedance = new ClsData();
        }
Beispiel #11
0
        public bool InitCalc()
        {
            setInitialData();
            setFrequency();
            Calc();

            switch (GraphType)
            {
            case 1:
                Igraph = Rgraph_TL;
                break;

            case 2:
                Igraph = Rgraph_RB;
                break;

            default:
                Igraph = Rgraph_AT;
                break;
            }
            return(true);
        }
Beispiel #12
0
        public bool InitCalc()
        {
            setInitialData();
            setFrequency();
            Calc();

            switch (GraphType)
            {
                case 1:
                    Igraph = Rgraph_TL;
                    break;
                case 2:
                    Igraph = Rgraph_RB;
                    break;
                default:
                    Igraph = Rgraph_AT;
                    break;
            }
            return true;
        }
Beispiel #13
0
        public bool Calc()
        {
            if (EstData.Count > 0)
            {
                int DataCount =EstData.Count;
                for (int i=0;i<DataCount;i++)
                {
                    ((MPEData)EstData[i]).Calc();

                    Thickness = Thickness + ((MPEData)EstData[i]).Thickness;
                    BulkDensity = BulkDensity + ((MPEData)EstData[i]).BulkDensity;
                    FResist = FResist + ((MPEData)EstData[i]).FResist;
                    SFactor = SFactor + ((MPEData)EstData[i]).SFactor;
                    Porosity = Porosity + ((MPEData)EstData[i]).Porosity;
                    ViscousCL = ViscousCL + ((MPEData)EstData[i]).ViscousCL;
                    ThermalCL = ThermalCL + ((MPEData)EstData[i]).ThermalCL;
                    Ymodulus = Ymodulus + ((MPEData)EstData[i]).Ymodulus;
                    PoissonR = PoissonR + ((MPEData)EstData[i]).PoissonR;
                    LossFactor = LossFactor + ((MPEData)EstData[i]).LossFactor;

                    MAbsorption.Sum(((MPEData)EstData[i]).MAbsorption);
                    MRealSurfaceImpedance.Sum(((MPEData)EstData[i]).MRealSurfaceImpedance);
                    MImagSurfaceImpedance.Sum(((MPEData)EstData[i]).MImagSurfaceImpedance);
                    CAbsorption.Sum(((MPEData)EstData[i]).CAbsorption);
                    CRealSurfaceImpedance.Sum(((MPEData)EstData[i]).CRealSurfaceImpedance);
                    CImagSurfaceImpedance.Sum(((MPEData)EstData[i]).CImagSurfaceImpedance);

                }

                Thickness = Thickness/DataCount;
                BulkDensity = BulkDensity/DataCount;
                FResist = FResist/DataCount;
                SFactor = SFactor/DataCount;
                Porosity = Porosity/DataCount;
                ViscousCL = ViscousCL*1000000/DataCount;
                ThermalCL = ThermalCL*1000000/DataCount;
                Ymodulus = Ymodulus/DataCount;
                PoissonR = PoissonR/DataCount;
                LossFactor = LossFactor/DataCount;

                Frequency = ((MPEData)EstData[0]).Frequency;
                MAbsorption.Divide(DataCount);
                MRealSurfaceImpedance.Divide(DataCount);
                MImagSurfaceImpedance.Divide(DataCount);
                CAbsorption.Divide(DataCount);
                CRealSurfaceImpedance.Divide(DataCount);
                CImagSurfaceImpedance.Divide(DataCount);

                return true;
            }
            else
            {
                bool result = false;

                return result;
            }
        }
Beispiel #14
0
 public void Temp()
 {
     Frequency = ((MPEData)EstData[0]).Frequency;
     MAbsorption = ((MPEData)EstData[0]).MAbsorption;
     MRealSurfaceImpedance = ((MPEData)EstData[0]).MRealSurfaceImpedance;
     MImagSurfaceImpedance = ((MPEData)EstData[0]).MImagSurfaceImpedance;
     CAbsorption = ((MPEData)EstData[0]).CAbsorption;
     CRealSurfaceImpedance = ((MPEData)EstData[0]).CRealSurfaceImpedance;
     CImagSurfaceImpedance = ((MPEData)EstData[0]).CImagSurfaceImpedance;
 }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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;
        }
Beispiel #17
0
        public void Cal_Z_Data()
        {
            Z_Data = new ClsData();

            for(double i = StartValue ; i <= EndValue ; i = i + StepValue)
            {
                Z_Data.AddData(i);
            }
        }
        public MPEData()
        {
            //
            // TODO: ���⿡ ������ ����� �߰��մϴ�.
            //
            Frequency = new ClsData();
            MAbsorption = new ClsData();
            MRealSurfaceImpedance = new ClsData();
            MImagSurfaceImpedance = new ClsData();
            CAbsorption = new ClsData();
            CRealSurfaceImpedance = new ClsData();
            CImagSurfaceImpedance = new ClsData();
            MeritCalcClass = new MPE.MPEclassClass();

            FResistEst = true;
            SFactorEst = true;
            ViscousCLEst = true;
            ThermalCLEst = true;
            PorosityEst = true;
            YmodulusEst = true;
            PoissonREst = true;
            LossFactorEst = true;
        }
Beispiel #19
0
        public SAClass()
        {
            //
            // TODO: ���⿡ ������ ����� �߰��մϴ�.
            //
            Frequency = new ClsData();

            Sgraph = new ArrayList(); // List of ClsData
            TMCalc = new TM.TMclassClass();
        }