public static int GetFrequencyShift(LteCellEx lteCellEx) { if (lteCellEx.LteCell.Parent.TxNumber == 1) { return (lteCellEx.LteCell.PhyID % 6); } return (lteCellEx.LteCell.PhyID % 3); }
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); }
public LTETransceiverEX(Transceiver trans, List<AntConfigEx> antCofigExList) { this.m_Transceiver = trans; foreach (LTECell cell in trans.Cells) { LteCellEx item = new LteCellEx(cell, antCofigExList); this.m_LteCellExList.Add(item); } this.InitLTETransExBound(antCofigExList); int count = antCofigExList.Count; this.m_AntLinkLoss = new double[count][]; this.m_RatioArr = new double[count]; for (int i = 0; i < count; i++) { this.m_RatioArr[i] = antCofigExList[i].AntConfig.TxPowerRatio; this.m_AntLinkLoss[i] = new double[2]; } }
public bool IsRunOK(int index, LTETransceiverEX tranInfo, CellCasePara casePara) { m_BestCarrierID = m_LTEBestServerID[index]; CellEx cellEx = m_DataManager.GetCellExByID(m_BestCarrierID); if ((m_BestCarrierID != m_InvalidateValue) && (cellEx is LteCellEx)) { m_LteCellExBestServer = (LteCellEx)cellEx; m_Interference = (double)this.m_InterferenceForRUL[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_InterferenceForRUL[index] = Convert.ToInt32((double)(UnitTrans.todB(m_Interference) * LteConst.TIMES_TO_BIG_INT)); } } return true; }
//MBSFN子帧中R-PDCCH和R-PDSCH参考信号的映射图 一般默认四个天线端口 下面四个方法为临时算法 public static double GetRTypeADataReNumSimplify(LteCellEx ex) { return 4 * 12; }
private static double GetTypeBDataREPower(LteCellEx lteCellEx, double dateRePower) { return (UnitTrans.dBto((double) lteCellEx.LteCell.RSPower) * GetRoAandRoB(lteCellEx, dateRePower).RoB); }
public static double GetTypeBDataReNumSimplify(LteCellEx lteCellEx) { int txNumber = lteCellEx.LteCell.Parent.TxNumber; double rBNum = lteCellEx.LteFreqBandEx.LteFrequencyBand.RBNum; double reNumOfRB = 12.0; switch (txNumber) { case 1: return (30.0 - (((576.0 - (reNumOfRB * txNumber)) * 1.0) / ((10.0 * rBNum) * 8.0))); case 2: return (24.0 - (((576.0 - (reNumOfRB * txNumber)) * 1.0) / ((10.0 * rBNum) * 8.0))); } return (32.0 - (((576.0 - (reNumOfRB * txNumber)) * 2.0) / ((10.0 * rBNum) * 8.0))); }
private static double GetNomRSREPower(LteCellEx lteCellEx) { return Convert.ToDouble((double) (UnitTrans.dBto((double) lteCellEx.LteCell.MaxPower) / ((double) (lteCellEx.LteFreqBandEx.LteFrequencyBand.RBNum * 12)))); }
public static double GetTypeBDataReNumComplicated(LteCellEx lteCellEx) { int txNumber = lteCellEx.LteCell.Parent.TxNumber; double dlPdcchSymbols = lteCellEx.LteCell.LteAlgParameter.DlPdcchSymbols; double rBNum = lteCellEx.LteFreqBandEx.LteFrequencyBand.RBNum; switch (txNumber) { case 1: return (30.0 - ((576.0 - (12.0 * txNumber)) / ((10.0 * rBNum) * 8.0))); case 2: return (24.0 - ((576.0 - (12.0 * txNumber)) / ((10.0 * rBNum) * 8.0))); } if (dlPdcchSymbols == 1.0) { return (40.0 - (((576.0 - (12.0 * txNumber)) * 2.0) / ((10.0 * rBNum) * 8.0))); } return (32.0 - (((576.0 - (12.0 * txNumber)) * 2.0) / ((10.0 * rBNum) * 8.0))); }
private void SetPTotal(LteCellEx lteCellEx) { double rsPowerOftotal = 0.0; double pcfichPower = 0.0; double PhichPower = 0.0; double PDCCHPower = 0.0; float rSPower = lteCellEx.LteCell.RSPower; int rBNum = lteCellEx.LteCell.FreqBand.RBNum; float bandWidth = lteCellEx.LteCell.FreqBand.BandWidth; rsPowerOftotal = AdvancedSettingTable.GetRSREInPDCCH(rBNum) * UnitTrans.dBto((double)rSPower); pcfichPower = AdvancedSettingTable.GetPCFICH() * UnitTrans.dBto((double)(rSPower + lteCellEx.LteCell.PCFICHPoffset)); PhichPower = AdvancedSettingTable.GetPhichRENumByBandWidth(bandWidth) * UnitTrans.dBto((double)(rSPower + lteCellEx.LteCell.PHICHPoffset)); PDCCHPower = AdvancedSettingTable.GetPDCCHReNum(lteCellEx.LteCell.Parent.TxNumber, lteCellEx.LteCell.LteAlgParameter.DlPdcchSymbols, rBNum, bandWidth) * UnitTrans.dBto((double)(rSPower + lteCellEx.LteCell.PDCCHPoffset)); //整个带宽上的PDCCH总功率包含RS和其他信道,用的时候除以整个带宽所有RE个数(唯一不是RB上的总功率) lteCellEx.PTotalForPDCCH = ((rsPowerOftotal + pcfichPower) + PhichPower) + PDCCHPower; PDCCHPower = AdvancedSettingTable.GetPDCCHReNum(lteCellEx.LteCell.Parent.TxNumber, 1, rBNum, bandWidth) * UnitTrans.dBto((double)(rSPower + lteCellEx.LteCell.PDCCHPoffset)); lteCellEx.PTotalForPCFICH = ((rsPowerOftotal + pcfichPower) + PhichPower) + PDCCHPower; double PDSCHPowerRSRE = lteCellEx.RSRENumOfPDSCH * lteCellEx.DlRsREPower; double PDSCHPowerOfNoRSRE = lteCellEx.PDSCHTotalPower * lteCellEx.LteCell.ActualDlLoad; lteCellEx.PTotalForPDSCH = PDSCHPowerRSRE + PDSCHPowerOfNoRSRE; //add 20110301 一个RB上的总功率包含RS double rsPowerInRPDCCH = AdvancedSettingTable.getRSREInRPDCCH() * UnitTrans.dBto((double)rSPower); double reTPowerInRPDCCH = AdvancedSettingTable.GetRPDCCHReNum() * UnitTrans.dBto((double)(rSPower + lteCellEx.LteCell.RPDCCHPoffset)); lteCellEx.PTotalForRPDCCH = rsPowerInRPDCCH + reTPowerInRPDCCH; double rsPowerInRPDSCH = AdvancedSettingTable.GetRSREInRPDSCH() * UnitTrans.dBto((double)rSPower); double reTPowerInRPDSCH = lteCellEx.RPDSCHTotalPower * lteCellEx.LteCell.ActualDlLoad; lteCellEx.PTotalForRPDSCH = rsPowerInRPDSCH + reTPowerInRPDSCH; }
private void GetULMimo(LteCellEx lteCellEx) { LTECell lteCell = lteCellEx.LteCell; LTETerminal terminal = this.m_Group.TrafficTerminal.NetTerminalList[0] as LTETerminal; Transceiver parent = lteCell.Parent; MIMO mimo = this.m_ITrafficMCS.GetMIMO(terminal.TxAntNumber, parent.RxNumber, terminal.UlSmSupported); if (mimo == null) { if (this.m_Group.IsContinue) { this.m_Group.IsContinue = false; this.m_Group.NotContinueReason = this.m_Group.NotContinueReason + "check MIMO(UL) config in cell:\r\n"; } this.m_Group.NotContinueReason = this.m_Group.NotContinueReason + lteCell.Parent.Name + ","; } lteCellEx.ULMIMO = mimo; }
public static double GetRTypeBDataReNumComplicated(LteCellEx ex) { return 3 * 8; }
private void GetDLDemodulationTable(LteCellEx lteCellEx, float dLBLER) { lteCellEx.DLDemodulationTable = this.m_ITrafficMCS.GetDemodulation(this.m_Group.TrafficTerminal.Reception, this.m_Group.TrafficMobility, lteCellEx.DLMIMO, dLBLER); }
public static bool IsSameFrequency(LteCellEx sourceCell, LteCellEx targetCell) { return ((sourceCell.DLBandWidth == targetCell.DLBandWidth) && (sourceCell.DLFrequency == targetCell.DLFrequency)); }
public static bool IsNeighbourFrequency(LteCellEx sourceCell, LteCellEx targetCell) { return ((sourceCell.DLBandWidth == targetCell.DLBandWidth) && (Math.Abs((float) (sourceCell.DLFrequency - targetCell.DLFrequency)) == sourceCell.DLBandWidth)); }
/// <summary> /// 判断bestserver和干扰小区同频或邻频 /// </summary> /// <param name="cellex"></param> private void GetInterference(LteCellEx lteCellEx) { //double antParamDB = GetAntParam(m_LteCellExBestServer.LteCell, lteCellEx.LteCell); if (LTETools.IsSameFrequency(this.m_LteCellExBestServer, lteCellEx)) { this.m_Interference += this.m_receivePowerTemp; //this.m_Interference += this.m_receivePowerTemp / UnitTrans.dBto(antParamDB); } else if (LTETools.IsNeighbourFrequency(this.m_LteCellExBestServer, lteCellEx)) { this.m_Interference += this.m_receivePowerTemp / this.m_LteCellExBestServer.ACIR; //this.m_Interference += this.m_receivePowerTemp / UnitTrans.dBto(antParamDB) / this.m_LteCellExBestServer.ACIR; } }
public static double GetRTypeADataReNumComplicated(LteCellEx ex) { return 4 * 12; }
public static double GetPDSCHTotalPower(LteCellEx lteCellEx, double numTypeADataRE, double numTypeBDataRE) { double nomRSREPower = GetNomRSREPower(lteCellEx); double typeBDataREPower = GetTypeBDataREPower(lteCellEx, nomRSREPower); return ((nomRSREPower * numTypeADataRE) + (typeBDataREPower * numTypeBDataRE)); }
public static double GetRTypeBDataReNumSimplify(LteCellEx ex) { return 3 * 8; }
private void GetULDemodulationTable(LteCellEx lteCellEx, float uLBLER) { lteCellEx.ULDemodulationTable = this.m_ITrafficMCS.GetDemodulation(lteCellEx.LteCell.Reception, this.m_Group.TrafficMobility, lteCellEx.ULMIMO, uLBLER); }
public static double GetPbchRePower(LteCellEx lteCellEx) { return UnitTrans.dBto((double) (lteCellEx.LteCell.RSPower + lteCellEx.LteCell.BCHPoffset)); }
private static RoAandRoB GetRoAandRoB(LteCellEx lteCellEx, double dataRePower) { int txNumber = lteCellEx.LteCell.Parent.TxNumber; int pB = lteCellEx.LteCell.PB; RoAandRoB ob = new RoAandRoB(); double roA = dataRePower / UnitTrans.dBto((double) lteCellEx.LteCell.RSPower); switch (pB) { case 0: return GetRoAandRoBbyIndex0(txNumber, roA); case 1: return GetRoAandRoBbyIndex1(txNumber, roA); case 2: return GetRoAandRoBbyIndex2(txNumber, roA); case 3: return GetRoAandRoBbyIndex3(txNumber, roA); } return ob; }
public static double GetTypeADataReNumSimplify(LteCellEx lteCellEx) { int txNumber = lteCellEx.LteCell.Parent.TxNumber; double rBNum = lteCellEx.LteFreqBandEx.LteFrequencyBand.RBNum; //一个RB的带宽=12*15k=180K double reNumPerRB = 12.0;//yige RB资源块包含的载波数目,12个,每个载波15K switch (txNumber) { case 1: case 2: return ((8.0 * reNumPerRB) - (((576.0 - (reNumPerRB * txNumber)) * 7.0) / ((10.0 * rBNum) * 8.0))); } return ((7.0 * reNumPerRB) - (((576.0 - (reNumPerRB * txNumber)) * 6.0) / ((10.0 * rBNum) * 8.0))); }
public bool IsBuildOneBinOk(int index) { m_BestCarrierID = m_BestServerCarrierID[index]; if (m_BestCarrierID != m_InvalidateValue) { m_BestCellEx = m_DataManager.GetCellExByID(m_BestCarrierID); //m_LteCellEx = (LteCellEx)m_BestCellEx; //m_RelayCellEx = (RelayCellEx)m_RelayCellEx; if (m_RsShifting) { m_SCHLevel = ((float)m_OneBinValueTemp.DL_SCH_RP) / 100f; m_SCHLevel += m_OneBinValueTemp.m_ModelShadowMargin; m_Interference = (double) m_ShiftingInterfOfDLSCHSinr[index]; if ( m_Interference != -2147483648.0) { m_Interference *= LteConst.TIMES_TO_FLOAT; m_Interference += m_OneBinValueTemp.m_ModelShadowMargin; m_Interference = UnitTrans.todB((double)(UnitTrans.dBto( m_Interference) + ( m_BestCellEx.TerminalNoisePower / ((double) m_BestCellEx.RENumOfBandWidth)))); } else { m_Interference = UnitTrans.todB((double)(m_BestCellEx.TerminalNoisePower / ((double) m_BestCellEx.RENumOfBandWidth))); } m_OneBinValueTemp.SCH_SINR = Convert.ToInt16((double)((( m_SCHLevel - m_Interference) - m_OneBinValueTemp.m_C_i_nShadowMargin) * 100.0)); } else if (m_BestCellEx is LteCellEx) { m_LteCellEx = (LteCellEx)m_BestCellEx; m_OneBinValueTemp.SCH_SINR = Convert.ToInt16((float)(((((float)m_OneBinValueTemp.DLRSSINR) / 100f) + m_LteCellEx.LteCell.SCHPoffset) * 100f)); } else { if (m_BestCellEx is RelayCellEx) { m_RelayCellEx = (RelayCellEx)m_BestCellEx; m_OneBinValueTemp.SCH_SINR = Convert.ToInt16((float)(((((float)m_OneBinValueTemp.DLRSSINR) / 100f) + m_RelayCellEx.RelayCell.SCHPoffset) * 100f)); } } } #region 原代码 //this.m_BestCarrierID = this.m_BestServerCarrierID[index]; //if (this.m_BestCarrierID != this.m_InvalidateValue) //{ // this.m_BestCellEx = this.m_DataManager.GetLTECellExByID(this.m_BestCarrierID); // if (this.m_RsShifting) // { // this.m_SCHLevel = ((float) this.m_OneBinValueTemp.DL_SCH_RP) / 100f; // this.m_SCHLevel += this.m_OneBinValueTemp.m_ModelShadowMargin; // this.m_Interference = (double) this.m_ShiftingInterfOfDLSCHSinr[index]; // if (this.m_Interference != -2147483648.0) // { // this.m_Interference *= LteConst.TIMES_TO_FLOAT; // this.m_Interference += this.m_OneBinValueTemp.m_ModelShadowMargin; // this.m_Interference = UnitTrans.todB((double) (UnitTrans.dBto(this.m_Interference) + (this.m_BestCellEx.TerminalNoisePower / ((double) this.m_BestCellEx.RENumOfBandWidth)))); // } // else // { // this.m_Interference = UnitTrans.todB((double) (this.m_BestCellEx.TerminalNoisePower / ((double) this.m_BestCellEx.RENumOfBandWidth))); // } // this.m_OneBinValueTemp.SCH_SINR = Convert.ToInt16((double) (((this.m_SCHLevel - this.m_Interference) - this.m_OneBinValueTemp.m_C_i_nShadowMargin) * 100.0)); // } // else // { // this.m_OneBinValueTemp.SCH_SINR = Convert.ToInt16((float) (((((float) this.m_OneBinValueTemp.DLRSSINR) / 100f) + this.m_BestCellEx.LteCell.SCHPoffset) * 100f)); // } //} #endregion return true; }