コード例 #1
0
ファイル: OverlappingZoneCase.cs プロジェクト: xiaoyj/Space
 private void CalcOverlappingZones(LTETransceiverEX tranInfo, CellEx targetCell, CellCasePara casePara)
 {
         //double[] numArray = LTETools.GetCombinedLinkLoss(this.m_LinkLossCal, tranInfo, casePara, targetCell);
         //this.m_LinkLoss = numArray[1];
         if (this.m_LinkLoss != double.MaxValue)
         {
             double rsReceivePower = this.m_CellRSPower - this.m_LinkLoss;
             if ((rsReceivePower >= this.m_RsRxSensitivity) && (rsReceivePower <= this.m_MaxSensitivity))
             {
                
                 //if (LTETools.IsSameFrequency(this.m_DataManager.GetLTECellExByID(this.m_BestServerCellID), targetCell))
                 if (LTETools.IsSameFrequency(this.m_DataManager.GetCellExByID(this.m_BestServerCellID), targetCell))
                 {
                     this.m_HandoverAreaGate = this.m_SameFreqHandoverAreaGate;
                 }
                 else
                 {
                     this.m_HandoverAreaGate = this.m_DiffFreqHandoverAreaGate;
                 }
                 if (Math.Abs((double) (rsReceivePower - this.m_BestServerRsrp)) <= this.m_HandoverAreaGate)
                 {
                     this.m_OverlappingCount++;
                 }
             }
         }
     
 }
コード例 #2
0
ファイル: RPUCCH_LevelCase.cs プロジェクト: xiaoyj/Space
 public bool IsRunOK(int index, LTETransceiverEX cellInfo, CellCasePara cellCasePara)
 {
     if (!ValidateTeminal())
     {
         return true;
     }
     short tempLevel = this.m_UlRPUCCHLevel[index];
     double tempRecPower = ((float)tempLevel) / 100f;
     double receivePower = double.MinValue;
     LteCellEx lteCellEx = cellInfo.HighestPriorityCell as LteCellEx;
     if (lteCellEx != null)
     {
         double[] linkLossArray = LTETools.GetCombinedBackhaulLinkLoss(this.m_LinkLossCal, cellInfo, cellCasePara, lteCellEx);
         if (linkLossArray[0] == double.MaxValue)
         {
             return true;
         }
         receivePower = Math.Min(m_DeafaultPower + linkLossArray[1], m_PMaxPower) - UnitTrans.todB(12) - linkLossArray[0];
         //if (receivePower < this.m_RsRxSensitivity || receivePower > m_MaxSensitivity)
         //{
         //    return true;
         //}
         if (receivePower > tempRecPower)
         {
             this.m_UlRPUCCHLevel[index] = Convert.ToInt16((double)((receivePower ) * 100.0));
             this.m_ULLinkLoss[index] = Convert.ToInt32((double)(linkLossArray[0] * LteConst.TIMES_TO_BIG_INT));
             this.m_LTEBestServerID[index] = lteCellEx.LteCell.ID;
         }
     }
     return true;
 }
コード例 #3
0
 public bool IsRunOK(int index, LTETransceiverEX cellInfoEx, CellCasePara cellCasePara)
 {
     m_BestCarrierID = m_LTEBestServerID[index];
     //m_BestCarrierID = this.m_BestServerCarrierID[index];
     if (this.m_BestCarrierID != this.m_InvalidateValue)
     {
         //this.m_BestCellEx = this.m_DataManager.GetCellExByID(this.m_BestCarrierID);
         this.m_BestCellEx = m_DataManager.GetCellExByID(m_BestCarrierID);
         this.m_Interference = (double)this.m_InterfereForRPDCCH[index];
         //m_Interference取到的是dB值,但是用的时候都是转换成线性值
         if (m_Interference == -2147483648.0)
         {
             m_Interference = 0.0;
         }
         else
         {
             m_Interference = UnitTrans.dBto((double)(this.m_Interference * LteConst.TIMES_TO_FLOAT));
         }
         CalInterference(cellInfoEx, cellCasePara);
         if (m_Interference > 0.0)
         {
             m_InterfereForRPDCCH[index] = Convert.ToInt32((double)(UnitTrans.todB(m_Interference) * LteConst.TIMES_TO_BIG_INT));
         }
     }
     return true;
 }
コード例 #4
0
 public bool IsRunOK(int index, LTETransceiverEX tranInfo, CellCasePara cellCasePara)
 {
     //this.m_CellID = this.m_BestCellID[index];
     m_BestCarrierID = m_LTEBestServerID[index];
     if (this.m_BestCarrierID != this.m_InvalidCellID)
     {
         //this.m_BestServerCell = this.m_DataManager.GetCellExByID(this.m_CellID);
         this.m_BestServerCell = m_DataManager.GetCellExByID(m_BestCarrierID);
         this.m_Interference = (double)this.m_InterferenceForRPDSCH[index];
         if (this.m_Interference == this.m_InvalidInterference)
         {
             this.m_Interference = 0.0;
         }
         else
         {
             this.m_Interference = UnitTrans.dBto((double)(this.m_Interference * LteConst.TIMES_TO_FLOAT));
         }
         this.CalcInterference(tranInfo, cellCasePara);
         if (this.m_Interference > 0.0)
         {
             this.m_InterferenceForRPDSCH[index] = Convert.ToInt32((double)(UnitTrans.todB(this.m_Interference) * LteConst.TIMES_TO_BIG_INT));
         }
     }
     return true;
 }
