Ejemplo n.º 1
0
        public double GetInteractionRatio
        (
            CombinationCaseId comboCaseId,
            double N_u,
            double T_uTorsion,
            double M_ux,
            double M_uy,
            double V_ur,
            double phiN_n,
            double phiT_nTorsion,
            double phiM_x,
            double phiM_y,
            double phiV_rn,
            double ForceTolerance = 0.05
        )
        {
            double N  = N_u == 0 ? 0 : Math.Abs(N_u / phiN_n);
            double T  = T_uTorsion == 0 ? 0 : Math.Abs(T_uTorsion / phiT_nTorsion);
            double Mx = M_ux == 0 ? 0 : Math.Abs(M_ux / phiM_x);
            double My = M_uy == 0 ? 0 : Math.Abs(M_uy / phiM_y);
            double V  = V_ur == 0 ? 0 : Math.Abs(V_ur / phiV_rn);

            double tf = N_u * ForceTolerance;  //threshholdForce
            double tm = M_ux * ForceTolerance; //threshholdMoment


            double InteractionRatio    = 1;
            double InteractionRatioPMM = 1;
            double InteractionRatioV   = 1;

            switch (comboCaseId)
            {
            case CombinationCaseId.H1:
                InteractionRatioV = T + V;
                if (N >= 0.2)
                {
                    InteractionRatioPMM = N + 8.0 / 9.0 * (Mx + My); //H1-1a
                }
                else
                {
                    InteractionRatioPMM = N / 2.0 + (Mx + My);      //H1-1b
                }
                if (InteractionRatioV != 0)
                {
                    InteractionRatio = Math.Min(Math.Abs(InteractionRatioPMM), Math.Abs(InteractionRatioV));
                }
                else
                {
                    InteractionRatio = Math.Abs(InteractionRatioPMM);
                }

                break;

            case CombinationCaseId.H2:
                InteractionRatioPMM = N + Mx + My;
                InteractionRatioV   = T + V;
                if (InteractionRatioV != 0)
                {
                    InteractionRatio = Math.Min(Math.Abs(InteractionRatioPMM), Math.Abs(InteractionRatioV));
                }
                else
                {
                    InteractionRatio = Math.Abs(InteractionRatioPMM);
                }
                break;

            case CombinationCaseId.H3:
                InteractionRatioPMM = N / 2.0 + (Mx + My);      //H2-1
                break;

            case CombinationCaseId.Linear:
                InteractionRatio = N + Mx + My + T + V;
                break;

            case CombinationCaseId.Elliptical:
                InteractionRatio = Math.Pow(N, 2) + Math.Pow(Mx, 2) + Math.Pow(My, 2) + Math.Pow(V, 2) + Math.Pow(T, 2);
                break;

            case CombinationCaseId.Cubic:     //Used in Design Guide 2 for web openings
                InteractionRatio = Math.Pow(N, 3) + Math.Pow(Mx, 3) + Math.Pow(My, 3) + Math.Pow(V, 3) + Math.Pow(T, 3);
                break;

            case CombinationCaseId.Anchorage:
                InteractionRatio = Math.Pow(N, 5.0 / 3.0) + Math.Pow(Mx, 5.0 / 3.0) + Math.Pow(My, 5.0 / 3.0) + Math.Pow(V, 5.0 / 3.0) + Math.Pow(T, 5.0 / 3.02);
                break;

            case CombinationCaseId.Plastic:
                // BO DOWSWELL
                //Plastic Strength of Connection Elements
                //ENGINEERING JOURNAL / FIRST QUARTER / 2015
                InteractionRatio = Math.Pow(N, 2) + Math.Pow(Mx, 1.7) + Math.Pow(My, 1.7) + Math.Pow(V, 4) + Math.Pow(T, 2);
                break;

            default:
                InteractionRatio = Math.Pow(N, 2) + Math.Pow(Mx, 1.7) + Math.Pow(My, 1.7) + Math.Pow(V, 4) + Math.Pow(T, 2);
                break;
            }

            List <double> IndividualIRs = new List <double>
            {
                N,
                T,
                Mx,
                My,
                V,
                InteractionRatio
            };
            //Summation of interaction ratios cannot be better than any individual one
            double IR_Adjusted = IndividualIRs.Max();

            return(IR_Adjusted);
        }
