Beispiel #1
0
 /// <summary>
 /// 计算backhaul链路的路损
 /// </summary>
 /// <param name="lteCell"></param>
 /// <param name="relayCell"></param>
 /// <returns></returns>
 public Dictionary<int, List<float>> CaclBackhaulPathLoss(LTECell lteCell, RelayCell relayCell)
 {
     //一个lteCell有两根天线,每根天线存一个路损值和天线值
     float calcResolution = 0;   
     SetCellResolution(lteCell, ref calcResolution);
     PathLossCalcParam[] cellCalcPara = m_CalcParamFactory.GetCellCalcPara(lteCell, calcResolution);
     Dictionary<int, List<float>> antennaPathLoss = new Dictionary<int, List<float>>();
     for (int i = 0; i < cellCalcPara.Length; i++)
     {
         float pathLoss = 0;
         float antGain = 0;
         SectionPathLossCalcParam sectionParam = cellCalcPara[i].SectionParamArray[0];
         IPathLossCalculator calcMethod = GetCalcMethod(sectionParam);
         if (calcMethod != null)
         {
             GeoXYLine geoXYLine = new GeoXYLine();
             Dictionary<string, object> modelDetailDictionary = new Dictionary<string, object>();
             pathLoss = calcMethod.CalculatePointPathLoss(sectionParam, geoXYLine, out modelDetailDictionary);
         }
         antGain = CalcAntGain(lteCell, relayCell);
         List<float> list = new List<float>();
         list.Add(pathLoss);
         list.Add(antGain);
         antennaPathLoss.Add(cellCalcPara[i].AntennaConfig.AntennaID, list);
     }
     return antennaPathLoss;
 }
Beispiel #2
0
 public RCToUEAntConfigForm(CollectionsModel model,RelayCell relayCell,string oldName)
 {
     m_CollectionsModel = model;
     m_RelayCell = relayCell;
     m_OldName = oldName;
     InitializeComponent();
     FillAntConfig();
 }
Beispiel #3
0
 //by hxl 用于通过rc拿到包它的simulationcarrier
 public static SimulationCarrier GetSimulationCarrierByRelay(List<SimulationCarrier> allSimulationCarrier, RelayCell rc)
 {
     foreach (SimulationCarrier carrier in allSimulationCarrier)
     {
         if (!carrier.IsLTECell)
         {
             if ((RelayCell)(carrier.Carrier) == rc)
             {
                 return carrier;
             }
         }
     }
     SimulationCarrier targetCarrier = new SimulationCarrier();
     targetCarrier.Carrier = rc;
     return targetCarrier;
 }
Beispiel #4
0
        public static RelayCell CreatRelayCell()
        {
            RelayCell relayCell = new RelayCell();
            //relayCell.ParentRN = new RelayNode();
            //RelayNode relayNode = 
            //m_Site.Equipment = new BtsEquipment();
            //relayCell.Parent.Parent = m_Site;
            relayCell.FreqBand = new FrequencyBand();
            relayCell.FreqBand.BandWidth = 20;
            relayCell.FreqBand.ID = 4;
            relayCell.PropModels.Add(MockPropModelCfg.CreatRelayPropModelCfg());
            AntConfig antConfig=new AntConfig();
            antConfig.DX = 1.0f;
            antConfig.DY = 1.0f;
            antConfig.Parent = relayCell.Tran;
            //antConfig.Parent = MockTrans.CreatTransceiver();
            relayCell.RCToCellAnt = antConfig;
            relayCell.CellToUEAnt = antConfig;
            relayCell.ID = 2;
            return relayCell;

        }
Beispiel #5
0
 //add by xujuan
 private void isRelayOutdoorAntenna(RelayCell cell)
 {
     this.m_StructAntennaParam.AntConfigSetUp = cell.CellToUEAnt; //cell.AntList[1];//即CellToUEAnt
 }