コード例 #5
0
ファイル: DL_RPDCCH_LevelCase.cs プロジェクト: xiaoyj/Space
 public bool IsRunOK(int index, LTETransceiverEX cellInfo, CellCasePara cellCasePara)
 {
     if (!ValiteTeminal())
     {
         return true;
     }
     short tempLevel = this.m_DlRPDCCHLevel[index];
     double tempRecPower = ((float)tempLevel) / 100f;
     double receivePower = double.MinValue;
     LteCellEx lteCellEx = cellInfo.HighestPriorityCell as LteCellEx;
     if (lteCellEx != null)
     {
         double[] linkLoss = LTETools.GetCombinedBackhaulLinkLoss(this.m_LinkLossCal, cellInfo, cellCasePara, lteCellEx);
         if (linkLoss[1] == double.MaxValue)
         {
             return true;
         }
         receivePower = lteCellEx.LteCell.RSPower - linkLoss[1];
         if (receivePower < this.m_RsRxSensitivity||receivePower > this.m_MaxSensitivity)
         {
             return true;
         }
         if (receivePower > tempRecPower)
         {
             this.m_DlRPDCCHLevel[index] = Convert.ToInt16((double)((receivePower+lteCellEx.LteCell.RPDCCHPoffset) * 100.0));
             //this.m_ULLinkLoss[index] = Convert.ToInt32((double)(numArray[0] * LteConst.TIMES_TO_BIG_INT));
             this.m_LTEBestServerID[index] = lteCellEx.LteCell.ID;
         }
         
     }
     return true;
 }
コード例 #6
0
 private void CalInterference(LTETransceiverEX tranInfoEx, CellCasePara casePara)
 {
     //List<LteCellEx> lteCellExList = tranInfoEx.LteCellExList;
     if (tranInfoEx.LteCellExList.Count > 0)
     {
         foreach (LteCellEx ex in tranInfoEx.LteCellExList)
         {
             if (ex.LteCell.ID == m_BestCarrierID)
             {
                 continue;
             }
             double[] numArray = LTETools.GetCombinedLinkLoss(this.m_LinkLossCal, tranInfoEx, casePara, ex);
             this.m_LinkLoss = numArray[1];
             CalcInterf(ex);
         }
     }
     else
     {
         if (tranInfoEx.RelayCellExList.Count > 0)
         {
             foreach (RelayCellEx relayCellEx in tranInfoEx.RelayCellExList)
             {
                 if (relayCellEx.RelayCell.ID == m_BestCarrierID)
                 {
                     continue;
                 }
                 double[] numArray = LTETools.GetCombinedRelayLinkLoss(this.m_LinkLossCal, tranInfoEx, casePara, relayCellEx);
                 m_LinkLoss = numArray[1];
                 GetTDDSubFrameMatrix(relayCellEx);
                 CalcInterf(relayCellEx);
             }
         }
     }
     #region 原代码
     //foreach (LteCellEx ex in tranInfoEx.LteCellExList)
     //{
     //    double[] numArray = LTETools.GetCombinedLinkLoss(this.m_LinkLossCal, tranInfoEx, casePara, ex);
     //    this.m_LinkLoss = numArray[1];
     //    if (this.m_LinkLoss != double.MaxValue)
     //    {
     //        this.m_LinkLoss = UnitTrans.dBto(this.m_LinkLoss);
     //        this.m_receivePowerTemp = (ex.PTotalForPDCCH / this.m_LinkLoss) / ex.PDCCHOverHeadRENum;
     //        if ((this.m_BestCarrierID != ex.LteCell.ID) && (this.m_receivePowerTemp >= this.m_InterfRecpThreshold))
     //        {
     //            if (LTETools.IsSameFrequency(this.m_BestCellEx, ex))
     //            {
     //                this.m_Interference += this.m_receivePowerTemp;
     //            }
     //            else if (LTETools.IsNeighbourFrequency(this.m_BestCellEx, ex))
     //            {
     //                this.m_Interference += this.m_receivePowerTemp / this.m_BestCellEx.ACIR;
     //            }
     //        }
     //    }
     //}
     #endregion
 }
コード例 #7
0
ファイル: LTETools.cs プロジェクト: xiaoyj/Space
 public static double[] GetCombinedLinkLoss(ILTELinkLossCalculator linkLoss, LTETransceiverEX tranInfo, CellCasePara casePara, LteCellEx cellEx)
 {
     for (int i = 0; i < cellEx.AntConfigExList.Count; i++)
     {
         double[] linkLossArr = linkLoss.GetLinkLoss(cellEx.AntConfigExList[i].AntConfig, cellEx.LteCell, casePara.X, casePara.Y, casePara.ClutterID, casePara.BuildHeight, true, (float)casePara.Resolution);
         tranInfo.AntLinkLoss[i][0] = linkLossArr[0];
         tranInfo.AntLinkLoss[i][1] = linkLossArr[1];
     }
     return linkLoss.GetCombinedLinkLoss(tranInfo.RatioArr, tranInfo.AntLinkLoss);
 }
