Exemple #1
0
        public LTETransceiverExCollection GetCalculateTransceiverInfo(ref List<Transceiver> allTran, GeoPolygonRegion polygon, float resolution)
        {
            LTETransceiverExCollection transceiverColl = new LTETransceiverExCollection();
            //得到多边形的外接矩形
            this.GetPolygonRectangle(polygon, resolution);
            bool flag = false;
            short i = (short)allTran.Count;
            List<Transceiver> allTransTemp = new List<Transceiver>();
            allTransTemp.AddRange(allTran);
            foreach (Transceiver transceiver in allTransTemp)
            {
                foreach (IACell cell in transceiver.Cells)
                {
                    
                    if (cell is LTECell)
                    {
                        LTECell lteCell = (LTECell)cell;
                        if (lteCell.RNList.Count > 0)
                        {
                            foreach (RelayNode rn in lteCell.RNList)
                            {
                                //
                                i++;
                                GetOneRelayTransInfo(ref allTran, resolution, ref transceiverColl, rn, i);
                                
                            }
                        }
                        flag |= !float.IsNegativeInfinity((cell as LTECell).DlActualTxPower);
                    }
                }

                if ((transceiver.Active & flag) & (this.m_GeoInfo.GetValueByGeoXYPoint(transceiver.Parent.X, transceiver.Parent.Y, DemDataType.Height) > -32768))
                {
                    this.GetOneTransInfo(resolution, ref transceiverColl, transceiver);
                }
                flag = false;
            }
            allTransTemp.Clear();
            return transceiverColl;
        }
 private void InitialCalcCells(GeoPolygonRegion region, ref List<Transceiver> transceiverList)
 {
     this.m_CalTansceiverExColl = this.m_LteCellFilter.GetCalculateTransceiverInfo(ref transceiverList, region, this.m_Group.Resolution);
     List<short> collection = this.FilterTranByFrequencyBand(this.m_CalTansceiverExColl);
     this.m_Group.CellIDValideListForStudyType.Clear();
     this.m_Group.CellIDValideListForStudyType.AddRange(collection);
 }
 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);
     }
 }
 private void InitialCalCarriers(LTETransceiverExCollection transColl)
 {
     bool flag = this.NeedULMimoAndULDemodulation();
     bool flag2 = this.NeedDLMimoAndDLDemodulation();
     float uLBLER = ((this.m_Group.TrafficService as UnionPsService).PSServiceDic[NetWorkType.LTE] as LTEService).ULBLER;
     float dLBLER = ((this.m_Group.TrafficService as UnionPsService).PSServiceDic[NetWorkType.LTE] as LTEService).DLBLER;
     foreach (LTETransceiverEX rex in transColl.LTETransceiverEXList)
     {
         if (rex.LteCellExList.Count > 0)
         {
             LteCellInit(transColl, flag, flag2, uLBLER, dLBLER, rex);
         }
         else if (rex.RelayCellExList.Count > 0)
         {
             RelayCellInit(transColl, flag, flag2, uLBLER, dLBLER, rex);
         }
     }
 }
 private List<short> FilterTranByFrequencyBand(LTETransceiverExCollection cellCollection)
 {
     List<short> list = new List<short>();
     if (this.m_Group.ChannelIndexDic.Count == 0)
     {
         this.m_Group.IsContinue = false;
         this.m_Group.NotContinueReason = this.m_Group.NotContinueReason + "\n" + PredictionResource.PREDICTION_NOCHANNELINDEX;
     }
     if (this.m_Group.FreqBandIdList.Count == 0)
     {
         this.m_Group.IsContinue = false;
         this.m_Group.NotContinueReason = this.m_Group.NotContinueReason + "\n" + PredictionResource.PREDICTION_NOFREBAND;
     }
     foreach (LTETransceiverEX rex in cellCollection.LTETransceiverEXList)
     {
         if (this.ValidateTranByFrequencyBand(rex))
         {
             list.Add(rex.Transceiver.ID);
         }
     }
     return list;
 }
        public bool DataPrepare(ILTELinkLossCalculator linkLoss, GeoPolygonRegion region, ref List<Transceiver> transceiverList)
        {
            Huawei.UNet.Application.Common.IRC.IRC.InitialIRCConfigDic();
            this.m_CalTansceiverExColl = new LTETransceiverExCollection();
            //初始化计算小区
            this.InitialCalcCells(region, ref transceiverList);
            if (this.CalTansceiverExColl.LTETransceiverEXList.Count == 0)
            {
                return false;
            }
            this.InitialCalCarriers(this.m_CalTansceiverExColl);
            this.InitialTrueFalseMatrixByRegion(region);
            //按50000个点一个区域 把矩阵分成两个 重新初始化计算小区和TrueFalse矩阵
            this.m_ThreadCount = this.InitialThreadCount();
            this.GetBlockCellInfoColl(this.m_ThreadCount, region);
            this.m_TrueFalseMatrix.CreateMatrixBlock(this.m_ThreadCount);
            this.InitialRxPowerValueMatrixDic();
            if (this.m_NeedPenetrationLoss)
            {
                this.m_CaseDataManager.IniPenetrationLoss(this.m_TrueFalseMatrix, "PenetrationLoss");
            }

            this.ShiftingInterfDLPBCHSinr();
            this.InitialInterfereForPDCCH();
            this.InitialInterferenceForPDSCH();
            //add 2011.3.1
            this.InitialInterferenceForRPDSCH();
            this.InitialInterferenceForRPDCCH();
            this.InitialInterfereForPCHICH();
            this.InitialInterfereForUL();
            this.InitialInterfereForRUL();
            this.InitialShiftingInterfDLRsSinr();
            this.InitialShiftingInterfSCHSinr();
            this.InitialValueMatrix(region);
            this.InitialULBestServerLinkLoss();
            return true;
        }
Exemple #7
0
 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);
     }
 }
Exemple #8
0
 /// <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);
         }
     }
 }