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; }
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); } }
/// <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); } } }