コード例 #8
0
 public bool IsRunOK(int index, LTETransceiverEX tranInfoEx, CellCasePara casePara)
 {
     short carrierID = this.m_BestServerCellID[index];
     if (carrierID != -32768)
     {
         this.m_BestServer = this.m_DataManager.GetCellExByID(carrierID);
         this.m_Interference = (double)this.m_ShiftingInterfOfDLRSSinr[index];
         if (this.m_Interference == -2147483648.0)
         {
             this.m_Interference = 0.0;
         }
         else
         {
             this.m_Interference = UnitTrans.dBto((double)(this.m_Interference * LteConst.TIMES_TO_FLOAT));
         }
         foreach (LteCellEx ex2 in tranInfoEx.LteCellExList)
         {
             if (ex2.LteCell.ID == carrierID)
             {
                 continue;
             }
             double[] numArray = LTETools.GetCombinedLinkLoss(this.m_LinkLossCal, tranInfoEx, casePara, ex2);
             this.m_LinkLoss = numArray[1];
             if (this.m_LinkLoss != double.MaxValue)
             {
                 this.m_LinkLoss = UnitTrans.dBto(this.m_LinkLoss);
                 CalcInterference(ex2);
             }
         }
         foreach (RelayCellEx ex2 in tranInfoEx.RelayCellExList)
         {
             if (ex2.RelayCell.ID == carrierID)
             {
                 continue;
             }
             double[] numArray = LTETools.GetCombinedRelayLinkLoss(this.m_LinkLossCal, tranInfoEx, casePara, ex2);
             this.m_LinkLoss = numArray[1];
             if (this.m_LinkLoss != double.MaxValue)
             {
                 this.m_LinkLoss = UnitTrans.dBto(this.m_LinkLoss);
                 GetTDDSubFrameMatrix(ex2);
                 CalcInterference(ex2);
             }
         }
         if (this.m_Interference > 0.0)
         {
             this.m_ShiftingInterfOfDLRSSinr[index] = Convert.ToInt32((double)(UnitTrans.todB(this.m_Interference) * LteConst.TIMES_TO_BIG_INT));
         }
     }
     return true;
 } 
コード例 #9
0
ファイル: OverlappingZoneCase.cs プロジェクト: xiaoyj/Space
 public bool IsRunOK(int index, LTETransceiverEX tranInfo, CellCasePara casePara)
 {
     this.m_BestServerCellID = this.m_BestServerCellIDMatrix[index];
     if (this.m_BestServerCellID != this.m_InvalidateValue)
     {
         this.m_BestServerRsrp = ((float) this.m_BestServerRSRPMatrix[index]) / 100f;
         this.m_OverlappingCount = this.m_OverlappingZones[index];
         if (this.m_OverlappingCount == -2147483648)
         {
             this.m_OverlappingCount = 1;
         }
         else
         {
             this.m_OverlappingCount /= 0x3e8;
         }
         if (tranInfo.LteCellExList.Count > 0)
         {
             foreach (LteCellEx ex in tranInfo.LteCellExList)
             {
                 double[] linkLossArr = LTETools.GetCombinedLinkLoss(this.m_LinkLossCal, tranInfo, casePara, ex);
                 this.m_LinkLoss = linkLossArr[1];
                 this.m_CellRSPower = ex.LteCell.RSPower;
                 if (ex.LteCell.ID != this.m_BestServerCellID)
                 {
                     this.CalcOverlappingZones(tranInfo, ex, casePara);
                 }
             }
         }
         else
         {
             if (tranInfo.RelayCellExList.Count > 0)
             {
                 foreach (RelayCellEx rex in tranInfo.RelayCellExList)
                 {
                     double[] linkLossArr = LTETools.GetCombinedRelayLinkLoss(this.m_LinkLossCal, tranInfo, casePara, rex);
                     this.m_LinkLoss = linkLossArr[1];
                     this.m_CellRSPower = rex.RelayCell.RSPower;
                     if (rex.RelayCell.ID != this.m_BestServerCellID)
                     {
                         this.CalcOverlappingZones(tranInfo, rex, casePara);
                     }
                 }
             }
         }
         this.m_OverlappingZones[index] = this.m_OverlappingCount * 0x3e8;
     }
     return true;
 }
コード例 #10
0
ファイル: InterferenceCaseForUL.cs プロジェクト: xiaoyj/Space
 public bool IsRunOK(int index, LTETransceiverEX tranInfo, CellCasePara casePara)
 {
     this.m_BestCarrierID = this.m_BestServerCarrierID[index];
     if (this.m_BestCarrierID != this.m_InvalidateValue)
     {
         m_BestServer = this.m_DataManager.GetCellExByID(this.m_BestCarrierID);
         m_Interference = (double)this.m_InterferenceForUL[index];
         if (m_Interference == -2147483648.0)
         {
             m_Interference = 0.0;
         }
         else
         {
             m_Interference = UnitTrans.dBto((double)(m_Interference * LteConst.TIMES_TO_FLOAT));
         }
         CalcInterference(tranInfo, casePara);
         if (m_Interference > 0.0)
         {
             this.m_InterferenceForUL[index] = Convert.ToInt32((double)(UnitTrans.todB(m_Interference) * LteConst.TIMES_TO_BIG_INT));
         }
     }
     return true;
 }
