Ejemplo n.º 1
0
        /// <summary>
        /// 生成基本组合:由永久荷载控制
        /// </summary>
        private void CreatFundamentalComb_DL()
        {
            //由活载控制的基本组合
            List <BLoadCase> List_V = new List <BLoadCase>(); //所有可变荷载工况列表

            List_V.AddRange(List_LL);                         //活
            List_V.AddRange(List_WL);                         //风
            List_V.AddRange(List_TL);                         //温

            List <BLoadCase[]> c = new List <BLoadCase[]>();  //可变荷载组合列表

            for (int i = 1; i <= List_V.Count; i++)
            {
                List <BLoadCase[]> ci = PermutationAndCombination <BLoadCase> .GetCombination(List_V.ToArray(), i);

                c.AddRange(ci);
            }
            //生成完整组合
            for (int i = 0; i < c.Count; i++)
            {
                LCType     ctrT  = LCType.D;      //控制工况类型:恒载
                BLoadCombG LComb = new BLoadCombG(ctrT);
                LComb.NAME = "C1";                //临时取个名
                LComb.KIND = LCKind.GEN;
                foreach (BLoadCase lc in List_DL) //恒
                {
                    double       F_DL   = FF.getPartialF_ctr(LCType.D);
                    BLCFactGroup lcf_DL = new BLCFactGroup(lc, F_DL);
                    LComb.AddLCFactGroup(lcf_DL);
                }

                int num_LL = c[i].Length;

                for (int j = 0; j < num_LL; j++)
                {
                    LCType       lct    = c[i][j].LCType;
                    BLCFactGroup lcf_LL = new BLCFactGroup(c[i][j],
                                                           FF.getPartialF(lct) * FF.getLamd_LL(lct) *
                                                           FF.getCombinationF(lct));
                    LComb.AddLCFactGroup(lcf_LL);//添加组合活荷载
                }

                LComb.DESC = LComb.ToString();//指定组合描述
                BLT.AddEnforce(LComb);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 由工况类型取得行数的对应关系
        /// </summary>
        /// <param name="type">工况类型</param>
        /// <returns>表中的行索引</returns>
        public int LCindex(LCType type)
        {
            int LCindex = 0;

            switch (type)
            {
            case LCType.D: LCindex = 0; break;

            case LCType.L: LCindex = 1; break;

            case LCType.W: LCindex = 2; break;

            case LCType.T: LCindex = 3; break;

            default: LCindex = 0; break;
            }
            return(LCindex);
        }
Ejemplo n.º 3
0
 private static string GetLocalizationInfo(int LCID, LCType type)
 {
     StringBuilder sb = new StringBuilder();
     int count = GetLocaleInfo((uint)LCID, (uint)type, sb, 0);
     sb = new StringBuilder(count);
     GetLocaleInfo((uint)LCID, (uint)type, sb, count);
     return sb.ToString();
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 查得不控制时的分项系数
        /// </summary>
        /// <param name="type"></param>
        /// <returns>系数值</returns>
        public double getPartialF(LCType type)
        {
            int i = this.LCindex(type);//取得行索引

            return((double)_FTable.Rows[i]["PartialF"]);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 查得组合值系数
        /// </summary>
        /// <param name="type"></param>
        /// <returns>系数值</returns>
        public double getCombinationF(LCType type)
        {
            int i = this.LCindex(type);//取得行索引

            return((double)_FTable.Rows[i]["CombinationF"]);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 查得活载使用年限调整系数
        /// </summary>
        /// <param name="type"></param>
        /// <returns>系数值</returns>
        public double getLamd_LL(LCType type)
        {
            int i = this.LCindex(type);//取得行索引

            return((double)_FTable.Rows[i]["Lamd_LL"]);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 生成基本组合:由可变荷载控制
        /// </summary>
        /// <param name="DL_Favour">恒载是否有利</param>
        private void CreatFundamentalComb_VL(bool DL_Favour)
        {
            //由活载控制的基本组合
            List <BLoadCase> List_V = new List <BLoadCase>(); //所有可变荷载工况列表

            List_V.AddRange(List_LL);                         //活
            List_V.AddRange(List_WL);                         //风
            List_V.AddRange(List_TL);                         //温

            List <BLoadCase[]> c = new List <BLoadCase[]> (); //可变荷载组合列表

            for (int i = 1; i <= List_V.Count; i++)
            {
                List <BLoadCase[]> ci = PermutationAndCombination <BLoadCase> .GetCombination(List_V.ToArray(), i);

                if (i == 1)
                {
                    c.AddRange(ci);
                    continue;
                }
                //按主控制工况进行办换顺序
                foreach (BLoadCase[] cc in ci)
                {
                    List <BLoadCase[]> cn = PermutationAndCombination <BLoadCase> .GetPermutationOne(cc);

                    c.AddRange(cn);
                }
            }
            //生成完整组合
            for (int i = 0; i < c.Count; i++)
            {
                LCType     ctrT  = c[i][0].LCType; //控制工况类型
                BLoadCombG LComb = new BLoadCombG(ctrT);
                LComb.NAME = "C1";                 //临时取个名
                LComb.KIND = LCKind.GEN;
                foreach (BLoadCase lc in List_DL)  //恒
                {
                    double F_DL = 1.0;
                    if (DL_Favour)
                    {
                        F_DL = FF.Rgn_DL;//恒载有利;
                    }
                    else
                    {
                        F_DL = FF.Rg_DL;//恒载不利;
                    }
                    BLCFactGroup lcf_DL = new BLCFactGroup(lc, F_DL);
                    LComb.AddLCFactGroup(lcf_DL);
                }

                int num_LL = c[i].Length;

                BLCFactGroup lcf_zLL = new BLCFactGroup(c[i][0],
                                                        FF.getPartialF_ctr(c[i][0].LCType) * FF.getLamd_LL(c[i][0].LCType));
                LComb.AddLCFactGroup(lcf_zLL);//添加控制活荷载工况

                if (num_LL > 1)
                {
                    for (int j = 1; j < num_LL; j++)
                    {
                        LCType       lct    = c[i][j].LCType;
                        BLCFactGroup lcf_LL = new BLCFactGroup(c[i][j],
                                                               FF.getPartialF_ctr(lct) * FF.getLamd_LL(lct) *
                                                               FF.getCombinationF(lct));
                        LComb.AddLCFactGroup(lcf_LL);//添加组合活荷载
                    }
                }

                LComb.DESC = LComb.ToString();//指定组合描述
                BLT.AddEnforce(LComb);
            }
        }