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 #2
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阈值,饱和截面
Exemple #3
0
    public static Neuron_network ElectronLET()
    {
        double[]       iw2          = { 4.40554824978072, -2.81064364523242, -3.03512283712394, 9.91858288567110, 2.60301088165564 };
        double[]       lw2          = { 11.4180773930414, -2.74604567663715, -0.0162365504655352, -0.721185700576192, -1.80969138100576 };
        double[]       b12          = { -6.13262944318743, 3.39853818000505, -0.415136851360895, 12.1386316411607, 3.32427909745692 };
        double         b22          = 15.6828753002702;
        Neuron_network LET_electron = new Neuron_network(iw2, lw2, b12, b22, 5, 3.0, -2.0, 46.7, 1.53, true, false);

        return(LET_electron);
    }
Exemple #4
0
    public static Neuron_network ProtonLET()
    {
        double[]       iw         = { 6.86733640551202, 5.08313763261494, -44.3418366892818, -1.99877898702244, -4.72829769037351 };
        double[]       lw         = { -0.0273795368754960, 0.0398208891139150, 0.00355504412093733, 2.24473564071721, -1.59960731323085 };
        double[]       b1         = { -4.63511389379558, -3.35984406955077, 4.47247412693705, -1.27467476368094, -4.14729630697173 };
        double         b2         = -0.367810983024666;
        Neuron_network LET_proton = new Neuron_network(iw, lw, b1, b2, 5, 3.0, -2.0, 538, 1.805, true, false);

        return(LET_proton);
    }
Exemple #5
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);
    }