コード例 #11
0
ファイル: BestServerCase.cs プロジェクト: xiaoyj/Space
        public bool IsRunOK(int index, LTETransceiverEX tranInfo, CellCasePara casePara)
        {
            short num = this.m_BestServerRSRP[index];
            double tempReceivePower = ((float)num) / 100f;
            short carrierID = this.m_BestServerCellID[index];
            CellEx cellEx=this.m_DataManager.GetCellExByID(carrierID);
            if (cellEx is RelayCellEx)
            {
               tempReceivePower = (tempReceivePower + ((RelayCellEx)cellEx).RelayCell.PowerBias);
            }
            //double lteReceivePower = double.MinValue;
            //double relayReceivePower = double.MinValue;
            double receivePower = double.MinValue;
            double uLLinkLoss = double.MaxValue;
            double dLLinkLoss = double.MaxValue;
            this.CalcInterference(index, tranInfo, casePara);
            LteCellEx lteCellEx = tranInfo.HighestPriorityCell as LteCellEx;
            RelayCellEx relayCellEx = tranInfo.HighestPriorityCell as RelayCellEx;
            if (lteCellEx != null)
            {

                double[] numArray = LTETools.GetCombinedLinkLoss(this.m_LinkLoss, tranInfo, casePara, lteCellEx);
                uLLinkLoss = numArray[0];
                dLLinkLoss = numArray[1];
                if (dLLinkLoss == double.MaxValue)
                {
                    return true;
                }
                receivePower = lteCellEx.LteCell.RSPower - dLLinkLoss;
                if (receivePower < this.m_RsRxSensitivity)
                {
                    return true;
                }
                if (receivePower > this.m_MaxSensitivity)
                {
                    setFalseValue(index);
                    return true;
                } 
                this.CalcReceivePower(index, lteCellEx, dLLinkLoss, uLLinkLoss, tempReceivePower, receivePower,tranInfo);
            }
            else
            {
                if (relayCellEx != null)
                {
                    //TODO::RelayCell计算
                    double[] numArray = LTETools.GetCombinedRelayLinkLoss(this.m_LinkLoss, tranInfo, casePara, relayCellEx);
                    uLLinkLoss = numArray[0];
                    dLLinkLoss = numArray[1];
                    if (dLLinkLoss == double.MaxValue)
                    {
                        return true;
                    }
                    receivePower = relayCellEx.RelayCell.RSPower + relayCellEx.RelayCell.PowerBias - dLLinkLoss;
                    if (receivePower < this.m_RsRxSensitivity)
                    {
                        return true;
                    }
                    if (receivePower > this.m_MaxSensitivity)
                    {
                        setFalseValue(index);
                        return true;
                    }
                    this.CalcReceivePower(index, relayCellEx, dLLinkLoss, uLLinkLoss, tempReceivePower, receivePower, tranInfo);
                }
            }
            //if (lteReceivePower >= relayReceivePower)
            //{
            //    receivePower = lteReceivePower;
            //    m_BestServer = (CellEx)lteCellEx;
            //}
            //else
            //{
            //    receivePower = relayReceivePower;
            //    m_BestServer = (CellEx)relayCellEx;
            //}     
            if (this.m_NeedPenetrationLoss)
            {
                this.m_PenetrationLoss[index] = UnitTrans.DoubleToShort(casePara.PenetrationLoss);
            }
            return true;
        }
コード例 #12
0
ファイル: InterferenceCaseForUL.cs プロジェクト: xiaoyj/Space
        /// <summary>
        /// 计算干扰
        /// </summary>
        /// <param name="tranInfo"></param>
        /// <param name="casePara"></param>
        private void CalcInterference(LTETransceiverEX tranInfo, CellCasePara casePara)
        {
            if (tranInfo.LteCellExList.Count > 0)
            {
                foreach (LteCellEx ltecellex in tranInfo.LteCellExList)
                {
                    double[] lteLinkLoss = LTETools.GetCombinedLinkLoss(this.m_LinkLossCal, tranInfo, casePara, ltecellex);
                    this.m_LinkLoss = lteLinkLoss[1];
                    if (this.m_LinkLoss != double.MaxValue)
                    {
                        this.m_LinkLoss = UnitTrans.dBto(this.m_LinkLoss);
                        if (m_BestServer is LteCellEx)
                        {
                            this.m_receivePowerTemp = ltecellex.DlActualPowerPerRE;
                        }
                        else
                        {
                            this.m_receivePowerTemp = ltecellex.DlActualPowerPerRE / this.m_LinkLoss;
                        }
                        if ((this.m_BestCarrierID != ltecellex.LteCell.ID) && (this.m_receivePowerTemp >= this.m_InterfRecpThreshold))
                        {
                            GetInterference(ltecellex);
                        }
                    }
                }

            }
            if (tranInfo.RelayCellExList.Count > 0)
            {
                foreach (RelayCellEx relayCellEx in tranInfo.RelayCellExList)
                {
                    double[] relayLinkLoss = LTETools.GetCombinedRelayLinkLoss(this.m_LinkLossCal, tranInfo, casePara, relayCellEx);
                    this.m_LinkLoss = relayLinkLoss[1];
                    if (this.m_LinkLoss != double.MaxValue)
                    {
                        this.m_LinkLoss = UnitTrans.dBto(this.m_LinkLoss);
                        if (m_BestServer is RelayCellEx)
                        {
                            this.m_receivePowerTemp = relayCellEx.DlActualPowerPerRE;
                        }
                        else
                        {
                            this.m_receivePowerTemp = relayCellEx.DlActualPowerPerRE / this.m_LinkLoss;
                        }
                        if ((this.m_BestCarrierID != relayCellEx.RelayCell.ID) && (this.m_receivePowerTemp >= this.m_InterfRecpThreshold))
                        {
                            GetInterference(relayCellEx);
                        }
                    }
                }
            }
        }