Beispiel #6
0
        ///// <summary>
        ///// backhaul链路上下行损耗 未完成
        ///// </summary>
        ///// <param name="cell"></param>
        ///// <param name="user"></param>
        ///// <returns></returns>
        //private LinkLossStruct[] GetBackhaulUlAndDlLinkLoss(Transceiver cell, User relayUser)
        //{
        //    LinkLossStruct[] structArray = new LinkLossStruct[2];
        //    this.m_StructAntennaParam.MsX = relayUser.X;
        //    this.m_StructAntennaParam.MsY = relayUser.Y;
        //    this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(relayUser.X, relayUser.Y, DemDataType.Height);
        //    float[][] numArray = this.m_iplCalDataVstr.GetPointBackhaulPathLoss(cell, relayUser.X, relayUser.Y);
        //    float penetrationLoss = 0f;
        //    if ((user.Clutter != null) && user.IsIndoor)
        //    {
        //        short buildHeight = 0;
        //        buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building);
        //        penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight);
        //    }


        //    //int key = tranceiver.ID;
        //    //float loss = 0f;
        //    //if (!m_TranceiverClutterloss.TryGetValue(key, out loss))
        //    //{
        //    //    ClutterParamsResult clutterParam = ConfingClutter(tranceiver);

        //    //    loss += GetShadowloss(clutterParam.ShadowStd, isShadow, coverageProb);
        //    //    loss += GetIndoorloss(isIndoorCov, clutterParam);

        //    //    m_TranceiverClutterloss.Add(key, loss);
        //    //}
        //    //return loss;


        //    ////relay一侧设备损耗
        //    //relayUser.Terminal.Reception;
        //    //BtsEquipment btsEquipment = relayCell.ParentRN.Equipment;
        //    //List<AntConfig> antConfigs = new List<AntConfig>();
        //    //antConfigs.Add(relayCell.CellToUEAnt);
        //    double noiseFigureOfBts = 0;// Transceiver.CalculateNoiseFigureOfBts(antConfigs, (double)btsEquipment.NoiseFigure);
        //    float num7 = (float)noiseFigureOfBts + penetrationLoss;
        //    structArray[0].pathLoss = numArray[0][0];
        //    structArray[0].otherTotalLoss = num7;
        //    structArray[1].pathLoss = numArray[0][1];
        //    structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss;
        //    return structArray;
        //}

        /// <summary>
        /// access链路上下行损耗
        /// </summary>
        /// <param name="cell"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private LinkLossStruct[] GetAccessUlAndDlLinkLoss(RelayCell cell, User user)
        {
            LinkLossStruct[] structArray = new LinkLossStruct[2];
            this.m_StructAntennaParam.MsX = user.X;
            this.m_StructAntennaParam.MsY = user.Y;
            this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Height);
            float[][] numArray = m_iGetRelayUEPathLoss.GetRelayUEPointPathLoss(cell, user.X, user.Y);
            float penetrationLoss = 0f;
            if ((user.Clutter != null) && user.IsIndoor)
            {
                short buildHeight = 0;
                buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building);
                penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight);
            }
            float bodyLoss = (user.Service as UnionPsService).BodyLoss;
            float loss = user.Terminal.NetTerminalList[0].Loss;
            float attenuation = user.Terminal.Attenuation;
            float gain = user.Terminal.Gain;
            float num7 = (((bodyLoss + loss) + attenuation) - user.Terminal.Gain) + penetrationLoss;
            structArray[0].pathLoss = numArray[0][0];
            structArray[0].otherTotalLoss = num7;
            structArray[1].pathLoss = numArray[0][1];
            structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss;
            return structArray;
        }
Beispiel #7
0
        /// <summary>
        /// backhaul链路上下行损耗 未完成
        /// </summary>
        /// <param name="cell"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private LinkLossStruct[] GetBackhaulUlAndDlLinkLoss(Transceiver cell, RelayCell relayCell)
        {
            LinkLossStruct[] structArray = new LinkLossStruct[2];
            this.m_StructAntennaParam.MsX = relayCell.ParentRN.X;
            this.m_StructAntennaParam.MsY = relayCell.ParentRN.Y;
            this.m_StructAntennaParam.MsHeight = this.m_GeoInfo.GetValueByGeoXYPoint(relayCell.ParentRN.X, relayCell.ParentRN.Y, DemDataType.Height);
            float[][] numArray = this.m_iplCalDataVstr.GetPointBackhaulPathLoss(cell, relayCell.ParentRN.X, relayCell.ParentRN.Y);
            float penetrationLoss = 0f;

            //todo 判断Relay是否是室内,是的话加穿透损耗
            
            //if ((user.Clutter != null) && user.IsIndoor)
            //{
            //    short buildHeight = 0;
            //    buildHeight = this.m_GeoInfo.GetValueByGeoXYPoint(user.X, user.Y, DemDataType.Building);
            //    penetrationLoss = (float)this.GetPenetrationLoss(user.Clutter.Id, buildHeight);
            //}


            //int key = tranceiver.ID;
            //float loss = 0f;
            //if (!m_TranceiverClutterloss.TryGetValue(key, out loss))
            //{
            //    ClutterParamsResult clutterParam = ConfingClutter(tranceiver);

            //    loss += GetShadowloss(clutterParam.ShadowStd, isShadow, coverageProb);
            //    loss += GetIndoorloss(isIndoorCov, clutterParam);

            //    m_TranceiverClutterloss.Add(key, loss);
            //}
            //return loss;


            //relay一侧设备损耗
            BtsEquipment btsEquipment = relayCell.ParentRN.Equipment;
            List<AntConfig> antConfigs = new List<AntConfig>();
            antConfigs.Add(relayCell.CellToUEAnt);
            double noiseFigureOfBts = Transceiver.CalculateNoiseFigureOfBts(antConfigs, (double)btsEquipment.NoiseFigure);
            float num7 = (float)noiseFigureOfBts + penetrationLoss;
            //backhaul的路损计算减去一个15dB的偏置值
            num7 -= 15;
            structArray[0].pathLoss = numArray[0][0];
            structArray[0].otherTotalLoss = num7;
            structArray[1].pathLoss = numArray[0][1];
            structArray[1].otherTotalLoss = num7 + this.m_StructAntennaParam.AntConfigSetUp.DlTotalLoss;
            return structArray;
        }
