Beispiel #1
0
 public static int GetFrequencyShift(LteCellEx lteCellEx)
 {
     if (lteCellEx.LteCell.Parent.TxNumber == 1)
     {
         return (lteCellEx.LteCell.PhyID % 6);
     }
     return (lteCellEx.LteCell.PhyID % 3);
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 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];
     }
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 //MBSFN子帧中R-PDCCH和R-PDSCH参考信号的映射图 一般默认四个天线端口 下面四个方法为临时算法
 public static double GetRTypeADataReNumSimplify(LteCellEx ex)
 {
     
     return 4 * 12;
 }
Beispiel #6
0
 private static double GetTypeBDataREPower(LteCellEx lteCellEx, double dateRePower)
 {
     return (UnitTrans.dBto((double) lteCellEx.LteCell.RSPower) * GetRoAandRoB(lteCellEx, dateRePower).RoB);
 }
Beispiel #7
0
        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)));
        }
Beispiel #8
0
 private static double GetNomRSREPower(LteCellEx lteCellEx)
 {
     return Convert.ToDouble((double) (UnitTrans.dBto((double) lteCellEx.LteCell.MaxPower) / ((double) (lteCellEx.LteFreqBandEx.LteFrequencyBand.RBNum * 12))));
 }
Beispiel #9
0
        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)));
        }
Beispiel #10
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;
 }
Beispiel #11
0
 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;
 }
Beispiel #12
0
 public static double GetRTypeBDataReNumComplicated(LteCellEx ex)
 {
     return 3 * 8;
 }
Beispiel #13
0
 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);
 }
Beispiel #14
0
 public static bool IsSameFrequency(LteCellEx sourceCell, LteCellEx targetCell)
 {
     return ((sourceCell.DLBandWidth == targetCell.DLBandWidth) && (sourceCell.DLFrequency == targetCell.DLFrequency));
 }
Beispiel #15
0
 public static bool IsNeighbourFrequency(LteCellEx sourceCell, LteCellEx targetCell)
 {
     return ((sourceCell.DLBandWidth == targetCell.DLBandWidth) && (Math.Abs((float) (sourceCell.DLFrequency - targetCell.DLFrequency)) == sourceCell.DLBandWidth));
 }
Beispiel #16
0
 /// <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;
     }
 }
Beispiel #17
0
 public static double GetRTypeADataReNumComplicated(LteCellEx ex)
 {
     return 4 * 12;
 }
Beispiel #18
0
 public static double GetPDSCHTotalPower(LteCellEx lteCellEx, double numTypeADataRE, double numTypeBDataRE)
 {
     double nomRSREPower = GetNomRSREPower(lteCellEx);
     double typeBDataREPower = GetTypeBDataREPower(lteCellEx, nomRSREPower);
     return ((nomRSREPower * numTypeADataRE) + (typeBDataREPower * numTypeBDataRE));
 }
Beispiel #19
0
 public static double GetRTypeBDataReNumSimplify(LteCellEx ex)
 {
     return 3 * 8;
 }
Beispiel #20
0
 private void GetULDemodulationTable(LteCellEx lteCellEx, float uLBLER)
 {
     lteCellEx.ULDemodulationTable = this.m_ITrafficMCS.GetDemodulation(lteCellEx.LteCell.Reception, this.m_Group.TrafficMobility, lteCellEx.ULMIMO, uLBLER);
 }
Beispiel #21
0
 public static double GetPbchRePower(LteCellEx lteCellEx)
 {
     return UnitTrans.dBto((double) (lteCellEx.LteCell.RSPower + lteCellEx.LteCell.BCHPoffset));
 }
Beispiel #22
0
        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;
        }
Beispiel #23
0
 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)));
 }
Beispiel #24
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;
 }