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)); }
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); }