コード例 #13
0
        private void CalInterference(LTETransceiverEX cellInfoEx, CellCasePara cellCasePara)
        {
            foreach (LteCellEx cellex in cellInfoEx.LteCellExList)
            {
                //计算同频段普通帧的PDSCH会对RPDCCH产生的干扰
                if (cellex.LteCell.ID == this.m_BestCarrierID)
                {
                    continue;
                }
                double[] numArray = LTETools.GetCombinedBackhaulLinkLoss(this.m_LinkLossCal, cellInfoEx, cellCasePara, cellex);
                this.m_LinkLoss = numArray[1];
                if (this.m_LinkLoss != double.MaxValue)
                {
                    m_LinkLoss = UnitTrans.dBto(m_LinkLoss);
                    double reNum = cellex.RSRENumOfPDSCH + cellex.TypeADataRENum + cellex.TypeBDataRENum;
                    double receiverPowerTemp = (cellex.PTotalForPDSCH / this.m_LinkLoss) / reNum;
                    double receiverPowerTempDLActualRe = cellex.DlActualPowerPerRE / m_LinkLoss;
                    if (LTETools.IsSameFrequency(m_BestCellEx, cellex) && (receiverPowerTemp >= m_InterfRecpThreshold))
                    {
                        m_Interference += receiverPowerTemp;
                    }
                    else if (LTETools.IsNeighbourFrequency(m_BestCellEx, cellex) && (receiverPowerTempDLActualRe >= m_InterfRecpThreshold))
                    {
                        m_Interference += receiverPowerTempDLActualRe / m_BestCellEx.ACIR;
                    }
                    else if (LTETools.IsCrossFrequency(this.m_BestCellEx, cellex))
                    {
                        double coPercent = this.GetCoInterfPercent(this.m_BestCellEx, cellex);
                        double adPercent = this.GetAdjacentInterfPercent(this.m_BestCellEx, cellex);
                        this.m_Interference += coPercent * receiverPowerTemp + adPercent * (receiverPowerTempDLActualRe / m_BestCellEx.ACIR);
                    }

                }
            }
        }
コード例 #14
0
ファイル: PredictionDataManager.cs プロジェクト: xiaoyj/Space
        /// <summary>
        /// 判断小区是否是LTE频带内
        /// </summary>
        /// <param name="tranInfo"></param>
        /// <returns></returns>
        private bool ValidateTranByFrequencyBand(LTETransceiverEX tranInfo)
        {
            bool flag = false;
            int cellPriority = int.MaxValue;
            if (tranInfo.LteCellExList.Count > 0)
            {
                LteCellEx ex = null;
                LTECell lteCell = null;
                foreach (LteCellEx ex2 in tranInfo.LteCellExList)
                {
                    lteCell = ex2.LteCell;
                    bool flag2 = this.m_Group.FreqBandIdList.Contains(lteCell.FreqBand.ID) && this.m_Group.ChannelIndexDic[lteCell.FreqBand.ID].Contains(lteCell.ChannelIndex);
                    if (flag2 && (lteCell.CellPriority < cellPriority))
                    {
                        cellPriority = lteCell.CellPriority;
                        ex = ex2;
                    }
                    flag |= flag2;
                }
                tranInfo.HighestPriorityCell = ex;
            }
            else if (tranInfo.RelayCellExList.Count > 0)
            {
                RelayCellEx rex = null;
                RelayCell relayCell = null;
                foreach (RelayCellEx ex2 in tranInfo.RelayCellExList)
                {
                    relayCell = ex2.RelayCell;
                    bool flag2 = this.m_Group.FreqBandIdList.Contains(relayCell.FreqBand.ID) && this.m_Group.ChannelIndexDic[relayCell.FreqBand.ID].Contains(relayCell.ChannelIndex);
                    if (flag2 && (relayCell.RCellPriority < cellPriority))
                    {
                        cellPriority = relayCell.RCellPriority;
                        rex = ex2;
                    }
                    flag |= flag2;
                }
                tranInfo.HighestPriorityCell = rex;
            }

            return flag;
        }
