From 391c25ef93c099279272e62cf6aadfbb43360f0a Mon Sep 17 00:00:00 2001 From: "Ryan M. L. McFadden" Date: Mon, 12 Aug 2024 16:24:42 -0700 Subject: [PATCH] more stopping power coefficient options This patch modularizes the code responsible for selecting the stopping power coefficients. Specifically, it: - moves the data in `elemPars` to seperate JSON files in the `data/` directory. This makes it easier to modify the existing data or add new data sources. Note that this refactoring does not alter the previous functionality - the contents of each file are simply read and deep-merged into an initially empty `elemPars` object. - adds the original Varelas-Biersack parameters from Anderson & Ziegler (1977). - updates the "Other Parameters" tab in the GUI for easy toggling between the different stopping power coefficient data sources. --- TrimSP.html | 16 +- TrimSPlib.js | 916 ++++-------------------------------------- data/az_table.json | 830 ++++++++++++++++++++++++++++++++++++++ data/densities.json | 33 ++ data/elements.json | 560 ++++++++++++++++++++++++++ data/iaea_table.json | 623 ++++++++++++++++++++++++++++ data/icru_table.json | 830 ++++++++++++++++++++++++++++++++++++++ data/projectiles.json | 34 ++ 8 files changed, 3005 insertions(+), 837 deletions(-) create mode 100644 data/az_table.json create mode 100644 data/densities.json create mode 100644 data/elements.json create mode 100644 data/iaea_table.json create mode 100644 data/icru_table.json create mode 100644 data/projectiles.json diff --git a/TrimSP.html b/TrimSP.html index 8ac8611..3f69d7c 100644 --- a/TrimSP.html +++ b/TrimSP.html @@ -310,14 +310,20 @@ - + Stopping Power
Coefficients - Force the TRIM.SP code to use stopping power - parameters from the old ICRU tables. - + Data source for the Varelas-Biersack parameterization of electronic + stopping cross-sections for proton-like projectiles implanted in + elemental targets: +
    +
  1. Table 1 in Anderson & Ziegler (1977).
  2. +
  3. Table 3.1 in ICRU Report 49 (1993).
  4. +
  5. Table II in McFadden et al. (2023) and McFadden et al. (unpublished).
  6. +
