Exemple #1
0
    static double Weibull_1(double x)
    {
        double[]       iw      = { -6.94788897658893, 7.06466860254654, 6.48566799525212, -7.16499577994326, -20.0488220313215 };
        double[]       lw      = { 0.0564593834794398, 0.0888485956702163, 0.0569588186398885, -0.0882099550386574, -6.22203776041643 };
        double[]       b1      = { 7.02625749805833, -3.00547732132522, 0.934092266745334, -4.29365188842030, -20.7167007472045 };
        double         b2      = -5.49547459813758;
        Neuron_network weibull = new Neuron_network(iw, lw, b1, b2, 5, 112.0, 1.1, -6.8327, -11.1791, false, false);

        return(Math.Pow(10, weibull.input(x)));
    }//LET阈值,饱和截面
    public static double getNIEL(double x)
    {
        double[]       iw           = { -11.5772178845514, -8.88127201605640, -3.59371936318553, 3.15880004896414, 7.85575805562293 };
        double[]       lw           = { 0.0221103684350823, 0.130030957979784, 0.470082360480904, -0.426894841764735, 5.00525322882412 };
        double[]       b1           = { 10.5172229042891, 4.41766107430249, 0.0947560961092802, 1.34147991249607, 9.45152940865414 };
        double         b2           = -4.96372881763975;
        Neuron_network NIEL_network = new Neuron_network(iw, lw, b1, b2, 5, 4.0, -3.699, 0.7497, -2.9431, true, true);

        return(NIEL_network.input(x));
    }
Exemple #3
0
    static double getSEE(double[] e1, double[] f1, int material)
    {
        Neuron_network n      = ProtonLET();
        double         result = 0;

        for (int i = 0; i < e1.Length - 1; i++)
        {
            if (e1[i] == 0)
            {
                continue;
            }
            double[] w = { 0, 0 };
            switch (material)
            {
            case 1:
                w[0] = Weibull_1(n.input(e1[i]));
                w[1] = Weibull_1(n.input(e1[i + 1]));
                break;

            case 2:
                w[0] = Weibull_2(n.input(e1[i]));
                w[1] = Weibull_2(n.input(e1[i + 1]));
                break;

            case 3:
                w[0] = Weibull_3(n.input(e1[i]));
                w[1] = Weibull_3(n.input(e1[i + 1]));
                break;

            case 4:
                w[0] = Weibull_4(n.input(e1[i]));
                w[1] = Weibull_4(n.input(e1[i + 1]));
                break;
            }
            result += (f1[i] * w[0] + f1[i + 1] * w[1]) * Math.Abs(n.input(e1[i + 1]) - n.input(e1[i])) / 2;
        }

        return(result * 6e6);
    }