예제 #1
0
    public static double BRBNcre_asym(
        [ExcelArgument(Name = "Kg", Description = "Gusset rotational stiffness")] double Kg,
        [ExcelArgument(Name = "Kr", Description = "Restrainer end rotational stiffness")] double Kr,
        [ExcelArgument(Name = "ξL0", Description = "Connection buckling length")] double ξL0,
        [ExcelArgument(Name = "γEIr", Description = "Connection flexural stiffness")] double γEIr,
        [ExcelArgument(Name = "L0", Description = "Full brace buckling length")] double L0,
        [ExcelArgument(Name = "EIr", Description = "Restrainer flexural stiffness")] double EIr,
        [ExcelArgument(Name = "Tolerance", Description = "Load increment [default = 1·force unit]")] object _tol)
    {
        // increments are based on N/Ncr0
        double tol  = Check <double>(_tol, 1);
        double Ncr0 = BRBNcr0(ξL0, γEIr);

        double ke = ElasticBuckling.ke_crit(N => ElasticBuckling.det_asym(N,
                                                                          BRBnorm_K(Kg, ξL0, γEIr), BRBnorm_K(Kr, ξL0, γEIr), ξL0 / L0, γEIr / EIr),
                                            1, tol / Ncr0, 1);

        if (double.IsInfinity(ke))
        {
            return(0);
        }
        else
        {
            return(Ncr0 / Pow(ke, 2));
        }
    }
예제 #2
0
    public static double BRBke_asym(
        [ExcelArgument(Name = "κg", Description = "Normalized gusset rotational stiffness (Kg·ξL0/γEIr)")] double κg,
        [ExcelArgument(Name = "κr", Description = "Normalized restrainer end rotational stiffness (Kr·ξL0/γEIr)")] double κr,
        [ExcelArgument(Name = "ξ", Description = "Ratio of connection to full buckling length (ξL0/L0)")] double ξ,
        [ExcelArgument(Name = "γ", Description = "Ratio of connection to restrainer flexural stiffness (γEIr/EIr)")] double γ,
        [ExcelArgument(Name = "Tolerance", Description = "Load increment = tol·Ncr0 [default = 0.0001]")] object _tol,
        [ExcelArgument(Name = "Mode", Description = "Mode number [default = 1]")] object _mode,
        [ExcelArgument(Name = "Maximum", Description = "Maximum [default = 2.0]")] object _max)
    {
        // increments are based on N/Ncr0
        double tol  = Check <double>(_tol, 0.0001);
        double mode = Check <double>(_mode, 1);
        double max  = Check <double>(_max, 2);

        return(ElasticBuckling.ke_crit(N => ElasticBuckling.det_asym(N, κg, κr, ξ, γ), mode, tol, max));
    }