コード例 #15
0
ファイル: PredictionDataManager.cs プロジェクト: xiaoyj/Space
 private void LteCellInit(LTETransceiverExCollection transColl, bool flag, bool flag2, float uLBLER, float dLBLER, LTETransceiverEX rex)
 {
     foreach (LteCellEx ex in rex.LteCellExList)
     {
         LteFrequencyBandEx lteFreqBandEx = ex.LteFreqBandEx;
         LTECell lteCell = ex.LteCell;
         lteFreqBandEx.FrequcyBandUsableWidth = UnitTrans.todB((int)(lteFreqBandEx.LteFrequencyBand.RBNum * 0x2bf20));
         //RSNumOfBandWidth?RENumOfBandWidth?
         lteFreqBandEx.RSNumOfBandWidth = UnitTrans.todB((int)(lteFreqBandEx.LteFrequencyBand.RBNum * 2));
         lteFreqBandEx.RENumOfBandWidth = UnitTrans.todB((int)(lteFreqBandEx.LteFrequencyBand.RBNum * 12));
         lteFreqBandEx.NoisePowerOfBandWidth = this.GetNoisePower(lteFreqBandEx.LteFrequencyBand);
         ex.NoiseULRE = this.GetRENoisePower(ex.NoiseFigureOfBts);
         ex.SpaceBetweenDlAndUL = this.m_IPLCalcVstr.GetDeltaLossFrmDLToUL(rex.Transceiver, lteCell)[0];
         ex.BandWidthAndStartFrequecyKey = lteCell.FreqBand.BandWidth + "_" + ((lteCell.FreqBand.BandWidth * lteCell.ChannelIndex) + lteCell.FreqBand.DLFrequency);
         ex.NeighbourBandWidth_Larger_Key = lteCell.FreqBand.BandWidth + "_" + ((lteCell.FreqBand.BandWidth * (lteCell.ChannelIndex + 1)) + lteCell.FreqBand.DLFrequency);
         ex.NeighbourBandWidth_Smaller_Key = lteCell.FreqBand.BandWidth + "_" + ((lteCell.FreqBand.BandWidth * (lteCell.ChannelIndex - 1)) + lteCell.FreqBand.DLFrequency);
         ex.DLFrequency = (lteCell.FreqBand.BandWidth * lteCell.ChannelIndex) + lteCell.FreqBand.DLFrequency;
         ex.DLBandWidth = lteCell.FreqBand.BandWidth;
         ex.TerminalNoisePower = UnitTrans.dBto((double)(lteFreqBandEx.NoisePowerOfBandWidth + this.m_Group.TrafficTerminal.NetTerminalList[0].NoiseFigure));
         ex.PDCCHOverHeadRENum = (lteCell.FreqBand.RBNum * 12) * lteCell.LteAlgParameter.DlPdcchSymbols;
         ex.RENumOfBandWidth = lteFreqBandEx.LteFrequencyBand.RBNum * 12;
         ex.ACIR = UnitTrans.dBto((double)lteFreqBandEx.LteFrequencyBand.ACIR);
         ex.FrequencyShift = AdvancedSettingTable.GetFrequencyShift(ex);
         /*固定为6个*/
         ex.RSRENumOfPDSCH = AdvancedSettingTable.GetRSREInPDSCH();
         ex.TypeADataRENum = AdvancedSettingTable.GetTypeADataReNumSimplify(ex);
         ex.TypeBDataRENum = AdvancedSettingTable.GetTypeBDataReNumSimplify(ex);
         ex.TypeADataRENumByComplicate = AdvancedSettingTable.GetTypeADataReNumComplicated(ex);
         ex.TypeBDataRENumByComplicate = AdvancedSettingTable.GetTypeBDataReNumComplicated(ex);
         ex.PDSCHTotalPower = AdvancedSettingTable.GetPDSCHTotalPower(ex, ex.TypeADataRENum, ex.TypeBDataRENum);
         ex.PDSCHREPower = ex.PDSCHTotalPower / (ex.TypeADataRENum + ex.TypeBDataRENum);
         ex.PDSCHOffset = UnitTrans.todB(ex.PDSCHREPower) - ex.LteCell.RSPower;
         ex.DlRsREPower = UnitTrans.dBto((double)ex.LteCell.RSPower);
         ex.DlActualPowerPerRE = UnitTrans.dBto((double)ex.LteCell.DlActualTxPower) / ((double)ex.RENumOfBandWidth);
         ex.SCHREPower = AdvancedSettingTable.GetSchRePower(ex);
         ex.PBCHREPower = AdvancedSettingTable.GetPbchRePower(ex);
         ex.IRCFigure = Huawei.UNet.Application.Common.IRC.IRC.GetIRCFigure(ex.LteCell.Parent.RxNumber);
         //TODO::新添的backhaul链路指标的功率属性未赋值
         ex.RTypeADataRENum = AdvancedSettingTable.GetRTypeADataReNumSimplify(ex);
         ex.RTypeADataRENumByComplicate = AdvancedSettingTable.GetRTypeADataReNumComplicated(ex);
         ex.RTypeBDataRENum = AdvancedSettingTable.GetRTypeBDataReNumSimplify(ex);
         ex.RTypeBDataRENumByComplicate = AdvancedSettingTable.GetRTypeBDataReNumComplicated(ex);
         ex.RPDSCHTotalPower = AdvancedSettingTable.GetPDSCHTotalPower(ex, ex.RTypeADataRENum, ex.RTypeBDataRENum);
         ex.RPDSCHREPower = ex.RPDSCHTotalPower / (ex.RTypeADataRENum + ex.RTypeBDataRENum);
         ex.RPDSCHOffset = UnitTrans.todB(ex.RPDSCHREPower) - ex.LteCell.RSPower;
         this.SetPTotal(ex);
         if (flag2 || flag)
         {
             this.m_ITrafficMCS.InitialMcsArr();
         }
         if (flag)
         {
             this.GetULMimo(ex);
             this.GetULDemodulationTable(ex, uLBLER);
         }
         if (flag2)
         {
             this.GetDLMimo(ex);
             this.GetDLDemodulationTable(ex, dLBLER);
         }
         transColl.AddCellEx(lteCell.ID, ex);
     }
 }
