Example #1
0
 /// <summary>
 /// relay
 /// </summary>
 /// <param name="relayCellEx"></param>
 /// <returns></returns>
 public static int GetFrequencyShift(RelayCellEx relayCellEx)
 {
     if (relayCellEx.RelayCell.ParentRN.TxNumber == 1)
     {
         return (relayCellEx.RelayCell.PhyID % 6);
     }
     return (relayCellEx.RelayCell.PhyID % 3);
 }
Example #2
0
        //add by huna 未完成,获取Relay的access链路损耗
        public static double[] GetCombinedRelayLinkLoss(ILTELinkLossCalculator linkLoss, LTETransceiverEX tranInfo, CellCasePara casePara, RelayCellEx cellEx)
        {
            for (int i = 0; i < cellEx.AntConfigExList.Count; i++)
			{
                double[] linkLossArr = linkLoss.GetAccessLinkLoss(cellEx.AntConfigExList[i].AntConfig, cellEx.RelayCell, 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);
            //double[] array = new double[2];
            //return array;
        }
Example #3
0
 /// <summary>
 /// relayTrans¹¹Ô캯Êý
 /// </summary>
 /// <param name="rn"></param>
 /// <param name="antCofigExList"></param>
 public LTETransceiverEX(RelayNode rn, List<AntConfigEx> antCofigExList, Transceiver tran)
 {
     //Transceiver tran = new Transceiver();
     //tran.ID = id;
     this.m_Transceiver = tran;
     foreach (RelayCell cell in rn.RCList)
     {
         RelayCellEx item = new RelayCellEx(cell, antCofigExList);
         this.m_RelayCellExList.Add(item);
         IACell iaCell = cell;
         this.m_Transceiver.Cells.Add(iaCell);
     }
     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];
     }
 }
Example #4
0
 private static double GetTypeBDataREPower(RelayCellEx relayCellEx, double dateRePower)
 {
     return (UnitTrans.dBto((double)relayCellEx.RelayCell.RSPower) * GetRoAandRoB(relayCellEx, dateRePower).RoB);
 }
Example #5
0
 private static double GetNomRSREPower(RelayCellEx relayCellEx)
 {
     return Convert.ToDouble((double)(UnitTrans.dBto((double)relayCellEx.RelayCell.MaxPower) / ((double)(relayCellEx.RelayFreqBandEx.LteFrequencyBand.RBNum * 12))));
 }
Example #6
0
        public static double GetTypeBDataReNumSimplify(RelayCellEx relayCellEx)
        {
            int txNumber = relayCellEx.RelayCell.ParentRN.TxNumber;
            double rBNum = relayCellEx.RelayFreqBandEx.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)));
        }
Example #7
0
        public static double GetTypeBDataReNumComplicated(RelayCellEx relayCellEx)
        {
            int txNumber = relayCellEx.RelayCell.ParentRN.TxNumber;
            double dlPdcchSymbols = relayCellEx.RelayCell.RelayAlgParameter.DlPdcchSymbols;
            double rBNum = relayCellEx.RelayFreqBandEx.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)));
        }
Example #8
0
 public static double GetTypeADataReNumSimplify(RelayCellEx relayCellEx)
 {
     int txNumber = relayCellEx.RelayCell.ParentRN.TxNumber;
     double rBNum = relayCellEx.RelayFreqBandEx.LteFrequencyBand.RBNum;
     //一个RB的带宽=12*15k=180K
     double reNumOfRB = 12.0;//yige RB资源块包含的载波数目,12个,每个载波15K
     switch (txNumber)
     {
         case 1:
         case 2:
             return ((8.0 * reNumOfRB) - (((576.0 - (reNumOfRB * txNumber)) * 7.0) / ((10.0 * rBNum) * 8.0)));
     }
     return ((7.0 * reNumOfRB) - (((576.0 - (reNumOfRB * txNumber)) * 6.0) / ((10.0 * rBNum) * 8.0)));
 }
