示例#1
0
        float Get_C_mi_D3(ETrLoadType1 eLT, float fM_i_a, float fM_i_b, float fM_i_s)
        {
            // Moment diagram 3 (Table B.3, p. 79)

            float fAlpha_i_h, fM_i_h;

            float fPsi_i = oBaseMetal.Get_Psi_i___(fM_i_a, fM_i_b);

            if (Math.Abs(fM_i_a) > Math.Abs(fM_i_b))
                fM_i_h = fM_i_a;
            else
                fM_i_h = fM_i_b;

            // ?????????????????????????????????????
            // Calculate fAlpha_i_h
            if (Math.Abs(fM_i_h) <= Math.Abs(fM_i_s) && fM_i_s != 0f)
                fAlpha_i_h = fM_i_h / fM_i_s;
            else // Exception
            {
                if (fM_i_h / fM_i_s < 0f)
                    fAlpha_i_h = -1f;
                else
                    fAlpha_i_h = 1f;
            }
            // ????????????????????????????????????

            if (eLT == ETrLoadType1.eTrLoadType_U)  //Uniform loading
            {
                if (fAlpha_i_h > 0f)
                    return 0.95f + 0.05f * fAlpha_i_h;
                else
                {
                    if (fPsi_i >= 0f)
                        return 0.95f - 0.05f * fAlpha_i_h;
                    else
                        return 0.95f + 0.05f * fAlpha_i_h * (1f + 2f * fPsi_i);
                }
            }
            else /*if (eLT == ETrLoadType1.eTrLoadType_C || eLT != ETrLoadType1.eTrLoadType_U)*/  // Concentrated loading
            {
                if (fAlpha_i_h > 0f)
                    return 0.90f + 0.1f * fAlpha_i_h;
                else
                {
                    if (fPsi_i >= 0f)
                        return 0.90f - 0.1f * fAlpha_i_h;
                    else
                        return 0.90f + 0.1f * fAlpha_i_h * (1f + 2f * fPsi_i);
                }
            }
        }
示例#2
0
        float Get_C_mi_D2(ETrLoadType1 eLT, float fM_i_a, float fM_i_b, float fM_i_s)
        {
            // Moment diagram 2 (Table B.3, p. 79)

            float fAlpha_i_s, fM_i_h;
            float fPsi_i = oBaseMetal.Get_Psi_i___(fM_i_a, fM_i_b);

            if (Math.Abs(fM_i_a) > Math.Abs(fM_i_b))
                fM_i_h = fM_i_a;
            else
                fM_i_h = fM_i_b;

            // ?????????????????????????????????????
            // Calculate fAlpha_i_s
            if (Math.Abs(fM_i_s) <= Math.Abs(fM_i_h) && fM_i_h != 0f)
                fAlpha_i_s = fM_i_s / fM_i_h;
            else  // Exception
            {
                if (fM_i_s / fM_i_h < 0f)
                    fAlpha_i_s = -1f;
                else
                    fAlpha_i_s = 1f;
            }
            // ????????????????????????????????????

            if (eLT == ETrLoadType1.eTrLoadType_U)  //Uniform loading
            {
                if (fAlpha_i_s > 0f)
                    return (float)Math.Max(0.2f + 0.8f * fAlpha_i_s, 0.4f);
                else
                {
                    if (fPsi_i >= 0f)
                        return (float)Math.Max(0.1f - 0.8f * fAlpha_i_s, 0.4f);
                    else
                        return (float)Math.Max(0.1f * (0.1f - fPsi_i) - 0.8f * fAlpha_i_s, 0.4f);
                }
            }
            else /*if (eLT == ETrLoadType1.eTrLoadType_C || eLT != ETrLoadType1.eTrLoadType_U)*/  // Concentrated loading
            {
                if (fAlpha_i_s > 0)
                    return (float)Math.Max(0.2 + 0.8 * fAlpha_i_s, 0.4f);
                else
                {
                    if (fPsi_i >= 0f)
                        return (float)Math.Max(-0.8 * fAlpha_i_s, 0.4f);
                    else
                        return (float)Math.Max(0.2 * (-fPsi_i) - 0.8 * fAlpha_i_s, 0.4f);
                }
            }
        }