+ - Use ICRU parameters + IRL diff --git a/TrimSPlib.js b/TrimSPlib.js index 9170096..cc14552 100644 --- a/TrimSPlib.js +++ b/TrimSPlib.js @@ -1,823 +1,64 @@ +// This file contains function that are generic Javascript for TrimSP + // This is an object that contains all GUI ids and values var All = new Object(); -// This is an object that contains all elements and their parameters -// To replace all other functions -const elemPars = { - muon : { - Z : 1 , - A : 0.1134289259 , - rho : 0 , - Elast : 0 , - ICRU : [] , - IAEA : [] - }, - "Li-8" : { - Z : 3 , - A : 8.02248624 , - rho : 0 , - Elast : 0 , - ICRU : [] , - IAEA : [] - }, - "B-12" : { - Z : 5 , - A : 12.0143526 , - rho : 0 , - Elast : 0 , - ICRU : [] , - IAEA : [] - }, - "Mg-31" : { - Z : 12 , - A : 30.996648 , - rho : 0 , - Elast : 0 , - ICRU : [] , - IAEA : [] - }, - H : { - Z : 1 , - A : 1.008 , - rho : 0.08 , - Elast : 0.1 , - ICRU : [1.25400,1.44000,242.60001,12000.00000,0.11590], - IAEA : [1.21941306,1.39705253,316.72610292,3622.08960714,0.03609996] - }, - He : { - Z : 2 , - A : 4.003 , - rho : 0.12 , - Elast : 0.1 , - ICRU : [1.22900,1.39700,484.50000,5873.00000,0.05225] , - IAEA : [] - }, - Li : { - Z : 3 , - A : 6.939 , - rho : 0.53 , - Elast : 1.63 , - ICRU : [1.41100,1.60000,725.59998,3013.00000,0.04578] , - IAEA : [2.55867734,2.98398784,672.22623329,223.63937274,0.05756479] - }, - Be : { - Z : 4 , - A : 9.012 , - rho : 1.85 , - Elast : 3.32 , - ICRU : [2.24800,2.59000,966.00000,153.80000,0.03475] , - IAEA : [2.13846776,2.43024550,1353.80005691,500.78353377,0.01143076] - }, - B : { - Z : 5 , - A : 10.811 , - rho : 2.34 , - Elast : 5.77 , - ICRU : [2.47400,2.81500,1206.00000,1060.00000,0.02855] , - IAEA : [2.92598306,3.33271910,1523.83401267,574.31712932,0.01671298] - }, - C : { - Z : 6 , - A : 12.011 , - rho : 2.26 , - Elast : 7.37 , - ICRU : [2.60100,2.60100,1701.00000,1279.00000,0.01638] , - IAEA : [2.51057212,2.84874359,1325.63086028,2111.57332043,0.03815981] - }, - N : { - Z : 7 , - A : 14.007 , - rho : 1.03 , - Elast : 4.92 , - ICRU : [2.95400,3.35000,1683.00000,1900.00000,0.02513] , - IAEA : [3.03231463,3.44621744,1287.27189959,3445.25706665,0.06909550] - }, - O : { - Z : 8 , - A : 15.999 , - rho : 2 , - Elast : 2.6 , - ICRU : [2.65200,3.00000,1920.00000,2000.00000,0.02230] , - IAEA : [2.58218404,2.91913321,2066.69556610,1937.28839450,0.01708201] - }, - F : { - Z : 9 , - A : 18.998 , - rho : 1.11 , - Elast : 0.84 , - ICRU : [2.08500,2.35200,2157.00000,2634.00000,0.01816] , - IAEA : [] - }, - Ne : { - Z : 10 , - A : 20.183 , - rho : 1.5 , - Elast : 0.02 , - ICRU : [1.95100,2.19900,2393.00000,2699.00000,0.01568] , - IAEA : [] - }, - Na : { - Z : 11 , - A : 22.99 , - rho : 0.97 , - Elast : 1.11 , - ICRU : [2.54200,2.86900,2628.00000,1854.00000,0.01472] , - IAEA : [] - }, - Mg : { - Z : 12 , - A : 24.312 , - rho : 1.74 , - Elast : 1.51 , - ICRU : [3.79100,4.29300,2862.00000,1009.00000,0.01397] , - IAEA : [4.32219620,4.95332934,2711.05757349,99.32422512,0.01692829] - }, - Al : { - Z : 13 , - A : 26.982 , - rho : 2.7 , - Elast : 3.39 , - ICRU : [4.15400,4.73900,2766.00000,164.50000,0.02023] , - IAEA : [4.16266645,4.73942640,3007.21967155,192.15430476,0.01478852] - }, - Si : { - Z : 14 , - A : 28.086 , - rho : 2.33 , - Elast : 4.63 , - ICRU : [4.91400,5.59800,3193.00000,232.70000,0.01419] , - IAEA : [4.56277193,5.17964542,3812.93366288,249.45105835,0.00951865] - }, - P : { - Z : 15 , - A : 30.974 , - rho : 1 , - Elast : 3.43 , - ICRU : [3.23200,3.64700,3561.00000,1560.00000,0.01267] , - IAEA : [] - }, - S : { - Z : 16 , - A : 32.064 , - rho : 2.07 , - Elast : 2.85 , - ICRU : [3.44700,3.89100,3792.00000,1219.00000,0.01211] , - IAEA : [] - }, - Cl : { - Z : 17 , - A : 35.453 , - rho : 2.03 , - Elast : 1.4 , - ICRU : [5.30100,6.00800,3969.00000,645.09998,0.01183] , - IAEA : [5.18954121,5.87010049,5726.20198003,338.90592713,0.00527894] - }, - Ar : { - Z : 18 , - A : 39.948 , - rho : 1.77 , - Elast : 0.08 , - ICRU : [5.73100,6.50000,4253.00000,530.00000,0.01123] , - IAEA : [] - }, - K : { - Z : 19 , - A : 39.102 , - rho : 0.86 , - Elast : 0.93 , - ICRU : [5.15200,5.83300,4482.00000,545.70001,0.01129] , - IAEA : [] - }, - Ca : { - Z : 20 , - A : 40.08 , - rho : 1.55 , - Elast : 1.84 , - ICRU : [5.52100,6.25200,4710.00000,553.29999,0.01120] , - IAEA : [7.38419020,8.41800474,4257.94547049,311.84732092,0.01482602] - }, - Sc : { - Z : 21 , - A : 44.956 , - rho : 2.99 , - Elast : 3.9 , - ICRU : [5.20100,5.88400,4938.00000,560.90002,0.01000] , - IAEA : [6.27366940,7.11486087,5202.32117316,349.64931132,0.00808596] - }, - Ti : { - Z : 22 , - A : 47.9 , - rho : 4.54 , - Elast : 4.85 , - ICRU : [4.85800,5.48900,5260.00000,651.09998,0.00893] , - IAEA : [4.89215322,5.52996090,4733.05002706,821.54929980,0.01141794] - }, - V : { - Z : 23 , - A : 50.942 , - rho : 6.11 , - Elast : 5.31 , - ICRU : [4.47900,5.05500,5391.00000,952.29999,0.00912] , - IAEA : [4.39418898,4.95984106,5216.28902299,873.00768319,0.00982301] - }, - Cr : { - Z : 24 , - A : 51.996 , - rho : 7.19 , - Elast : 4.1 , - ICRU : [3.98300,4.48900,5616.00000,1336.00000,0.00841] , - IAEA : [4.22355616,4.76724205,4805.40719904,1062.25237873,0.01508696] - }, - Mn : { - Z : 25 , - A : 54.938 , - rho : 7.43 , - Elast : 2.92 , - ICRU : [3.46900,3.90700,5725.00000,1461.00000,0.00883] , - IAEA : [3.45870888,3.89580224,5452.18588822,1778.16054656,0.01057380] - }, - Fe : { - Z : 26 , - A : 55.847 , - rho : 7.87 , - Elast : 4.28 , - ICRU : [3.51900,3.96300,6065.00000,1243.00000,0.00778] , - IAEA : [3.69846643,4.16916938,5392.90710239,1040.38447053,0.01152298] - }, - Co : { - Z : 27 , - A : 58.933 , - rho : 8.9 , - Elast : 4.39 , - ICRU : [3.14000,3.53500,6288.00000,1372.00000,0.00736] , - IAEA : [3.55890909,4.00775461,6796.04145497,933.86447935,0.00558368] - }, - Ni : { - Z : 28 , - A : 58.71 , - rho : 8.9 , - Elast : 4.44 , - ICRU : [3.55300,4.00400,6205.00000,555.09998,0.00876] , - IAEA : [3.42262695,3.86234880,4759.65515188,520.18934465,0.02026669] - }, - Cu : { - Z : 29 , - A : 63.54 , - rho : 8.96 , - Elast : 3.49 , - ICRU : [3.69600,4.19400,4649.00000,81.13000,0.02242] , - IAEA : [3.54912421,4.02142201,4344.22605325,128.32905834,0.02886218] - }, - Zn : { - Z : 30 , - A : 65.37 , - rho : 7.13 , - Elast : 1.35 , - ICRU : [4.21000,4.75000,6953.00000,295.20001,0.00681] , - IAEA : [4.31895518,4.91763977,5346.03925560,46.16548699,0.01518164] - }, - Ga : { - Z : 31 , - A : 69.72 , - rho : 5.91 , - Elast : 2.81 , - ICRU : [5.04100,5.69700,7137.00000,202.60001,0.00673] , - IAEA : [4.11015447,4.63998531,7681.41419449,149.38563152,0.00628772] - }, - Ge : { - Z : 32 , - A : 72.59 , - rho : 5.32 , - Elast : 3.85 , - ICRU : [5.55400,6.30000,6496.00000,110.00000,0.00969] , - IAEA : [5.80984815,6.60667983,6039.04808738,87.19744473,0.01158192] - }, - As : { - Z : 33 , - A : 74.922 , - rho : 5.72 , - Elast : 2.96 , - ICRU : [5.32300,6.01200,7611.00000,292.50000,0.00645] , - IAEA : [] - }, - Se : { - Z : 34 , - A : 78.96 , - rho : 4.79 , - Elast : 2.25 , - ICRU : [5.87400,6.65600,7395.00000,117.50000,0.00768] , - IAEA : [5.58734301,6.31119973,8423.01872583,221.61559131,0.00530434] - }, - Br : { - Z : 35 , - A : 79.909 , - rho : 3.14 , - Elast : 1.22 , - ICRU : [6.65800,7.53600,7694.00000,222.30000,0.00651] , - IAEA : [6.28480648,7.09489448,11732.76411988,150.96205589,0.00281298] - }, - Kr : { - Z : 36 , - A : 83.8 , - rho : 3.1 , - Elast : 0.12 , - ICRU : [6.41300,7.24000,11850.00000,153.70000,0.00288] , - IAEA : [6.47378266,7.31581518,9199.06183849,216.98680923,0.00437111] - }, - Rb : { - Z : 37 , - A : 85.47 , - rho : 1.53 , - Elast : 0.85 , - ICRU : [5.69400,6.42900,8478.00000,292.89999,0.00609] , - IAEA : [8.48759187,9.62951209,7271.11124671,272.67996745,0.00818815] - }, - Sr : { - Z : 38 , - A : 87.62 , - rho : 2.54 , - Elast : 1.72 , - ICRU : [6.33900,7.15900,8693.00000,330.29999,0.00600] , - IAEA : [8.66447838,9.84912713,5979.31960977,334.15705556,0.01184544] - }, - Y : { - Z : 39 , - A : 88.905 , - rho : 4.47 , - Elast : 4.37 , - ICRU : [6.40700,7.23400,8907.00000,367.79999,0.00589] , - IAEA : [7.54854264,8.54789357,6885.34110669,429.53252110,0.00930644] - }, - Zr : { - Z : 40 , - A : 91.22 , - rho : 6.51 , - Elast : 6.25 , - ICRU : [6.73400,7.60300,9120.00000,405.20001,0.00576] , - IAEA : [6.24168401,7.04236496,10674.06252597,269.66181445,0.00339805] - }, - Nb : { - Z : 41 , - A : 92.906 , - rho : 8.57 , - Elast : 7.57 , - ICRU : [6.90100,7.79100,9333.00000,442.70001,0.00559] , - IAEA : [5.96194954,6.72632300,10250.57513827,275.25886405,0.00386599] - }, - Mo : { - Z : 42 , - A : 95.94 , - rho : 10.22 , - Elast : 6.82 , - ICRU : [6.42400,7.24800,9545.00000,480.20001,0.00538] , - IAEA : [5.58867862,6.29983727,9573.16605660,523.57577519,0.00473082] - }, - Tc : { - Z : 43 , - A : 98 , - rho : 11.5 , - Elast : 6.85 , - ICRU : [6.79900,7.67100,9756.00000,517.59998,0.00532] , - IAEA : [] - }, - Ru : { - Z : 44 , - A : 101.07 , - rho : 12.37 , - Elast : 6.74 , - ICRU : [6.10900,6.88700,9966.00000,555.09998,0.00515] , - IAEA : [] - }, - Rh : { - Z : 45 , - A : 102.905 , - rho : 12.41 , - Elast : 5.75 , - ICRU : [5.92400,6.67700,10180.00000,592.50000,0.00492] , - IAEA : [] - }, - Pd : { - Z : 46 , - A : 106.4 , - rho : 12.02 , - Elast : 3.89 , - ICRU : [5.23800,5.90000,10380.00000,630.00000,0.00476] , - IAEA : [4.74762031,5.34871025,8086.17802763,942.05721488,0.00842671] - }, - Ag : { - Z : 47 , - A : 107.87 , - rho : 10.5 , - Elast : 2.95 , - ICRU : [5.34500,6.03800,6790.00000,397.79999,0.01676] , - IAEA : [5.42052240,6.17824432,4642.18214950,90.75350922,0.06061521] - }, - Cd : { - Z : 48 , - A : 112.4 , - rho : 8.65 , - Elast : 1.16 , - ICRU : [5.81400,6.55400,10800.00000,355.50000,0.00463] , - IAEA : [4.89128643,5.50754704,11831.77188508,396.06905848,0.00412049] - }, - In : { - Z : 49 , - A : 114.82 , - rho : 7.31 , - Elast : 2.52 , - ICRU : [6.22900,7.02400,11010.00000,370.89999,0.00454] , - IAEA : [5.98978289,6.77050040,6343.54720062,564.65410792,0.02270520] - }, - Sn : { - Z : 50 , - A : 118.69 , - rho : 7.31 , - Elast : 3.14 , - ICRU : [6.40900,7.22700,11210.00000,386.39999,0.00447] , - IAEA : [6.73191335,7.61854414,6946.18830598,347.19391310,0.01677246] - }, - Sb : { - Z : 51 , - A : 121.75 , - rho : 6.68 , - Elast : 2.75 , - ICRU : [7.50000,8.48000,8608.00000,348.00000,0.00907] , - IAEA : [7.92400389,8.99628409,5736.29881090,403.11722206,0.02973016] - }, - Te : { - Z : 52 , - A : 127.6 , - rho : 6.24 , - Elast : 2.23 , - ICRU : [6.97900,7.87100,11620.00000,392.39999,0.00440] , - IAEA : [] - }, - I : { - Z : 53 , - A : 126.904 , - rho : 4.93 , - Elast : 1.11 , - ICRU : [7.72500,8.71600,11830.00000,394.79999,0.00438] , - IAEA : [] - }, - Xe : { - Z : 54 , - A : 131.3 , - rho : 3.8 , - Elast : 0.16 , - ICRU : [8.33700,9.42500,10510.00000,269.60001,0.00621] , - IAEA : [8.96826400,10.16224223,8543.27304860,283.90067433,0.01019984] - }, - Cs : { - Z : 55 , - A : 132.905 , - rho : 1.9 , - Elast : 0.8 , - ICRU : [7.28700,8.21800,12230.00000,399.70001,0.00445] , - IAEA : [] - }, - Ba : { - Z : 56 , - A : 137.34 , - rho : 3.59 , - Elast : 1.9 , - ICRU : [7.89900,8.91100,12430.00000,402.10001,0.00451] , - IAEA : [] - }, - La : { - Z : 57 , - A : 138.91 , - rho : 6.15 , - Elast : 4.47 , - ICRU : [8.04100,9.07100,12630.00000,404.50000,0.00454] , - IAEA : [8.16949326,9.21144395,13933.96869212,429.99442382,0.00347440] - }, - Ce : { - Z : 58 , - A : 140.12 , - rho : 6.77 , - Elast : 4.32 , - ICRU : [7.48800,8.44400,12830.00000,406.89999,0.00442] , - IAEA : [] - }, - Pr : { - Z : 59 , - A : 140.907 , - rho : 6.77 , - Elast : 3.7 , - ICRU : [7.29100,8.21900,13030.00000,409.29999,0.00430] , - IAEA : [] - }, - Nd : { - Z : 60 , - A : 144.24001 , - rho : 7.01 , - Elast : 3.4 , - ICRU : [7.09800,8.00000,13230.00000,411.79999,0.00418] , - IAEA : [8.60801371,10.26060598,6798.65217629,7.06731816,0.02713704] - }, - Pm : { - Z : 61 , - A : 147 , - rho : 7.22 , - Elast : 0.1 , - ICRU : [6.90900,7.78600,13430.00000,414.20001,0.00406] , - IAEA : [] - }, - Sm : { - Z : 62 , - A : 150.35001 , - rho : 7.52 , - Elast : 2.14 , - ICRU : [6.72800,7.58000,13620.00000,416.60001,0.00398] , - IAEA : [] - }, - Eu : { - Z : 63 , - A : 151.96001 , - rho : 5.24 , - Elast : 1.86 , - ICRU : [6.55100,7.38000,13820.00000,419.00000,0.00388] , - IAEA : [] - }, - Gd : { - Z : 64 , - A : 157.25 , - rho : 7.9 , - Elast : 4.14 , - ICRU : [6.73900,7.59200,14020.00000,421.39999,0.00386] , - IAEA : [8.38379061,9.50012183,10804.38767518,110.71066098,0.00761735] - }, - Tb : { - Z : 65 , - A : 158.924 , - rho : 8.23 , - Elast : 4.05 , - ICRU : [6.21200,6.99600,14210.00000,423.89999,0.00372] , - IAEA : [8.69907359,10.36476708,5985.09307671,7.76175759,0.04237031] - }, - Dy : { - Z : 66 , - A : 162.5 , - rho : 8.55 , - Elast : 3.04 , - ICRU : [5.51700,6.21000,14400.00000,426.29999,0.00363] , - IAEA : [6.69350026,7.81543484,5289.65107666,12.11560717,0.05746489] - }, - Ho : { - Z : 67 , - A : 164.92999 , - rho : 8.8 , - Elast : 3.14 , - ICRU : [5.22000,5.87400,14600.00000,428.70001,0.00350] , - IAEA : [] - }, - Er : { - Z : 68 , - A : 167.25999 , - rho : 9.07 , - Elast : 3.29 , - ICRU : [5.07100,5.70600,14790.00000,433.00000,0.00341] , - IAEA : [4.31497049,4.85346547,12995.54504003,691.00380321,0.00499022] - }, - Tm : { - Z : 69 , - A : 168.93401 , - rho : 9.32 , - Elast : 2.42 , - ICRU : [4.92600,5.54200,14980.00000,433.50000,0.00334] , - IAEA : [] - }, - Yb : { - Z : 70 , - A : 173.03999 , - rho : 6.9 , - Elast : 1.6 , - ICRU : [4.78800,5.38600,15170.00000,435.89999,0.00329] , - IAEA : [6.38304258,7.21491284,12327.74719685,82.30064162,0.00516845] - }, - Lu : { - Z : 71 , - A : 174.97 , - rho : 9.84 , - Elast : 4.43 , - ICRU : [4.89300,5.50500,15360.00000,438.29999,0.00324] , - IAEA : [7.00205766,8.09268611,4589.67801229,31.06321362,0.11142124] - }, - Hf : { - Z : 72 , - A : 178.49001 , - rho : 13.31 , - Elast : 6.44 , - ICRU : [5.02800,5.65700,15550.00000,440.79999,0.00320] , - IAEA : [5.32763157,6.00140558,13853.49562768,206.93150053,0.00411522] - }, - Ta : { - Z : 73 , - A : 180.948 , - rho : 16.65 , - Elast : 8.1 , - ICRU : [4.73800,5.32900,15740.00000,443.20001,0.00319] , - IAEA : [5.15280708,5.80545310,12417.25115167,231.48549646,0.00530723] - }, - W : { - Z : 74 , - A : 183.85001 , - rho : 19.35 , - Elast : 8.9 , - ICRU : [4.58700,5.16000,15410.00000,415.29999,0.00341] , - IAEA : [4.81261962,5.41579909,15245.84079976,286.09077182,0.00344862] - }, - Re : { - Z : 75 , - A : 186.2 , - rho : 21.04 , - Elast : 8.03 , - ICRU : [5.20100,5.85100,16120.00000,441.60001,0.00312] , - IAEA : [4.26021967,4.80273372,3191.05524918,76051.48730893,0.00003161] - }, - Os : { - Z : 76 , - A : 190.2 , - rho : 22.6 , - Elast : 8.17 , - ICRU : [5.07100,5.70400,16300.00000,440.89999,0.00308] , - IAEA : [] - }, - Ir : { - Z : 77 , - A : 192.2 , - rho : 22.4 , - Elast : 6.94 , - ICRU : [4.94600,5.56300,16490.00000,440.10001,0.00296] , - IAEA : [4.16543126,4.68849191,6887.94139926,4263.90641919,0.00000004] - }, - Pt : { - Z : 78 , - A : 195.09 , - rho : 21.45 , - Elast : 5.84 , - ICRU : [4.47700,5.03400,16670.00000,439.29999,0.00287] , - IAEA : [4.62228847,5.20033612,16308.49878855,266.02263275,0.00309560] - }, - Au : { - Z : 79 , - A : 196.967 , - rho : 19.32 , - Elast : 3.81 , - ICRU : [4.84400,5.45800,7852.00000,975.79999,0.02077] , - IAEA : [4.84253074,5.44769072,15602.21662947,412.25485588,0.00331383] - }, - Hg : { - Z : 80 , - A : 200.59 , - rho : 13.55 , - Elast : 0.67 , - ICRU : [4.30700,4.84300,17040.00000,487.79999,0.00288] , - IAEA : [] - }, - Tl : { - Z : 81 , - A : 204.37 , - rho : 11.85 , - Elast : 1.88 , - ICRU : [4.72300,5.31100,17220.00000,537.00000,0.00291] , - IAEA : [] - }, - Pb : { - Z : 82 , - A : 207.19 , - rho : 11.35 , - Elast : 2.03 , - ICRU : [5.31900,5.98200,17400.00000,586.29999,0.00287] , - IAEA : [9.42473604,17.46235676,11946.86905435,0.00000001,0.00652912] - }, - Bi : { - Z : 83 , - A : 208.98 , - rho : 9.75 , - Elast : 2.18 , - ICRU : [5.95600,6.70000,17800.00000,677.00000,0.00266] , - IAEA : [10.25823796,12.26670424,7765.05387481,7.37274504,0.02310050] - }, - Po : { - Z : 84 , - A : 210 , - rho : 9.3 , - Elast : 1.5 , - ICRU : [6.15800,6.92800,17770.00000,586.29999,0.00281] , - IAEA : [] - }, - At : { - Z : 85 , - A : 210 , - rho : 0 , - Elast : 0.1 , - ICRU : [6.20300,6.97900,17950.00000,586.29999,0.00278] , - IAEA : [] - }, - Rn : { - Z : 86 , - A : 222 , - rho : 0 , - Elast : 0.2 , - ICRU : [6.18100,6.95400,18120.00000,586.29999,0.00275] , - IAEA : [] - }, - Fr : { - Z : 87 , - A : 223 , - rho : 0 , - Elast : 0.1 , - ICRU : [6.94900,7.82000,18300.00000,586.29999,0.00274] , - IAEA : [] - }, - Ra : { - Z : 88 , - A : 226 , - rho : 0 , - Elast : 1.66 , - ICRU : [7.50600,8.44800,18480.00000,586.29999,0.00273] , - IAEA : [] - }, - Ac : { - Z : 89 , - A : 227 , - rho : 0 , - Elast : 4.25 , - ICRU : [7.64800,8.60900,18660.00000,586.29999,0.00270] , - IAEA : [] - }, - Th : { - Z : 90 , - A : 232.03799 , - rho : 11.72 , - Elast : 6.2 , - ICRU : [7.71100,8.67900,18830.00000,586.29999,0.00264] , - IAEA : [] - }, - Pa : { - Z : 91 , - A : 231 , - rho : 15.4 , - Elast : 0.1 , - ICRU : [7.40700,8.33600,19010.00000,586.29999,0.00260] , - IAEA : [] - }, - U : { - Z : 92 , - A : 238.03 , - rho : 18.95 , - Elast : 5.55 , - ICRU : [7.29000,8.20400,19180.00000,586.29999,0.00267] , - IAEA : [] - }, - "" : { - Z : 0 , - A : 0.0 , - rho : 0 , - Elast : 0 , - ICRU : [0,0,0,0,0] , - IAEA : [] - } -}; -// Extra densities -var rhos = { - "NbN":8.47, - "Bi2Se3":7.51, - "La2CuO4": 7.08, - "La1.84Sr0.16CuO4": 6.94, - "N2":1.145, - "ZnO":5.61, - "ZnSe":5.26, - "ZnS":4.09, - "ZrO":6.0, - "Gd3Ga5O12":7.08, - "MgAl2O4":3.60, - "NdGaO3":7.57, - "YAlO3":4.88, - "Y3Al5O12":4.55, - "LiF":2.60, - "CaF2":3.18, - "BaFe":4.83, - "MgF2":3.18, - "SiO2":2.65, - "TiO2":4.26, - "KTaO3":6.967, - "LaAlO3":6.70, - "Al2O3":3.98, - "SrTiO3":5.12, - "SrLaGaO4":6.389, - "SrLaAlO4":5.924, - "NbSe2":6.30, - "MgO":3.58, - "YBa2Cu3O7":6.54, - "GaAs":5.32, - "C60":1.65 +function isObject(item) { + // simple object check + // https://stackoverflow.com/a/34749873 + return (item && typeof item === 'object' && !Array.isArray(item)); } -// This file contains function that are generic Javascript for TrimSP + +function mergeDeep(target, ...sources) { + // function for deep-merging objects + // https://stackoverflow.com/a/34749873 + + if (!sources.length) { + return target; + } + + const source = sources.shift(); + + if (isObject(target) && isObject(source)) { + for (const key in source) { + if (isObject(source[key])) { + if (!target[key]) Object.assign(target, { [key]: {} }); + mergeDeep(target[key], source[key]); + } else { + Object.assign(target, { [key]: source[key] }); + } + } + } + + return mergeDeep(target, ...sources); +} + + +// list of json files containing all projectile/target element data +const dataFiles = [ + "./data/elements.json", + "./data/projectiles.json", + "./data/az_table.json", + "./data/icru_table.json", + "./data/iaea_table.json" +]; + +// empty "main" object - to be filled with *all* projectile/target data +const elemPars = {} + +// loop over each json file +for (const df of dataFiles) { + // read its contents... + const data = require(df) + // ...and deep-merge them to the "main" object + mergeDeep(elemPars, data); +}; + +// Extra densities (i.e., for chemical compounds) +var rhos = require("./data/densities.json") + function parse_formula (mf) { // This function takes a chemical formula and returns @@ -861,25 +102,36 @@ function parse_formula (mf) { return mol; } -function StoppingCoefficients(Element,flag) +function StoppingCoefficients(Element, flag) { - // flag = 1 prefer ICRU otherwise prefer IAEA + // Select which tabulation to use for the Varelas-Biersack parameterization + // of electronic stopping cross sections for proton-like projectiles + // implanted in elemental targets. - // Updated Anderson-Ziegler table values for hydrogen projectiles using - // up-to-date stopping data from the IAEA database (https://www-nds.iaea.org/stopping/). - // For further details on their determination, see e.g.: - // R. M. L. McFadden at al., arXiv:2212.11081 [cond-mat.supr-con] - // https://doi.org/10.48550/arXiv.2212.11081 + // flag = 1: use coefficients from Anderson & Ziegler (1977). + if (flag == 1) { + return elemPars[Element].AZ; + } - if (flag || elemPars[Element].IAEA.length < 5) { - // Using stopping coefficients derived from ICRU Report 49 - //return StoppingCoefficientsICRU[Element]; - return elemPars[Element].ICRU; + // flag = 2: use coefficients from ICRU Report 49 (1973). + if (flag == 2) { + return elemPars[Element].ICRU; + } + + // flag = 3: use coefficients from McFadden et al. (2023) and McFadden et al. (unpublished). + // + // NOTE: these values were derived from up-to-date stopping data found inthe + // IAEA's database of electronic stopping cross sections + // (https://www-nds.iaea.org/stopping/). + // For further details on their determination, see, e.g.: + // Appendix A in McFadden at al., Phys. Rev. Applied 19, 044018 (2023). + // https://doi.org/10.1103/PhysRevApplied.19.044018 + if (flag == 3 && elemPars[Element].IAEA.length == 5) { + return elemPars[Element].IAEA; + // in the event that updated coefficients are unavailable for given element + // fall back to using values from ICRU Report 49 } else { - // Using stopping coefficients derived from data in the IAEA database; - // however, if they are unavailable, return those from ICRU Report 49 - //return (Element in StoppingCoefficientsIAEA) ? StoppingCoefficientsIAEA[Element] : StoppingCoefficientsICRU[Element]; - return elemPars[Element].IAEA; + return elemPars[Element].ICRU; } } @@ -1112,8 +364,8 @@ function prep_cfg(toggle) { All[key]= document.getElementById(key).value; } - // Check ICRU flag, if checked use it - All["flagICRU"] = document.getElementById("flagICRU").checked; + // Get the stopping power coefficient (SPC) flag + All["flagSPC"] = document.getElementById("flagSPC").value; // Construct full content of cfg file TrimSPcfg = FilesSec + LayersSec + ProjSec + ScanSec; @@ -1248,7 +500,7 @@ function CreateInpFile() { newLayer[0] += Comp + " " + d + " " + rho + " 1 " + nEl; for (var j=0;j