Example #9
0
 private void SetPTotal(RelayCellEx relayCellEx)
 {
     double rsPowerOftotal = 0.0;
     double pcfichPower = 0.0;
     double PhichPower = 0.0;
     double PDCCHPower = 0.0;
     float rSPower = relayCellEx.RelayCell.RSPower;
     int rBNum = relayCellEx.RelayCell.FreqBand.RBNum;
     float bandWidth = relayCellEx.RelayCell.FreqBand.BandWidth;
     rsPowerOftotal = AdvancedSettingTable.GetRSREInPDCCH(rBNum) * UnitTrans.dBto((double)rSPower);
     pcfichPower = AdvancedSettingTable.GetPCFICH() * UnitTrans.dBto((double)(rSPower + relayCellEx.RelayCell.PCFICHPoffset));
     PhichPower = AdvancedSettingTable.GetPhichRENumByBandWidth(bandWidth) * UnitTrans.dBto((double)(rSPower + relayCellEx.RelayCell.PHICHPoffset));
     PDCCHPower = AdvancedSettingTable.GetPDCCHReNum(relayCellEx.RelayCell.ParentRN.TxNumber, relayCellEx.RelayCell.RelayAlgParameter.DlPdcchSymbols, rBNum, bandWidth) * UnitTrans.dBto((double)(rSPower + relayCellEx.RelayCell.PDCCHPoffset));
     relayCellEx.PTotalForPDCCH = ((rsPowerOftotal + pcfichPower) + PhichPower) + PDCCHPower;
     PDCCHPower = AdvancedSettingTable.GetPDCCHReNum(relayCellEx.RelayCell.ParentRN.TxNumber, 1, rBNum, bandWidth) * UnitTrans.dBto((double)(rSPower + relayCellEx.RelayCell.PDCCHPoffset));
     relayCellEx.PTotalForPCFICH = ((rsPowerOftotal + pcfichPower) + PhichPower) + PDCCHPower;
     double num8 = relayCellEx.RSRENumOfPDSCH * relayCellEx.DlRsREPower;
     double num9 = relayCellEx.PDSCHTotalPower * relayCellEx.RelayCell.ActualDlLoad;
     relayCellEx.PTotalForPDSCH = num8 + num9;
 }
Example #10
0
 public static double GetPDSCHTotalPower(RelayCellEx relayCellEx, double numTypeADataRE, double numTypeBDataRE)
 {
     double nomRSREPower = GetNomRSREPower(relayCellEx);
     double typeBDataREPower = GetTypeBDataREPower(relayCellEx, nomRSREPower);
     return ((nomRSREPower * numTypeADataRE) + (typeBDataREPower * numTypeBDataRE));
 }
Example #11
0
 private void GetTDDSubFrameMatrix(RelayCellEx cellEx)
 {
     this.m_TDDSubFrameMatrix = cellEx.RelayCell.ParentRN.SubFrameMatrix;
     int a = 0;
     int b = 0;
     for (int subFrameIndex = 0; subFrameIndex < 10; subFrameIndex++)
     {
         if (m_TDDSubFrameMatrix[m_RelaySubFrameCongig, subFrameIndex] == 0 || m_TDDSubFrameMatrix[m_RelaySubFrameCongig, subFrameIndex] == 2)
         {
             a++;
         }
         if (m_TDDSubFrameMatrix[m_LteSubFrameCongig, subFrameIndex] == 3)
         {
             b++;
         }
     }
     m_a = (double)(a - b) / (double)a;
     m_b = (double)b / (double)a;
 }
Example #12
0
 private void GetRelayULMimo(RelayCellEx relayCellEx)
 {
     RelayCell relayCell = relayCellEx.RelayCell;
     LTETerminal terminal = this.m_Group.TrafficTerminal.NetTerminalList[0] as LTETerminal;
     //Transceiver parent = relayCell.Parent;
     MIMO mimo = this.m_ITrafficMCS.GetMIMO(terminal.TxAntNumber, relayCell.ParentRN.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 + relayCell.ParentRN.Name + ",";
     }
     relayCellEx.ULMIMO = mimo;
 }
Example #13
0
 private void GetRelayULDemodulationTable(RelayCellEx relayCellEx, float uLBLER)
 {
     relayCellEx.ULDemodulationTable = this.m_ITrafficMCS.GetDemodulation(relayCellEx.RelayCell.Reception, this.m_Group.TrafficMobility, relayCellEx.ULMIMO, uLBLER);
 }
Example #14
0
 private void GetRelayDLDemodulationTable(RelayCellEx relayCellEx, float dLBLER)
 {
     relayCellEx.DLDemodulationTable = this.m_ITrafficMCS.GetDemodulation(this.m_Group.TrafficTerminal.Reception, this.m_Group.TrafficMobility, relayCellEx.DLMIMO, dLBLER);
 }
Example #15
0
 public static double GetPbchRePower(RelayCellEx relayCellEx)
 {
     return UnitTrans.dBto((double)(relayCellEx.RelayCell.RSPower + relayCellEx.RelayCell.BCHPoffset));
 }
Example #16
0
        private static RoAandRoB GetRoAandRoB(RelayCellEx relayCellEx, double dataRePower)
        {
            int txNumber = relayCellEx.RelayCell.ParentRN.TxNumber;
            int pB = relayCellEx.RelayCell.PB;
            RoAandRoB ob = new RoAandRoB();
            double roA = dataRePower / UnitTrans.dBto((double)relayCellEx.RelayCell.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;
        }
Example #17
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;
 }