コード例 #16
0
ファイル: LteCellFilter.cs プロジェクト: xiaoyj/Space
 private void GetOneTransInfo(float resolution, ref LTETransceiverExCollection transceiverColl, Transceiver trans)
 {
     List<AntConfigEx> antExList = new List<AntConfigEx>();
     foreach (IACell cell in trans.Cells)
     {
         float maxCalcRadius = this.GetMaxCalcRadius(cell);
         foreach (AntConfig config in trans.AntConfiguration)
         {
             this.m_AntPoint.X = trans.Parent.X + config.DX;
             this.m_AntPoint.Y = trans.Parent.Y + config.DY;
             this.m_AntLeftTop.X = this.m_AntPoint.X - maxCalcRadius;
             this.m_AntLeftTop.Y = this.m_AntPoint.Y + maxCalcRadius;
             this.m_AntRightBottom.X = this.m_AntPoint.X + maxCalcRadius;
             this.m_AntRightBottom.Y = this.m_AntPoint.Y - maxCalcRadius;
             if (!(!this.IsAntInCalcZone() || this.IsExistAntEx(config.AntennaID, antExList)))
             {
                 antExList.Add(this.GetIndexCoodinateOfAnt(config, resolution));
             }
         }
     }
     if (antExList.Count > 0)
     {
         LTETransceiverEX item = new LTETransceiverEX(trans, antExList);
         transceiverColl.LTETransceiverEXList.Add(item);
     }
 }
コード例 #17
0
ファイル: BestServerCase.cs プロジェクト: xiaoyj/Space
 private void CalcReceivePower(int index, CellEx cellEx, double DLLinkLoss, double ULLinkLoss, double tempReceivePower, double receivePower,LTETransceiverEX tranInfo)
 {
       if ((receivePower > tempReceivePower) && (receivePower > this.m_RsRxSensitivity))
      {
         this.m_BestServerRSRP[index] = Convert.ToInt16((double) (receivePower * 100.0));
         if (cellEx is LteCellEx)
         {
             LteCellEx lteCellEx = (LteCellEx)cellEx;
             if (this.m_NeedCalSymbolRSRP || this.m_NeedCalRSRQ)
             {
                 this.m_RsMaxCarrierFrequecyBandEx = lteCellEx.LteFreqBandEx;
                 /*m_RsMaxCarrierFrequecyBandEx.RSNumOfBandWidth是dB值,对应100*2个RS(一个OFDM符号内)*/
                 this.m_SymbolRSRP[index] = Convert.ToInt16((double)((receivePower + this.m_RsMaxCarrierFrequecyBandEx.RSNumOfBandWidth) * 100.0));
             }
             this.m_BestServerCellID[index] = lteCellEx.LteCell.ID;
             this.m_BestServerTransID[index] = tranInfo.Transceiver.ID;
         }
         else 
         {
             if (cellEx is RelayCellEx)
             {
                 RelayCellEx relayCellEx = (RelayCellEx)cellEx;
                 if (this.m_NeedCalSymbolRSRP || this.m_NeedCalRSRQ)
                 {
                     this.m_RsMaxCarrierFrequecyBandEx = relayCellEx.RelayFreqBandEx;
                     /*m_RsMaxCarrierFrequecyBandEx.RSNumOfBandWidth是dB值,对应100*2个RS(一个OFDM符号内)*/
                     this.m_SymbolRSRP[index] = Convert.ToInt16((double)((receivePower + this.m_RsMaxCarrierFrequecyBandEx.RSNumOfBandWidth) * 100.0));
                 }
                 this.m_BestServerCellID[index] = relayCellEx.RelayCell.ID;
                 this.m_BestServerTransID[index] = tranInfo.Transceiver.ID;
             }
         }
         //this.m_BestServerTransID[index] = cellInfo.Transceiver.ID;
         if (this.m_NeedCalActualRxIntf || this.m_NeedCalMaxRxIntf)
         {
             /*dBֵ*/
             this.m_DlBestServerLinkLoss[index] = Convert.ToInt32((double) (DLLinkLoss * LteConst.TIMES_TO_BIG_INT));
         }
         if (this.m_IsNeedCalULStudy)
         {
             this.m_UlBestServerLinkLoss[index] = Convert.ToInt32((double) (ULLinkLoss * LteConst.TIMES_TO_BIG_INT));
         }
     }
  }
コード例 #18
0
ファイル: BestServerCase.cs プロジェクト: xiaoyj/Space
 private void CalcInterference(int index, LTETransceiverEX cellInfo, CellCasePara casePara)
 {
     if (this.m_NeedCalActualRxIntf || this.m_NeedCalMaxRxIntf)
     {
         this.m_RxPowerOfBandWidthKey = "";
         this.m_MaxRxPowerOfBandWidthKey = "";
         this.m_ActualRxPower = 0.0;
         this.m_MaxRxPower = 0.0;
         foreach (LteCellEx ex in cellInfo.LteCellExList)
         {
             LTECell lteCell = ex.LteCell;
             if (lteCell.Active)
             {
                 double[] linkLoss = LTETools.GetCombinedLinkLoss(this.m_LinkLoss, cellInfo, casePara, ex);
                 if (linkLoss[1] != double.MaxValue)
                 {
                     this.m_ActualRxPower = lteCell.DlActualTxPower - linkLoss[1];
                     this.m_MaxRxPower = lteCell.MaxPower - linkLoss[1];
                     double reNumOfBandWidth = ex.LteFreqBandEx.RENumOfBandWidth;
                     calActualRxIntf(index, ex, reNumOfBandWidth);
                 }
             }
         }
         foreach (RelayCellEx ex in cellInfo.RelayCellExList)
         {
             RelayCell relayCell = ex.RelayCell;
             if (relayCell.Active)
             {
                 double[] linkLoss = LTETools.GetCombinedRelayLinkLoss(this.m_LinkLoss, cellInfo, casePara, ex);
                 if (linkLoss[1] != double.MaxValue)
                 {
                     this.m_ActualRxPower = relayCell.DlActualTxPower - linkLoss[1];
                     this.m_MaxRxPower = relayCell.MaxPower - linkLoss[1];
                     double reNumOfBandWidth = ex.RelayFreqBandEx.RENumOfBandWidth;
                     calActualRxIntf(index, ex, reNumOfBandWidth); 
                 }
             }
         }
     }
 }