Beispiel #8
0
 /// <summary>
 /// access路损 覆盖
 /// </summary>
 /// <param name="ant"></param>
 /// <param name="cell"></param>
 /// <param name="X"></param>
 /// <param name="Y"></param>
 /// <param name="clutterID"></param>
 /// <param name="buildHeight"></param>
 /// <param name="isFirstSuite"></param>
 /// <param name="resolution"></param>
 /// <returns></returns>
 public double[] GetAccessLinkLoss(AntConfig ant, RelayCell cell, double X, double Y, short clutterID, short buildHeight, bool isFirstSuite, float resolution)
 {
     this.m_SFadingMarginAndpenetrationLoss = 0.0;
     float[][] pathLoss = m_iGetRelayUEPathLoss.GetRelayUEPointPathLoss(cell, X, Y); 
     if ((pathLoss[0][0] >= -32768.000001) && (pathLoss[0][0] <= -32767.999999))
     {
         WriteLog.Logger.Error("pathLoss[0][0] is Error:" + pathLoss[0][0].ToString() + "Cell:" + ant.Parent.Name);
     }
     if ((pathLoss[0][1] >= -32768.000001) && (pathLoss[0][1] <= -32767.999999))
     {
         WriteLog.Logger.Error("pathLoss[0][1] is Error:" + pathLoss[0][1].ToString() + "Cell:" + ant.Parent.Name);
     }
     this.m_SFadingMarginAndpenetrationLoss = this.GetSFadingMarginAndPenetrationLoss(clutterID, buildHeight, this.m_IsShadowdowAccout, this.m_IsIndoorCoverage);
     this.m_OutAntSetUpTotalLoss = ant.DlTotalLoss;
     double[] numArray2 = this.GetSingleLinkLoss(ant.Parent, pathLoss, clutterID, isFirstSuite);
     numArray2[0] = this.GetLinkLossWithMCL(numArray2[0]);
     numArray2[1] = this.GetLinkLossWithMCL(numArray2[1]);
     return numArray2;
 }
Beispiel #9
0
        /// <summary>
        /// 计算宏小区到relay的天线增益
        /// </summary>
        /// <param name="lteCell"></param>
        /// <param name="relayCell"></param>
        /// <returns></returns>
        private float CalcAntGain(LTECell lteCell, RelayCell relayCell)
        {
            StructAntennaParam calAntennaParam = new StructAntennaParam();
            int sectorID = lteCell.Parent.AntConfiguration[0].AntennaID;
            calAntennaParam.CellX = lteCell.Parent.Parent.X + lteCell.Parent.GetAntConfig(sectorID).DX;
            calAntennaParam.CellY = lteCell.Parent.Parent.Y + lteCell.Parent.GetAntConfig(sectorID).DY;
            calAntennaParam.IsSimple = false;
            calAntennaParam.AntHeight = m_IGeoInfo.GetValueByGeoXYPoint(calAntennaParam.CellX, calAntennaParam.CellY, DemDataType.Height);

            calAntennaParam.MsX = relayCell.ParentRN.X;//todo:加上偏置?
            calAntennaParam.MsY = relayCell.ParentRN.Y;
            calAntennaParam.MsHeight = m_IGeoInfo.GetValueByGeoXYPoint(relayCell.ParentRN.X, relayCell.ParentRN.Y, DemDataType.Height);
            float antGain = 0;
            calAntennaParam.AntConfigSetUp = lteCell.Parent.GetAntConfig(sectorID);
            antGain = m_AntennaGainCalculator.Calculate3DGain(calAntennaParam);
            return antGain;
        }
Beispiel #10
0
 private float CalculateUlTotalLoss(RelayCell carrier, User user, LinkLossStruct ulLinkLossStruct)
 {
     if (ulLinkLossStruct.pathLoss == float.MinValue)
     {
         return float.MaxValue;
     }
     double num = 0.0;
     float userClutterModeDiviation = UserManager.getInstance().GetUserClutterModeDiviation(this.m_SubSysInterface, user);
     ulLinkLossStruct.pathLoss = Math.Max(ulLinkLossStruct.pathLoss, 73.35696f);
     num = ulLinkLossStruct.pathLoss + this.CalculateShadowFadeValue(carrier, user, this.m_Coefficientabc, userClutterModeDiviation);
     double num3 = Math.Sqrt(((carrier.ParentRN.X - user.X) * (carrier.ParentRN.X - user.X)) + ((carrier.ParentRN.Y - user.Y) * (carrier.ParentRN.Y - user.Y)));
     double num4 = 32.4 + (20.0 * Math.Log10((carrier.FreqBand.ULFrequency * num3) / 1000.0));
     num = (num < num4) ? num4 : num;
     num += ulLinkLossStruct.otherTotalLoss;
     return (float)num;
 }