Ejemplo n.º 2
0
        public double GetInteractionRatio
            (
            CombinationCaseId comboCaseId,
            double N_u,
            double T_uTorsion,
            double M_ux,
            double M_uy,
            double V_ur,
            double phiN_n,
            double phiT_nTorsion,
            double phiM_x,
            double phiM_y,
            double phiV_rn,
            double ForceTolerance = 0.05
            )
        {
            double N = N_u       ==0 ? 0 : Math.Abs(N_u/phiN_n);
            double T = T_uTorsion==0 ? 0 : Math.Abs(T_uTorsion/phiT_nTorsion);
            double Mx =M_ux      ==0 ? 0 : Math.Abs( M_ux/phiM_x);
            double My= M_uy      ==0 ? 0 : Math.Abs(M_uy/phiM_y);
            double V = V_ur      ==0 ? 0 : Math.Abs(V_ur/phiV_rn);

            double tf = N_u * ForceTolerance; //threshholdForce
            double tm = M_ux * ForceTolerance; //threshholdMoment


            double InteractionRatio = 1;
            double InteractionRatioPMM = 1;
            double InteractionRatioV = 1;

            switch (comboCaseId)
	        {
		        case CombinationCaseId.H1:
                    InteractionRatioV = T+V;
                    if (N>=0.2)
                    {
                        InteractionRatioPMM = N+8.0/9.0*(Mx+My); //H1-1a
                    }
                    else
                    {
                        InteractionRatioPMM = N / 2 + (Mx + My);  //H1-1b
                    }
                        if (InteractionRatioV!=0)
                        {
                            InteractionRatio = Math.Min(Math.Abs(InteractionRatioPMM), Math.Abs(InteractionRatioV));
                        }
                        else
                        {
                            InteractionRatio = Math.Abs(InteractionRatioPMM);
                        }
                    
                 break;
                case CombinationCaseId.H2:
                 InteractionRatioPMM = N + Mx + My;
                 InteractionRatioV = T + V;
                         if (InteractionRatioV != 0)
                         {
                             InteractionRatio = Math.Min(Math.Abs(InteractionRatioPMM), Math.Abs(InteractionRatioV));
                         }
                         else
                         {
                             InteractionRatio = Math.Abs(InteractionRatioPMM);
                         }
                 break;
                case CombinationCaseId.H3:
                    InteractionRatioPMM = N / 2 + (Mx + My);  //H2-1
                 break;
                case CombinationCaseId.Linear:
                 InteractionRatio = N + Mx + My+T+V;
                 break;
                case CombinationCaseId.Elliptical:
                 InteractionRatio = Math.Pow(N, 2) + Math.Pow(Mx, 2) + Math.Pow(My, 2) + Math.Pow(V, 2) + Math.Pow(T, 2);
                 break;
                case CombinationCaseId.Cubic: //Used in Design Guide 2 for web openings
                 InteractionRatio = Math.Pow(N, 3) + Math.Pow(Mx, 3) + Math.Pow(My, 3) + Math.Pow(V, 3) + Math.Pow(T, 3);
                 break;

                case CombinationCaseId.Anchorage:
                 InteractionRatio = Math.Pow(N, 5.0 / 3.0) + Math.Pow(Mx, 5.0 / 3.0) + Math.Pow(My, 5.0 / 3.0) + Math.Pow(V, 5.0 / 3.0) + Math.Pow(T, 5.0 / 3.02);
                 break;
                case CombinationCaseId.Plastic:
                  // BO DOWSWELL
                 //Plastic Strength of Connection Elements
                 //ENGINEERING JOURNAL / FIRST QUARTER / 2015 
                 InteractionRatio = Math.Pow(N, 2) + Math.Pow(Mx, 1.7) + Math.Pow(My,1.7) + Math.Pow(V, 4) + Math.Pow(T, 2);
                 break;
                default:
                 InteractionRatio = Math.Pow(N, 2) + Math.Pow(Mx, 1.7) + Math.Pow(My, 1.7) + Math.Pow(V, 4) + Math.Pow(T, 2);
                 break;
	        }

            return InteractionRatio;
        }