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