示例#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);
            }
        }
示例#2
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);
            }
        }