コード例 #19
0
 /// <summary>
 /// 计算RPDSCH受到的干扰
 /// </summary>
 /// <param name="tranInfo"></param>
 /// <param name="casePara"></param>
 private void CalcInterference(LTETransceiverEX tranInfo, CellCasePara casePara)
 {
     foreach (LteCellEx cellex in tranInfo.LteCellExList)
     {
         if (cellex.LteCell.ID == this.m_BestCarrierID)
         {
             continue;
         }
         double[] numArray = LTETools.GetCombinedBackhaulLinkLoss(this.m_LinkLossCal, tranInfo, casePara, cellex);
         this.m_LinkLoss = numArray[1];
         if (this.m_LinkLoss != double.MaxValue)
         {
             this.m_LinkLoss = UnitTrans.dBto(this.m_LinkLoss);
             double reNum = cellex.RSRENumOfPDSCH + cellex.TypeADataRENum + cellex.TypeBDataRENum;
             this.m_InterfPower = (cellex.PTotalForPDSCH / this.m_LinkLoss) / reNum;//每个RE上的干扰功率
             this.m_receivePowerTempDLActualRE = cellex.DlActualPowerPerRE / this.m_LinkLoss;
             //同频干扰
             if (LTETools.IsSameFrequency(this.m_BestServerCell, cellex) && (this.m_InterfPower >= this.m_InterfRecpThreshold))
             {
                 this.m_Interference += this.m_InterfPower;
             }
             //邻频干扰
             else if (LTETools.IsNeighbourFrequency(this.m_BestServerCell, cellex) && (this.m_receivePowerTempDLActualRE >= this.m_InterfRecpThreshold))
             {
                 this.m_Interference += this.m_receivePowerTempDLActualRE / this.m_BestServerCell.ACIR;
             }
             else if (LTETools.IsCrossFrequency(this.m_BestServerCell, cellex))
             {
                 double coPercent = this.GetCoInterfPercent(this.m_BestServerCell, cellex);
                 double adPercent = this.GetAdjacentInterfPercent(this.m_BestServerCell, cellex);
                 this.m_Interference += coPercent * m_InterfPower + adPercent * (this.m_receivePowerTempDLActualRE / this.m_BestServerCell.ACIR);
             }
         }
     }
 }
コード例 #20
0
ファイル: LteCellFilter.cs プロジェクト: xiaoyj/Space
 /// <summary>
 /// 获取relayTrans信息
 /// </summary>
 /// <param name="resolution"></param>
 /// <param name="transceiverColl"></param>
 /// <param name="rn"></param>
 private void GetOneRelayTransInfo(ref List<Transceiver> allTran,float resolution, ref LTETransceiverExCollection transceiverColl, RelayNode rn,short id)
 {
     //
     if (this.m_GeoInfo.GetValueByGeoXYPoint(rn.X, rn.Y, DemDataType.Height) > -32768)
     {
         List<AntConfigEx> antExList = new List<AntConfigEx>();
         bool flag=false;
         foreach (IACell cell in rn.RCList)
         {
             float maxCalcRadius = this.GetMaxCalcRadius(cell);
             RelayCell relayCell = (RelayCell)cell;
             flag |= !float.IsNegativeInfinity(relayCell.DlActualTxPower);
             if (relayCell.Active & flag)
             {
                 this.m_AntPoint.X = rn.X + relayCell.CellToUEAnt.DX;
                 this.m_AntPoint.Y = rn.Y + relayCell.CellToUEAnt.DY;
                 this.m_AntLeftTop.X = this.m_AntPoint.X - maxCalcRadius;
                 this.m_AntLeftTop.Y = this.m_AntPoint.Y + maxCalcRadius;
                 this.m_AntRightBottom.X = this.m_AntPoint.X + maxCalcRadius;
                 this.m_AntRightBottom.Y = this.m_AntPoint.Y - maxCalcRadius;
                 if (!(!this.IsAntInCalcZone() || this.IsExistAntEx(relayCell.CellToUEAnt.AntennaID, antExList)))
                 {
                     antExList.Add(this.GetIndexCoodinateOfAnt(relayCell.CellToUEAnt, resolution));
                 }
             }
             
         }
         if (antExList.Count > 0)
         {
             Transceiver tran = new Transceiver();
             tran.ID = id;
             tran.Name = rn.Name;
             allTran.Add(tran);
             LTETransceiverEX item = new LTETransceiverEX(rn, antExList, tran);
             transceiverColl.LTETransceiverEXList.Add(item);
         }
     }
 }