Beispiel #11
0
 public float CalculateShadowFadeValue(RelayCell carrier, User user, Coefficient abcValue, float sigmma)
 {
     ShadowOrNormal normal;
     float num;
     if (this.m_shadowNormalMapRelay.TryGetValue(user.Id, out normal))
     {
         if (!normal.ShadowSite.TryGetValue(carrier.ParentRN.ID, out num))
         {
             float normalValue = normal.NormalValue;
             num = this.calculateShadow(abcValue, sigmma, normalValue);
             normal.ShadowSite.Add(carrier.ParentRN.ID, num);
         }
         return num;
     }
     float num3 = this.calculateUserNormal(sigmma);
     normal = new ShadowOrNormal(num3);
     num = this.calculateShadow(abcValue, sigmma, num3);
     normal.ShadowSite.Add(carrier.ParentRN.ID, num);
     this.m_shadowNormalMapRelay.Add(user.Id, normal);
     return num;
 }
        public void MyTestInitialize()
        {
            m_DlHOService = new DlHandOverService(m_CurretTti,m_Sfth );
            m_ISourceCarrier = new SimulationCarrier();
            m_ITargetCarrier = new SimulationCarrier();
            m_NgbCaiirer = new SimulationCarrier();
            m_Carrier = new SimulationCarrier();
            m_User = new SimulationUser();
            m_User.LTEUser = new User();
            Service serv = new UnionPsService();
            m_User.LTEUser.Service = serv;
            m_NgbCarrierList = new List<ISimulationCarrier>();

            m_ISourceCarrier.AdmissionCarrierTag = new AdmissionCellTag();
            AdmissionCellTag adCellTag = m_ISourceCarrier.AdmissionCarrierTag as AdmissionCellTag;
            adCellTag.ULSourceOutThroughput = 100;
            m_Carrier.AdmissionCarrierTag = new AdmissionCellTag();


            m_NgbCaiirer.AdmissionCarrierTag = new AdmissionCellTag();
            AdmissionCellTag ngbCellTag = m_NgbCaiirer.AdmissionCarrierTag as AdmissionCellTag;
            ngbCellTag.ULTotalHOThroughput = 50;
            SimulationCarrier temp = m_NgbCaiirer as SimulationCarrier;
            temp.Carrier = new LTECell();

            m_LbUserList = new List<ISimulationUser>();
            SimulationUser user1 = new SimulationUser();
            SimulationUser user2 = new SimulationUser();

            m_LbUserList.Add(user1);
            m_LbUserList.Add(user2);
            m_NgbCarrierList.Add(m_NgbCaiirer);

            m_DlHOVoiceUserList = new List<ISimulationUser>();
            SimulationUser VUser1 = new SimulationUser();
            SimulationUser VUser2 = new SimulationUser();
            m_DlHOVoiceUserList.Add(VUser1);
            m_DlHOVoiceUserList.Add(VUser2);

            CarrierTotalLoss a=new CarrierTotalLoss ();
            
            SimulationCarrier carrier = new SimulationCarrier();
            carrier.IsLTECell = true;
            LTECell lteCell = new LTECell();
            lteCell.RSPower = 15f;
            carrier.Carrier = lteCell;
            CarrierTotalLoss b = new CarrierTotalLoss(carrier, 100f, 100f);
            //SimulationCarrier carrier1 = new SimulationCarrier();
            //b.Carrier = carrier1;
            List<CarrierTotalLoss> listCarrier = new List<CarrierTotalLoss>();
            listCarrier.Add(a);
            listCarrier.Add(b);
            a.Carrier = new SimulationCarrier();
            carrier.IsLTECell = false;
            RelayCell relayCell1 = new RelayCell();
            relayCell1.RSPower = 16f;
            a.Carrier.Carrier = relayCell1;
            b.Carrier = new SimulationCarrier();
            carrier.IsLTECell = false;
            RelayCell relayCell2 = new RelayCell();
            relayCell1.RSPower = 17f;
            b.Carrier.Carrier = relayCell2;
            m_User.BestServiceCellBeforeHandOver = a;
            m_User.StroNbrBeforeHandOver = b;
            user1.BestServiceCellBeforeHandOver = a;
            user1.StroNbrBeforeHandOver = b;
            user2.BestServiceCellBeforeHandOver = a;
            user2.StroNbrBeforeHandOver = b;

            

            user1.CarrierListInComputeArea = listCarrier.ToArray();
            user2.CarrierListInComputeArea = listCarrier.ToArray();
            m_User.CarrierListInComputeArea = listCarrier.ToArray();

            


            List<ISimulationUser> list = new List<ISimulationUser>();
            list.AddRange(m_LbUserList);

            RelayCell relaycarrier = new RelayCell();

            ((SimulationCarrier)m_NgbCaiirer).Carrier = relaycarrier;          
            ((SimulationCarrier)m_ISourceCarrier).Carrier = relaycarrier;
            ((SimulationCarrier)m_ITargetCarrier).Carrier = relaycarrier;
            
            user1.CarrierListInComputeArea[0].Carrier = carrier;
            user1.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier;
            user2.CarrierListInComputeArea[0].Carrier = carrier;
            user2.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier;
            m_User.CarrierListInComputeArea[0].Carrier = carrier;
            m_User.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier;
            user1.CarrierListInComputeArea[1].Carrier = carrier;
            user1.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier;
            user2.CarrierListInComputeArea[1].Carrier = carrier;
            user2.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier;
            m_User.CarrierListInComputeArea[1].Carrier = carrier;
            m_User.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier;
            //m_User.StroNbrBeforeHandOver.Carrier = carrier;
            relaycarrier.RSPower = 100;



            //m_User.StroNbrBeforeHandOver.Carrier = carrier;
            //m_User.BestServiceCellBeforeHandOver.Carrier = carrier;




            Huawei.UNet.Traffic.Map.Interface.User lteuser = new Huawei.UNet.Traffic.Map.Interface.User();
            user1.LTEUser = lteuser;
            user1.ID = 1;

            Huawei.UNet.Traffic.Interface.Terminal terminal = new Huawei.UNet.Traffic.Interface.Terminal();
            user1.LTEUser.Terminal = terminal;

            List<Huawei.UNet.Traffic.Interface.NetworkTerminal> netterminallist = new List<NetworkTerminal>();
            NetworkTerminal networkTerminal = new NetworkTerminal();
            LTETerminal lteterminal = new LTETerminal();
            netterminallist.Add(lteterminal);
            user1.LTEUser.Terminal.NetTerminalList = netterminallist;


            user1.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService();
            ((Huawei.UNet.Traffic.Interface.UnionPsService)(user1.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>();
            ((Huawei.UNet.Traffic.Interface.UnionPsService)(user1.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService());


            user2.LTEUser = lteuser;
            user2.LTEUser.Terminal = terminal;
            user2.ID = 2;
            netterminallist.Add(lteterminal);
            user2.LTEUser.Terminal.NetTerminalList = netterminallist;
            user2.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService();
            ((Huawei.UNet.Traffic.Interface.UnionPsService)(user2.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>();
            ((Huawei.UNet.Traffic.Interface.UnionPsService)(user2.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService());

            m_User.LTEUser = lteuser;
            m_User.ID = 0;
            m_User.LTEUser.Terminal = terminal;
            netterminallist.Add(lteterminal);
            m_User.LTEUser.Terminal.NetTerminalList = netterminallist;
            m_User.LTEUser.Service = new Huawei.UNet.Traffic.Interface.UnionPsService();
            ((Huawei.UNet.Traffic.Interface.UnionPsService)(m_User.LTEUser.Service)).PSServiceDic = new Dictionary<Huawei.UNet.Frame.Interface.NetWorkType, Huawei.UNet.Traffic.Interface.Service>();
            ((Huawei.UNet.Traffic.Interface.UnionPsService)(m_User.LTEUser.Service)).PSServiceDic.Add(NetWorkType.LTE, new Huawei.UNet.Traffic.LTEModel.LTEService());

            //Service service = new Service();
            //UnionPsService psservice = SimulationTools.GetUnionPsService(service);

            //psservice.DlOffset = 0;
            //psservice.DlTxEff = 1;
            //psservice.DlMinThroughputDemand = 0;
            //user1.LTEUser.Service = psservice;

        }
        public void UpDateInfo_Test4()
        {
            RelayCell relaycarrier1 = new RelayCell();
            RelayCell relaycarrier2 = new RelayCell();
            ((SimulationCarrier)m_ISourceCarrier).Carrier = relaycarrier1;
            ((SimulationCarrier)m_ITargetCarrier).Carrier = relaycarrier2;
            relaycarrier1.ID = 6;
            relaycarrier2.ID = 3;
            m_User.StroNbrBeforeHandOver.Carrier.Carrier.ID = 2;
            m_User.BestServiceCellBeforeHandOver.Carrier.ID = 0;

            m_ITargetCarrier.AdmissionCarrierTag = new AdmissionCellTag();
            m_DlHOService.UpdateInfo(m_ISourceCarrier, m_ITargetCarrier, m_User, m_CarrierIndex);
            AdmissionCellTag tag2 = m_ITargetCarrier.AdmissionCarrierTag as AdmissionCellTag;
            tag2.DLAcceptHOThroughput = 1;

        }
Beispiel #14
0
 public bool ValidateObj(string oriRelayCellName, RelayCell relayCell, List<string> excludeRelayCellName)
 {
     this.m_OldName = oriRelayCellName;
     short relayCellId = this.GetRelayCellId(oriRelayCellName);
     string name = relayCell.Name;
     short validatedID = 0;
     IExtractor ex = new RelayCellObjExtractor(relayCell);
     this.m_RelayCellDesc = new RelayCellDesc(this.m_Model, new RelayCell(), excludeRelayCellName);
     bool flag = this.Validate(ref this.m_Info, this.m_RelayCellDesc, ex, relayCellId);
     this.m_SectorValidator.CellName = name;
     flag = flag && this.m_SectorValidator.ValidateObjectWithOutCell(oriRelayCellName, this.GetSectorConfig(relayCell));
     relayCell.CopyFrom(this.m_RelayCellDesc.GetModel());
     return flag;
 }
Beispiel #15
0
 public bool ValidateObj(string oriRelayCellName, RelayCell relayCell)
 {
     List<string> excludeRelayCellName = new List<string>();
     return this.ValidateObj(oriRelayCellName, relayCell, excludeRelayCellName);
 }
Beispiel #16
0
 private AntConfig GetSectorConfig(RelayCell relayCell)
 {
     foreach (AntConfig config in relayCell.AntList)
     {
         if (config.IsMainAnt)
         {
             return config;
         }
     }
     return null;
 }
Beispiel #17
0
 //Todo```
 public void CopyFrom(RelayCell cell)
 {
     m_Ams = cell.Ams;
     m_AmsThreshold = cell.AmsThreshold;
     base.CopyFrom(cell);
     this.m_TAC = cell.TAC;
     m_PhyID = cell.PhyID;
     m_RCToCellAnt = cell.RCToCellAnt;
     m_CellToUEAnt = cell.CellToUEAnt;
     m_RelayUEPropModelConfig = cell.RelayUEPropModelConfig;
     m_SchedulePolicy = cell.SchedulePolicy;
     m_HighSpeed = cell.HighSpeed;
     //m_parentRN = cell.ParentRN;
     m_RSPower = cell.RSPower;
     m_CellRadius = cell.CellRadius;
     m_DlActualTxPower = cell.DlActualTxPower;
     m_BCHPoffset = cell.BCHPoffset;
     m_BCHPower = cell.BCHPower;
     m_BestStartFrequency = cell.BestStartFrequency;
     m_RCellPriority = cell.RCellPriority;
     m_RCellRadius = cell.RCellRadius;
     m_PCFICHPoffset = cell.PCFICHPoffset;
     m_PDCCHPoffset = cell.PDCCHPoffset;
     m_PHICHPoffset = cell.PHICHPoffset; ;
     m_SCHPoffset = cell.SCHPoffset;
     m_SCHPower = cell.SCHPower;
     m_UlActualIoT = cell.UlActualIoT;
     m_RPUCCHPower = cell.RPUCCHPower; //Cal       
     m_RPUSCHPower = cell.RPUSCHPower;
     //add by xg 20100224
     m_RelayAlgParameter = cell.RelayAlgParameter;
     m_PB = cell.PB;
     m_ActualDlLoad = cell.ActualDlLoad;
     m_ActualUlLoad = cell.ActualUlLoad;
     m_PowerBias = cell.PowerBias;
     m_IsIndoor = cell.m_IsIndoor;
     m_DLRsSinrAccessThreshold = cell.DLRsSinrAccessThreshold;
 }
Beispiel #18
0
 public void SetRelayCellByTemplate(RelayCell newRC)
 {
     newRC.UlTargetLoad = this.UlLoad;
     newRC.DlTargetLoad = this.DlLoad;
     newRC.MaxPower = this.Power;
 }
Beispiel #19
0
 //add by lw 3.11为了区别于别的制式
 public void addNewRelayCell(string rcName, ReceptionEquipment reception)
 {
     RelayCell rc = new RelayCell();
     this.SetIACellProperty(rcName, reception, rc);
     this.AddIACellToCarriers(rc);
 }
        public void MyTestInitialize()
        {
            m_NgbCarrierList = new List<ISimulationCarrier>();
            m_AdCarrier1 = new SimulationCarrier();
            m_AdCarrier2 = new SimulationCarrier();
            m_AdCarrier1.AdmissionCarrierTag = new AdmissionCellTag();
            m_AdCarrier2.AdmissionCarrierTag = new AdmissionCellTag();
            m_LbThresHoldParam = new LBThresholdParam();
                       
            m_SUser1 = new SimulationUser();
            m_SUser2 = new SimulationUser();
            m_SUser1.AdmissionUserTag = new SimulationUser();
            m_SUser2.AdmissionUserTag = new SimulationUser();
            
            m_AdmissionCarrier = new SimulationCarrier();
            LTECell ltecarrier = new LTECell();
            m_AdmissionCarrier.Carrier = ltecarrier;
            m_AdCarrier1.Carrier = ltecarrier;
            m_AdCarrier2.Carrier = ltecarrier;

            FrequencyBand freband = new FrequencyBand();
            freband.BandWidth = 100;
            ltecarrier.FreqBand = freband;
            m_AdmissionCarrier.AdmissionCarrierTag = new AdmissionCellTag();

            m_Lbth = new LBThresholdParam();
            m_DLLB = new DlLoadBalancingService(m_CurrentTTI, m_Lbth);

            m_LbUserList = new List<ISimulationUser>();
            m_User1 = new SimulationUser();
            m_User2 = new SimulationUser();
            m_LbUserList.Add(m_User1);
            m_LbUserList.Add(m_User2);

            m_DlDataWaitUserList = new List<ISimulationUser>();
            m_DlDataWaitUserList.Add(m_SUser1);
            m_DlDataWaitUserList.Add(m_SUser2);
            m_AdmissionCarrier.DlDataWaitUserList = m_DlDataWaitUserList;

            m_DlVoiceWaitUserList = new List<ISimulationUser>();
            m_DlVoiceWaitUserList.Add(m_SUser1);
            m_DlVoiceWaitUserList.Add(m_SUser2);
            m_AdmissionCarrier.DlVoiceWaitUserList = m_DlVoiceWaitUserList;
            
            m_NgbList = new List<ISimulationCarrier>();


            RelayCell relaycarrier = new RelayCell();
            LteAlgParam ltealgparam = new LteAlgParam();
            m_AdmissionCarrier.Carrier = relaycarrier;
            m_AdCarrier1.Carrier = relaycarrier;
            m_AdCarrier2.Carrier = relaycarrier;

            m_DlUserList = new List<ISimulationUser>();
            m_DlUserList.Add(m_SUser1);
            m_DlUserList.Add(m_SUser2);
            m_AdmissionCarrier.DlUserList = m_DlUserList;

            m_CarrierListInComputerArea = new CarrierTotalLoss();
            List<CarrierTotalLoss> listcarrier1 = new List<CarrierTotalLoss>();
            CarrierTotalLoss a = new CarrierTotalLoss();
            CarrierTotalLoss b = new CarrierTotalLoss();
            listcarrier1.Add(a);
            listcarrier1.Add(b);
            
            SimulationCarrier carrier = new SimulationCarrier();
            ((SimulationUser)m_SUser1).CarrierListInComputeArea = listcarrier1.ToArray();
            ((SimulationUser)m_SUser2).CarrierListInComputeArea = listcarrier1.ToArray();

            ((SimulationUser)m_SUser1).CarrierListInComputeArea[0].Carrier = carrier;
            ((SimulationUser)m_SUser2).CarrierListInComputeArea[0].Carrier = carrier;
            ((SimulationUser)m_SUser1).CarrierListInComputeArea[1].Carrier = carrier;
            ((SimulationUser)m_SUser2).CarrierListInComputeArea[1].Carrier = carrier;

            ((SimulationUser)m_SUser1).CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier;
            ((SimulationUser)m_SUser2).CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier;
            ((SimulationUser)m_SUser1).CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier;
            ((SimulationUser)m_SUser2).CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier;

            m_User1.CarrierListInComputeArea = listcarrier1.ToArray();
            m_User2.CarrierListInComputeArea = listcarrier1.ToArray();

            m_User1.CarrierListInComputeArea[0].Carrier = carrier;
            m_User2.CarrierListInComputeArea[0].Carrier = carrier;
            m_User1.CarrierListInComputeArea[1].Carrier = carrier;
            m_User2.CarrierListInComputeArea[1].Carrier = carrier;

            m_User1.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier;
            m_User2.CarrierListInComputeArea[0].Carrier.Carrier = relaycarrier;
            m_User1.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier;
            m_User2.CarrierListInComputeArea[1].Carrier.Carrier = relaycarrier;



            m_User1.BestServiceCellBeforeHandOver = a;
            m_User1.StroNbrBeforeHandOver = b;
            m_User2.BestServiceCellBeforeHandOver = a;
            m_User2.StroNbrBeforeHandOver = b;


            m_CarrierListInComputerArea.Carrier = carrier;
            relaycarrier.RSPower = 100;

            

        }
Beispiel #21
0
 /// <summary>
 /// access路损
 /// </summary>
 /// <param name="carrier"></param>
 /// <param name="userList"></param>
 /// <returns></returns>
 public LinkLossStruct[][][] GetAccessLinkLoss(RelayCell carrier, List<User> userList)
 {
     LinkLossStruct[] ulAndDlLinkLoss;
     int num;
     LinkLossStruct[][][] structArray = new LinkLossStruct[userList.Count][][];
     Transceiver parent = carrier.Parent;
     this.m_StructAntennaParam.IsSimple = false;
     isRelayOutdoorAntenna(carrier);
     for (num = 0; num < userList.Count; num++)
     {
         structArray[num] = new LinkLossStruct[][] { new LinkLossStruct[2] };
         ulAndDlLinkLoss = GetAccessUlAndDlLinkLoss(carrier, userList[num]);
         structArray[num][0][0] = ulAndDlLinkLoss[0];
         structArray[num][0][1] = ulAndDlLinkLoss[1];
     }
     return structArray;
 }
Beispiel #22
0
        private void GetRelayNodeList(AlloteAddRelayNodeEventArgs args, List<RelayNode> rnList)
        {
            List<string> candidateSiteName = new List<string>();
            List<short> candidateSiteID = new List<short>();
            List<RelayCell> commitCarrierList = new List<RelayCell>();
            foreach (RelayNode rn in m_RNCollection.RNList)
            {
                candidateSiteName.Add(rn.Name);
            }
            List<double> listX = args.XList;
            List<double> listY = args.YList;
            for (int i = 0; i < listX.Count; i++)
            {
                double num4;
                double num5;
                LTECell parentCell;
                if (m_Model.LTECellColl.CellList == null || m_Model.LTECellColl.CellList.Count == 0)
                {
                    return ;
                }
                else
                {
                    List<LTECell> nearestLTECellList = new List<LTECell>();
                    float distance = float.MaxValue;
                    LTECell nearestLTECell = new LTECell();
                    foreach (LTECell cell in m_Model.LTECellColl.CellList)
                    {
                        double dic = Math.Pow((cell.Parent.X - listX[i]), 2) + Math.Pow((cell.Parent.Y - listY[i]), 2);
                        if (dic < distance)
                        {
                            distance = (float)dic;
                            nearestLTECell = cell;
                        }
                    }
                    foreach (LTECell cell in m_Model.LTECellColl.CellList)
                    {
                        double dic = Math.Pow((cell.Parent.X - listX[i]), 2) + Math.Pow((cell.Parent.Y - listY[i]), 2);
                        if (Math.Abs(dic - distance) / distance < 0.0001)
                        {
                            nearestLTECellList.Add(cell);
                        }
                    }
                    List<double> angleList = new List<double>();
                    foreach (LTECell cell in nearestLTECellList)
                    {
                        double rc_Angle = CalcAngle(listX[i] - cell.Parent.X, listY[i] - cell.Parent.Y);
                        double intersectionAngle = Math.Abs(rc_Angle - cell.Parent.AntConfiguration[0].Azimuth);
                        if (intersectionAngle > 180)
                        {
                            intersectionAngle = 360 - intersectionAngle;
                        }
                        angleList.Add(intersectionAngle);
                    }
                    LTECell[] cellArray = new LTECell[angleList.Count];
                    double[] angleArray = new double[angleList.Count];
                    for (int j = 0; j < angleList.Count; j++)
                    {
                        cellArray[j] = nearestLTECellList[j];
                        angleArray[j] = angleList[j];
                    }
                    Array.Sort(angleArray, cellArray);
                    parentCell = cellArray[0];

                }
                RelayNode rn = new RelayNode();
                rn.X = listX[i];
                rn.Y = listY[i];
                this.m_GeoObserver.TransformXYToBL(listX[i], listY[i], out num4, out num5);
                rn.Latitude = num4;
                rn.Longitude = num5;
                rn.Altitude = this.m_GeoObserver.GetDTM(rn.X, rn.Y);//获得海拔高度
                rn.Name = this.GetNewRelayNodeName(candidateSiteName);
                rn.Active = true;
                rn.Visible = true;
                rn.Equipment = this.m_BTSCol.BtsEquipmentList[0];
                rn.Parent = parentCell;
                rn.ID = this.GetNewRelayNodeID(candidateSiteID);
                parentCell.RNList.Add(rn);
                candidateSiteName.Add(rn.Name);
                candidateSiteID.Add(rn.ID);
                rnList.Add(rn);
                RelayCell rc = new RelayCell(rn);
                rc.Name = this.m_RCCollection.GetValidCellName(rn.Name);
                commitCarrierList.Add(rc);
                this.m_RCCollection.AddRelayCell("GIS", commitCarrierList, rn);
                rc.Reception = this.m_ReceptionEquip[0];
                rc.CellToUEAnt.OutdoorAntenna = m_Antenna.FindAntennaByName(m_tplRelayCol.TplRC.AntennaName);
                rc.RCToCellAnt.OutdoorAntenna = m_Antenna.FindAntennaByName(m_tplRelayCol.TplRN.AntennaName);
                PropModelConfig item = new PropModelConfig();
                item.CalcRadius = (int)(m_tplRelayCol.TplRC.MainCalcRidius);
                item.CalcResolution = (int)(m_tplRelayCol.TplRC.MainModelResolution);
                item.PropModelID = m_tplRelayCol.TplRC.MainPropagModelID;
                rc.FreqBand = rc.ParentRN.Parent.FreqBand;
                rc.ChannelIndex = rc.FreqBand.AvailableChIndexList[0];
                rc.PropModels.Clear();
                rc.PropModels.Add(item);
                rc.RelayUEPropModelConfig = rc.PropModels[0];
                commitCarrierList.Clear();
            }
        }