diff --git a/Readme.md b/Readme.md index d86185b..1aa1d99 100644 --- a/Readme.md +++ b/Readme.md @@ -35,10 +35,12 @@ Further information can be found in the following publications: ### Supported platforms ### * [Linux] -* Online at: http://musruser.psi.ch/cgi-bin/TrimSP.cgi +* Online at: http://musruser.psi.ch/TrimSP/ ### Installation ### +For a simple installation you may use the included RPM or Debian packages which come with statically linked binaries. See instructions below if you prefer a manual installation. + ###### Fortran code compilation ###### Install the `gfortran` compiler, then: diff --git a/ToDo.txt b/ToDo.txt index 84dd7f6..02e3183 100644 --- a/ToDo.txt +++ b/ToDo.txt @@ -1,2 +1 @@ -- Include chemical fomula in input file and use it for output files - Increase the number of elements acceptable for each layer, currently up to 5 diff --git a/TrimSPlib.js b/TrimSPlib.js index 53ae720..173b76e 100644 --- a/TrimSPlib.js +++ b/TrimSPlib.js @@ -1,3 +1,819 @@ +// 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 +} + // This file contains function that are generic Javascript for TrimSP function parse_formula (mf) { @@ -42,486 +858,25 @@ function parse_formula (mf) { return mol; } - -function Zof(Element) -{ - var ElementsZ = { - "muon":1, - "Li-8":3, - "B-12":5, - "Mg-31":12, - "H":1, - "He":2, - "Li":3, - "Be":4, - "B":5, - "C":6, - "N":7, - "O":8, - "F":9, - "Ne":10, - "Na":11, - "Mg":12, - "Al":13, - "Si":14, - "P":15, - "S":16, - "Cl":17, - "Ar":18, - "K":19, - "Ca":20, - "Sc":21, - "Ti":22, - "V":23, - "Cr":24, - "Mn":25, - "Fe":26, - "Co":27, - "Ni":28, - "Cu":29, - "Zn":30, - "Ga":31, - "Ge":32, - "As":33, - "Se":34, - "Br":35, - "Kr":36, - "Rb":37, - "Sr":38, - "Y":39, - "Zr":40, - "Nb":41, - "Mo":42, - "Tc":43, - "Ru":44, - "Rh":45, - "Pd":46, - "Ag":47, - "Cd":48, - "In":49, - "Sn":50, - "Sb":51, - "Te":52, - "I":53, - "Xe":54, - "Cs":55, - "Ba":56, - "La":57, - "Ce":58, - "Pr":59, - "Nd":60, - "Pm":61, - "Sm":62, - "Eu":63, - "Gd":64, - "Tb":65, - "Dy":66, - "Ho":67, - "Er":68, - "Tm":69, - "Yb":70, - "Lu":71, - "Hf":72, - "Ta":73, - "W":74, - "Re":75, - "Os":76, - "Ir":77, - "Pt":78, - "Au":79, - "Hg":80, - "Tl":81, - "Pb":82, - "Bi":83, - "Po":84, - "At":85, - "Rn":86, - "Fr":87, - "Ra":88, - "Ac":89, - "Th":90, - "Pa":91, - "U":92, - "":0.0000 - } - return ElementsZ[Element]; -} - -function Massof(Element) -{ - var ElementsA = { - "muon":0.1134289259, - "Li-8":8.02248624, - "B-12":12.0143526, - "Mg-31":30.996648, - "H":1.00800, - "He":4.00300, - "Li":6.93900, - "Be":9.01200, - "B":10.81100, - "C":12.01100, - "N":14.00700, - "O":15.99900, - "F":18.99800, - "Ne":20.18300, - "Na":22.99000, - "Mg":24.31200, - "Al":26.98200, - "Si":28.08600, - "P":30.97400, - "S":32.06400, - "Cl":35.45300, - "Ar":39.94800, - "K":39.10200, - "Ca":40.08000, - "Sc":44.95600, - "Ti":47.90000, - "V":50.94200, - "Cr":51.99600, - "Mn":54.93800, - "Fe":55.84700, - "Co":58.93300, - "Ni":58.71000, - "Cu":63.54000, - "Zn":65.37000, - "Ga":69.72000, - "Ge":72.59000, - "As":74.92200, - "Se":78.96000, - "Br":79.90900, - "Kr":83.80000, - "Rb":85.47000, - "Sr":87.62000, - "Y":88.90500, - "Zr":91.22000, - "Nb":92.90600, - "Mo":95.94000, - "Tc":98.00000, - "Ru":101.07000, - "Rh":102.90500, - "Pd":106.40000, - "Ag":107.87000, - "Cd":112.40000, - "In":114.82000, - "Sn":118.69000, - "Sb":121.75000, - "Te":127.60000, - "I":126.90400, - "Xe":131.30000, - "Cs":132.90500, - "Ba":137.34000, - "La":138.91000, - "Ce":140.12000, - "Pr":140.90700, - "Nd":144.24001, - "Pm":147.00000, - "Sm":150.35001, - "Eu":151.96001, - "Gd":157.25000, - "Tb":158.92400, - "Dy":162.50000, - "Ho":164.92999, - "Er":167.25999, - "Tm":168.93401, - "Yb":173.03999, - "Lu":174.97000, - "Hf":178.49001, - "Ta":180.94800, - "W":183.85001, - "Re":186.20000, - "Os":190.20000, - "Ir":192.20000, - "Pt":195.09000, - "Au":196.96700, - "Hg":200.59000, - "Tl":204.37000, - "Pb":207.19000, - "Bi":208.98000, - "Po":210.00000, - "At":210.00000, - "Rn":222.00000, - "Fr":223.00000, - "Ra":226.00000, - "Ac":227.00000, - "Th":232.03799, - "Pa":231.00000, - "U":238.03000, - "":0.0000 - } - return ElementsA[Element]; -} - -function Elastof(Element) { - var Elast ={ - "H":0.10000, - "He":0.10000, - "Li":1.63000, - "Be":3.32000, - "B":5.77000, - "C":7.37000, - "N":4.92000, - "O":2.60000, - "F":0.84000, - "Ne":0.02000, - "Na":1.11000, - "Mg":1.51000, - "Al":3.39000, - "Si":4.63000, - "P":3.43000, - "S":2.85000, - "Cl":1.40000, - "Ar":0.08000, - "K":0.93000, - "Ca":1.84000, - "Sc":3.90000, - "Ti":4.85000, - "V":5.31000, - "Cr":4.10000, - "Mn":2.92000, - "Fe":4.28000, - "Co":4.39000, - "Ni":4.44000, - "Cu":3.49000, - "Zn":1.35000, - "Ga":2.81000, - "Ge":3.85000, - "As":2.96000, - "Se":2.25000, - "Br":1.22000, - "Kr":0.12000, - "Rb":0.85000, - "Sr":1.72000, - "Y":4.37000, - "Zr":6.25000, - "Nb":7.57000, - "Mo":6.82000, - "Tc":6.85000, - "Ru":6.74000, - "Rh":5.75000, - "Pd":3.89000, - "Ag":2.95000, - "Cd":1.16000, - "In":2.52000, - "Sn":3.14000, - "Sb":2.75000, - "Te":2.23000, - "I":1.11000, - "Xe":0.16000, - "Cs":0.80000, - "Ba":1.90000, - "La":4.47000, - "Ce":4.32000, - "Pr":3.70000, - "Nd":3.40000, - "Pm":0.10000, - "Sm":2.14000, - "Eu":1.86000, - "Gd":4.14000, - "Tb":4.05000, - "Dy":3.04000, - "Ho":3.14000, - "Er":3.29000, - "Tm":2.42000, - "Yb":1.60000, - "Lu":4.43000, - "Hf":6.44000, - "Ta":8.10000, - "W":8.90000, - "Re":8.03000, - "Os":8.17000, - "Ir":6.94000, - "Pt":5.84000, - "Au":3.81000, - "Hg":0.67000, - "Tl":1.88000, - "Pb":2.03000, - "Bi":2.18000, - "Po":1.50000, - "At":0.10000, - "Rn":0.20000, - "Fr":0.10000, - "Ra":1.66000, - "Ac":4.25000, - "Th":6.20000, - "Pa":0.10000, - "U":5.55000, - "":0.00000 - }; - return Elast[Element]; -} - function StoppingCoefficients(Element,flag) { - // flag = 1 prefer ICRU - // otherwise prefer IAEA - var StoppingCoefficientsICRU = { - "H":"1.25400,1.44000,242.60001,12000.00000,0.11590", - "He":"1.22900,1.39700,484.50000,5873.00000,0.05225", - "Li":"1.41100,1.60000,725.59998,3013.00000,0.04578", - "Be":"2.24800,2.59000,966.00000,153.80000,0.03475", - "B":"2.47400,2.81500,1206.00000,1060.00000,0.02855", - "C":"2.60100,2.60100,1701.00000,1279.00000,0.01638", - "N":"2.95400,3.35000,1683.00000,1900.00000,0.02513", - "O":"2.65200,3.00000,1920.00000,2000.00000,0.02230", - "F":"2.08500,2.35200,2157.00000,2634.00000,0.01816", - "Ne":"1.95100,2.19900,2393.00000,2699.00000,0.01568", - "Na":"2.54200,2.86900,2628.00000,1854.00000,0.01472", - "Mg":"3.79100,4.29300,2862.00000,1009.00000,0.01397", - "Al":"4.15400,4.73900,2766.00000,164.50000,0.02023", - "Si":"4.91400,5.59800,3193.00000,232.70000,0.01419", - "P":"3.23200,3.64700,3561.00000,1560.00000,0.01267", - "S":"3.44700,3.89100,3792.00000,1219.00000,0.01211", - "Cl":"5.30100,6.00800,3969.00000,645.09998,0.01183", - "Ar":"5.73100,6.50000,4253.00000,530.00000,0.01123", - "K":"5.15200,5.83300,4482.00000,545.70001,0.01129", - "Ca":"5.52100,6.25200,4710.00000,553.29999,0.01120", - "Sc":"5.20100,5.88400,4938.00000,560.90002,0.01000", - "Ti":"4.85800,5.48900,5260.00000,651.09998,0.00893", - "V":"4.47900,5.05500,5391.00000,952.29999,0.00912", - "Cr":"3.98300,4.48900,5616.00000,1336.00000,0.00841", - "Mn":"3.46900,3.90700,5725.00000,1461.00000,0.00883", - "Fe":"3.51900,3.96300,6065.00000,1243.00000,0.00778", - "Co":"3.14000,3.53500,6288.00000,1372.00000,0.00736", - "Ni":"3.55300,4.00400,6205.00000,555.09998,0.00876", - "Cu":"3.69600,4.19400,4649.00000,81.13000,0.02242", - "Zn":"4.21000,4.75000,6953.00000,295.20001,0.00681", - "Ga":"5.04100,5.69700,7137.00000,202.60001,0.00673", - "Ge":"5.55400,6.30000,6496.00000,110.00000,0.00969", - "As":"5.32300,6.01200,7611.00000,292.50000,0.00645", - "Se":"5.87400,6.65600,7395.00000,117.50000,0.00768", - "Br":"6.65800,7.53600,7694.00000,222.30000,0.00651", - "Kr":"6.41300,7.24000,11850.00000,153.70000,0.00288", - "Rb":"5.69400,6.42900,8478.00000,292.89999,0.00609", - "Sr":"6.33900,7.15900,8693.00000,330.29999,0.00600", - "Y":"6.40700,7.23400,8907.00000,367.79999,0.00589", - "Zr":"6.73400,7.60300,9120.00000,405.20001,0.00576", - "Nb":"6.90100,7.79100,9333.00000,442.70001,0.00559", - "Mo":"6.42400,7.24800,9545.00000,480.20001,0.00538", - "Tc":"6.79900,7.67100,9756.00000,517.59998,0.00532", - "Ru":"6.10900,6.88700,9966.00000,555.09998,0.00515", - "Rh":"5.92400,6.67700,10180.00000,592.50000,0.00492", - "Pd":"5.23800,5.90000,10380.00000,630.00000,0.00476", - "Ag":"5.34500,6.03800,6790.00000,397.79999,0.01676", - "Cd":"5.81400,6.55400,10800.00000,355.50000,0.00463", - "In":"6.22900,7.02400,11010.00000,370.89999,0.00454", - "Sn":"6.40900,7.22700,11210.00000,386.39999,0.00447", - "Sb":"7.50000,8.48000,8608.00000,348.00000,0.00907", - "Te":"6.97900,7.87100,11620.00000,392.39999,0.00440", - "I":"7.72500,8.71600,11830.00000,394.79999,0.00438", - "Xe":"8.33700,9.42500,10510.00000,269.60001,0.00621", - "Cs":"7.28700,8.21800,12230.00000,399.70001,0.00445", - "Ba":"7.89900,8.91100,12430.00000,402.10001,0.00451", - "La":"8.04100,9.07100,12630.00000,404.50000,0.00454", - "Ce":"7.48800,8.44400,12830.00000,406.89999,0.00442", - "Pr":"7.29100,8.21900,13030.00000,409.29999,0.00430", - "Nd":"7.09800,8.00000,13230.00000,411.79999,0.00418", - "Pm":"6.90900,7.78600,13430.00000,414.20001,0.00406", - "Sm":"6.72800,7.58000,13620.00000,416.60001,0.00398", - "Eu":"6.55100,7.38000,13820.00000,419.00000,0.00388", - "Gd":"6.73900,7.59200,14020.00000,421.39999,0.00386", - "Tb":"6.21200,6.99600,14210.00000,423.89999,0.00372", - "Dy":"5.51700,6.21000,14400.00000,426.29999,0.00363", - "Ho":"5.22000,5.87400,14600.00000,428.70001,0.00350", - "Er":"5.07100,5.70600,14790.00000,433.00000,0.00341", - "Tm":"4.92600,5.54200,14980.00000,433.50000,0.00334", - "Yb":"4.78800,5.38600,15170.00000,435.89999,0.00329", - "Lu":"4.89300,5.50500,15360.00000,438.29999,0.00324", - "Hf":"5.02800,5.65700,15550.00000,440.79999,0.00320", - "Ta":"4.73800,5.32900,15740.00000,443.20001,0.00319", - "W":"4.58700,5.16000,15410.00000,415.29999,0.00341", - "Re":"5.20100,5.85100,16120.00000,441.60001,0.00312", - "Os":"5.07100,5.70400,16300.00000,440.89999,0.00308", - "Ir":"4.94600,5.56300,16490.00000,440.10001,0.00296", - "Pt":"4.47700,5.03400,16670.00000,439.29999,0.00287", - "Au":"4.84400,5.45800,7852.00000,975.79999,0.02077", - "Hg":"4.30700,4.84300,17040.00000,487.79999,0.00288", - "Tl":"4.72300,5.31100,17220.00000,537.00000,0.00291", - "Pb":"5.31900,5.98200,17400.00000,586.29999,0.00287", - "Bi":"5.95600,6.70000,17800.00000,677.00000,0.00266", - "Po":"6.15800,6.92800,17770.00000,586.29999,0.00281", - "At":"6.20300,6.97900,17950.00000,586.29999,0.00278", - "Rn":"6.18100,6.95400,18120.00000,586.29999,0.00275", - "Fr":"6.94900,7.82000,18300.00000,586.29999,0.00274", - "Ra":"7.50600,8.44800,18480.00000,586.29999,0.00273", - "Ac":"7.64800,8.60900,18660.00000,586.29999,0.00270", - "Th":"7.71100,8.67900,18830.00000,586.29999,0.00264", - "Pa":"7.40700,8.33600,19010.00000,586.29999,0.00260", - "U":"7.29000,8.20400,19180.00000,586.29999,0.00267", - "":"0.00000,0.00000,0.00000,0.00000,0.00000" - }; + // flag = 1 prefer ICRU otherwise prefer IAEA // 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 - var StoppingCoefficientsIAEA = { - "H": "1.21941306,1.39705253,316.72610292,3622.08960714,0.03609996", - "Li": "2.55867734,2.98398784,672.22623329,223.63937274,0.05756479", - "Be": "2.13846776,2.43024550,1353.80005691,500.78353377,0.01143076", - "B": "2.92598306,3.33271910,1523.83401267,574.31712932,0.01671298", - "C": "2.51057212,2.84874359,1325.63086028,2111.57332043,0.03815981", - "N": "3.03231463,3.44621744,1287.27189959,3445.25706665,0.06909550", - "O": "2.58218404,2.91913321,2066.69556610,1937.28839450,0.01708201", - "Mg": "4.32219620,4.95332934,2711.05757349,99.32422512,0.01692829", - "Al": "4.16266645,4.73942640,3007.21967155,192.15430476,0.01478852", - "Si": "4.56277193,5.17964542,3812.93366288,249.45105835,0.00951865", - "Cl": "5.18954121,5.87010049,5726.20198003,338.90592713,0.00527894", - "Ca": "7.38419020,8.41800474,4257.94547049,311.84732092,0.01482602", - "Sc": "6.27366940,7.11486087,5202.32117316,349.64931132,0.00808596", - "Ti": "4.89215322,5.52996090,4733.05002706,821.54929980,0.01141794", - "V": "4.39418898,4.95984106,5216.28902299,873.00768319,0.00982301", - "Cr": "4.22355616,4.76724205,4805.40719904,1062.25237873,0.01508696", - "Mn": "3.45870888,3.89580224,5452.18588822,1778.16054656,0.01057380", - "Fe": "3.69846643,4.16916938,5392.90710239,1040.38447053,0.01152298", - "Co": "3.55890909,4.00775461,6796.04145497,933.86447935,0.00558368", - "Ni": "3.42262695,3.86234880,4759.65515188,520.18934465,0.02026669", - "Cu": "3.54912421,4.02142201,4344.22605325,128.32905834,0.02886218", - "Zn": "4.31895518,4.91763977,5346.03925560,46.16548699,0.01518164", - "Ga": "4.11015447,4.63998531,7681.41419449,149.38563152,0.00628772", - "Ge": "5.80984815,6.60667983,6039.04808738,87.19744473,0.01158192", - "Se": "5.58734301,6.31119973,8423.01872583,221.61559131,0.00530434", - "Br": "6.28480648,7.09489448,11732.76411988,150.96205589,0.00281298", - "Kr": "6.47378266,7.31581518,9199.06183849,216.98680923,0.00437111", - "Rb": "8.48759187,9.62951209,7271.11124671,272.67996745,0.00818815", - "Sr": "8.66447838,9.84912713,5979.31960977,334.15705556,0.01184544", - "Y": "7.54854264,8.54789357,6885.34110669,429.53252110,0.00930644", - "Zr": "6.24168401,7.04236496,10674.06252597,269.66181445,0.00339805", - "Nb": "5.96194954,6.72632300,10250.57513827,275.25886405,0.00386599", - "Mo": "5.58867862,6.29983727,9573.16605660,523.57577519,0.00473082", - "Pd": "4.74762031,5.34871025,8086.17802763,942.05721488,0.00842671", - "Ag": "5.42052240,6.17824432,4642.18214950,90.75350922,0.06061521", - "Cd": "4.89128643,5.50754704,11831.77188508,396.06905848,0.00412049", - "In": "5.98978289,6.77050040,6343.54720062,564.65410792,0.02270520", - "Sn": "6.73191335,7.61854414,6946.18830598,347.19391310,0.01677246", - "Sb": "7.92400389,8.99628409,5736.29881090,403.11722206,0.02973016", - "Xe": "8.96826400,10.16224223,8543.27304860,283.90067433,0.01019984", - "La": "8.16949326,9.21144395,13933.96869212,429.99442382,0.00347440", - "Nd": "8.60801371,10.26060598,6798.65217629,7.06731816,0.02713704", - "Gd": "8.38379061,9.50012183,10804.38767518,110.71066098,0.00761735", - "Tb": "8.69907359,10.36476708,5985.09307671,7.76175759,0.04237031", - "Dy": "6.69350026,7.81543484,5289.65107666,12.11560717,0.05746489", - "Er": "4.31497049,4.85346547,12995.54504003,691.00380321,0.00499022", - "Yb": "6.38304258,7.21491284,12327.74719685,82.30064162,0.00516845", - "Lu": "7.00205766,8.09268611,4589.67801229,31.06321362,0.11142124", - "Hf": "5.32763157,6.00140558,13853.49562768,206.93150053,0.00411522", - "Ta": "5.15280708,5.80545310,12417.25115167,231.48549646,0.00530723", - "W": "4.81261962,5.41579909,15245.84079976,286.09077182,0.00344862", - "Re": "4.26021967,4.80273372,3191.05524918,76051.48730893,0.00003161", - "Ir": "4.16543126,4.68849191,6887.94139926,4263.90641919,0.00000004", - "Pt": "4.62228847,5.20033612,16308.49878855,266.02263275,0.00309560", - "Au": "4.84253074,5.44769072,15602.21662947,412.25485588,0.00331383", - "Pb": "9.42473604,17.46235676,11946.86905435,0.00000001,0.00652912", - "Bi": "10.25823796,12.26670424,7765.05387481,7.37274504,0.02310050" - }; - if (flag) { + if (flag || elemPars[Element].IAEA.length < 5) { // Using stopping coefficients derived from ICRU Report 49 - return StoppingCoefficientsICRU[Element]; + //return StoppingCoefficientsICRU[Element]; + return elemPars[Element].ICRU; } 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 (Element in StoppingCoefficientsIAEA) ? StoppingCoefficientsIAEA[Element] : StoppingCoefficientsICRU[Element]; + return elemPars[Element].IAEA; } } @@ -533,135 +888,21 @@ function rho_fun() var chem = document.getElementById(caller).value; var rhoLi = "L"+irow+"rho"; - 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, - "H":0.08, - "He":0.12, - "Li":0.53, - "Be":1.85, - "B":2.34, - "C":2.26, - "N":1.03, - "O":2.00, - "F":1.11, - "Ne":1.50, - "Na":0.97, - "Mg":1.74, - "Al":2.7, - "Si":2.33, - "P":1.00, - "S":2.07, - "Cl":2.03, - "Ar":1.77, - "K":0.86, - "Ca":1.55, - "Sc":2.99, - "Ti":4.54, - "V":6.11, - "Cr":7.19, - "Mn":7.43, - "Fe":7.87, - "Co":8.9, - "Ni":8.9, - "Cu":8.96, - "Zn":7.13, - "Ga":5.91, - "Ge":5.32, - "As":5.72, - "Se":4.79, - "Br":3.14, - "Kr":3.10, - "Rb":1.53, - "Sr":2.54, - "Y":4.47, - "Zr":6.51, - "Nb":8.57, - "Mo":10.22, - "Tc":11.5, - "Ru":12.37, - "Rh":12.41, - "Pd":12.02, - "Ag":10.5, - "Cd":8.65, - "In":7.31, - "Sn":7.31, - "Sb":6.68, - "Te":6.24, - "I":4.93, - "Xe":3.80, - "Cs":1.90, - "Ba":3.59, - "La":6.15, - "Ce":6.77, - "Pr":6.77, - "Nd":7.01, - "Pm":7.22, - "Sm":7.52, - "Eu":5.24, - "Gd":7.9, - "Tb":8.23, - "Dy":8.55, - "Ho":8.8, - "Er":9.07, - "Tm":9.32, - "Yb":6.9, - "Lu":9.84, - "Hf":13.31, - "Ta":16.65, - "W":19.35, - "Re":21.04, - "Os":22.6, - "Ir":22.4, - "Pt":21.45, - "Au":19.32, - "Hg":13.55, - "Tl":11.85, - "Pb":11.35, - "Bi":9.75, - "Po":9.3, - "Th":11.72, - "Pa":15.4, - "U":18.95, - "":"" - } - document.getElementById(rhoLi).value = rhos[chem]; + var rho = 0; + + if (elemPars[chem]) { + rho = elemPars[chem].rho; + } else { + // Did not find density in elements list + if (isFinite(rhos[chem])) { + // Found in densities list of compositions + rho = rhos[chem]; + } else { + // suggest a material density based on composition (when it's undefined) + let layer_formula = parse_formula(chem); - // suggest a material density based on composition (when it's undefined) - if (!isFinite(document.getElementById(rhoLi).value)) { - let layer_formula = parse_formula(chem); - - // determine the stoichiometry sum (for normalization) - let stoichiometry_sum = 0; + // determine the stoichiometry sum (for normalization) + let stoichiometry_sum = 0; for (key of Object.keys(layer_formula)) { stoichiometry_sum = stoichiometry_sum + layer_formula[key]; } @@ -670,13 +911,16 @@ function rho_fun() let density_estimate = 0; for (key of Object.keys(layer_formula)) { if (layer_formula[key] != null) { - density_estimate = density_estimate + (layer_formula[key] / stoichiometry_sum) * rhos[key]; + density_estimate = density_estimate + (layer_formula[key] / stoichiometry_sum) * elemPars[key].rho; } } - document.getElementById(rhoLi).value = density_estimate; - alert("Warning: The density for this layer is only an estimate!") + rho = density_estimate; + alert("Warning: The density for this layer is only an estimate!") + } } + // Set value in appropriate cell + document.getElementById(rhoLi).value = rho; } function openTab(event, tabName) { @@ -915,11 +1159,26 @@ function CreateInpFile(All) { TemplateFile=TemplateFile+"\n"+"N_Layers=numLayer"; // Then loop over the layers and for each give the following structure - var TemplateLayer= "L1d L1rho L1CK\n L1ELZ1 L1ELZ2 L1ELZ3 L1ELZ4 L1ELZ5\n L1ELW1 L1ELW2 L1ELW3 L1ELW4 L1ELW5\n L1ELC1 L1ELC2 L1ELC3 L1ELC4 L1ELC5\n L1ELE1 L1ELE2 L1ELE3 L1ELE4 L1ELE5\n L10301 L10302 L10303 L10304 L10305\n 0.0000 0.0000 0.0000 0.0000 0.0000\n L1ELST11 L1ELST21 L1ELST31 L1ELST41 L1ELST51\n L1ELST12 L1ELST22 L1ELST32 L1ELST42 L1ELST52\n L1ELST13 L1ELST23 L1ELST33 L1ELST43 L1ELST53\n L1ELST14 L1ELST24 L1ELST34 L1ELST44 L1ELST54\n L1ELST15 L1ELST25 L1ELST35 L1ELST45 L1ELST55"; + // thickness, density, correction factor, chemical formula + var TemplateLayer = "L1Comp L1d L1rho L1CK\n"; + // Z number of elements + TemplateLayer += "L1ELZ1 L1ELZ2 L1ELZ3 L1ELZ4 L1ELZ5\n"; + // A number of elements + TemplateLayer += "L1ELW1 L1ELW2 L1ELW3 L1ELW4 L1ELW5\n"; + // Weigth of element in composition + TemplateLayer += "L1ELC1 L1ELC2 L1ELC3 L1ELC4 L1ELC5\n"; + TemplateLayer += "L1ELE1 L1ELE2 L1ELE3 L1ELE4 L1ELE5\n"; + TemplateLayer += "L10301 L10302 L10303 L10304 L10305\n"; + TemplateLayer += "0.0000 0.0000 0.0000 0.0000 0.0000\n"; + TemplateLayer += "L1ELST11 L1ELST21 L1ELST31 L1ELST41 L1ELST51\n"; + TemplateLayer += "L1ELST12 L1ELST22 L1ELST32 L1ELST42 L1ELST52\n"; + TemplateLayer += "L1ELST13 L1ELST23 L1ELST33 L1ELST43 L1ELST53\n"; + TemplateLayer += "L1ELST14 L1ELST24 L1ELST34 L1ELST44 L1ELST54\n"; + TemplateLayer += "L1ELST15 L1ELST25 L1ELST35 L1ELST45 L1ELST55"; let projectile = All['ProjType']; - All['ProjZ']=Zof(projectile); - All['ProjAM']=Massof(projectile); + All['ProjZ'] = elemPars[projectile].Z; + All['ProjAM'] = elemPars[projectile].A; // This is the flag for checking layers let Check=0; @@ -942,7 +1201,7 @@ function CreateInpFile(All) { let LElComp=parse_formula(Comp); for (key of Object.keys(LElComp)) { // Check if composition is understood - if (key=="" || Zof(key)=="") { + if (key=="" || elemPars[key].Z =="") { Check++; } } @@ -953,13 +1212,11 @@ function CreateInpFile(All) { let Lrho="layer"+i+"rho"; let rho = 1*All[Lrho]; - // How to do this? All[Lrho]=sprintf("%6.2f",rho); if (rho=="") {Check++;} // Thickness of layers let Ld ="L"+i+"d"; let d = All[Ld]; - // How to do this? All[Ld]=sprintf("%8.2f",d); if (d=="") {Check++;} // Sanity check, is the layer supposed to have value? are they all there? @@ -970,7 +1227,7 @@ function CreateInpFile(All) { } let tmp = "L"+i+"CK"; - All[tmp]=1.0; // sprintf("%6.2f",1.0); + All[tmp]=1.0; let Sum = 0; for (key of Object.keys(LElComp)) { @@ -986,27 +1243,27 @@ function CreateInpFile(All) { El = Els[NEl-1]; } let LEkey = "L"+i+"EL"; - let ElZ = Zof(El); - let ElW = Massof(El); + let ElZ = elemPars[El].Z; + let ElW = elemPars[El].A; let ElC = 0; if (LElComp[El] != null){ElC=LElComp[El]/Sum;} - let ElE = Elastof(El); + let ElE = elemPars[El].Elast; let El030 = 30; if (El=="") { El030 = 0.0;} - All[LEkey+"Z"+NEl]=ElZ; // sprintf("%8.4f",$ElZ); - All[LEkey+"W"+NEl]=ElW; // sprintf("%8.4f",$ElW); - All[LEkey+"C"+NEl]=ElC; // sprintf("%8.4f",$ElC); - All[LEkey+"E"+NEl]=ElE; // sprintf("%8.4f",$ElE); - All["L"+i+"030"+NEl]=El030; // sprintf("%8.4f",$El030); + All[LEkey+"Z"+NEl]=ElZ; + All[LEkey+"W"+NEl]=ElW; + All[LEkey+"C"+NEl]=ElC; + All[LEkey+"E"+NEl]=ElE; + All["L"+i+"030"+NEl]=El030; - let ElST = StoppingCoefficients(El,All["flagICRU"]); - let ElSTs = ElST.split(','); + let ElSTs = StoppingCoefficients(El,All["flagICRU"]); + let j=1; for (let iElST of ElSTs) { LEkey = "L"+i+"ELST"+NEl+j; j++; - All[LEkey]=iElST; // sprintf("%11.6f",$_); + All[LEkey]=iElST; } } } @@ -1058,7 +1315,6 @@ function startSequence(All) { trimBin = "trimspNL"; } } - // Check if workPath exists otherwise create it checkDir(All['workPath']); // from TrimSPelec.js, Electron/Node specific } else { @@ -1180,26 +1436,12 @@ function startSequence(All) { } iScan++; } - //},1000); - // An easy way to keep track of chemical formula is to replace impL_i by the corresponding chemical formula of layer i - let data = readAsciiFile(All["workPath"]+"/"+"fort.33"); - let LComp = ""; - let chem_formula = ""; - let place_holder = ""; - let re = new RegExp(place_holder,"g"); - for (let i=1;i<=All["numLayer"];i++) { - LComp = "L"+i+"Comp"; - chem_formula = All[LComp]; - place_holder = "impL"+i; - re = new RegExp(place_holder,"g"); - data = data.replace(re, chem_formula); - } - let seq_file = All["workPath"]+"/"+All["fileNamePrefix"]+"_Seq_Results.dat"; - writeAsciiFile(seq_file, data); - // Remove the fort.33 and other redundant files + let seq_file = All["fileNamePrefix"]+"_Seq_Results.dat"; + + // Remove redundant files and change the name fort.33 if (!webOrApp) { - cmd="cd " + All["workPath"] + ";rm -f eingabe1.inp; rm -f fort.33"; + cmd="cd " + All["workPath"] + ";rm -f eingabe1.inp; mv -f fort.33 " + seq_file; execute(cmd); } Progress=100; diff --git a/fortran/trimspNL.F b/fortran/trimspNL.F index f6fb1ab..428199e 100644 --- a/fortran/trimspNL.F +++ b/fortran/trimspNL.F @@ -289,7 +289,8 @@ C CHARACTER Variables CHARACTER month_start*4,month_stop*4,day_start*2,day_stop*2 CHARACTER year_start*4,year_stop*4,hour_start*2,hour_stop*2 CHARACTER min_start*2,min_stop*2,sec_start*2,sec_stop*2 - + CHARACTER*50 chem(MAXNL) + COMMON /A/ M1,VELC,ZARG COMMON /B/ TI,SHEATH,CALFA @@ -409,8 +410,8 @@ C Third line: Number of layers C Here we read the NLayers structure DO I=1,NLayers C Thickness (DX), density (RHO), and correction factor (CK, it is -C always 1.0??) - READ(11,*) DX(I),RHO(I),CK(I) +C always 1.0??), chemical formula (chem) + READ(11,*) chem(I),DX(I),RHO(I),CK(I) C Atomic numbers READ(11,*) ZT(I,1),ZT(I,2),ZT(I,3),ZT(I,4),ZT(I,5) C Mass numbers (amu) @@ -3425,14 +3426,17 @@ c & 5x,'imp',2x,'backsc',3x,'trans',3x,'tried',4x,'negE',3x, & 'range',6x,'straggeling',2x, 'Eback',7x,'sigEback',4x & ,'Etrans',6x,'SigEtrans',3x, 'red._E',6x ,'PRC',3x,999(A7 - & I0,3x)) + & ,3x)) +C & I0,3x)) 7801 FORMAT(F12.2,3(1x,F9.2),1x,6(I7,1x),6(E12.4),2(E12.4),999(I7 & ,1x)) inquire(FILE='fort.33',EXIST=FORT33) if (.not.FORT33) then open(33) - WRITE(33,7802) ('impL',k,k=1,NLayers) +C This is where we can insert the chemical formula +C WRITE(33,7802) ('impL',k,k=1,NLayers) + WRITE(33,7802) (chem(k),k=1,NLayers) else open(33,access='append') endif diff --git a/out/make/deb/x64/trimsp_1.0.0_amd64.deb b/out/make/deb/x64/trimsp_1.0.0_amd64.deb deleted file mode 100644 index 6ffc053..0000000 Binary files a/out/make/deb/x64/trimsp_1.0.0_amd64.deb and /dev/null differ diff --git a/out/make/rpm/x64/TrimSP-1.0.0-1.x86_64.rpm b/out/make/rpm/x64/TrimSP-1.0.0-1.x86_64.rpm deleted file mode 100644 index 777e306..0000000 Binary files a/out/make/rpm/x64/TrimSP-1.0.0-1.x86_64.rpm and /dev/null differ diff --git a/package.json b/package.json index 7a44b69..24e9eaf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "TrimSP", - "version": "1.0.0", + "version": "1.0.1", "description": "Trim.SP simulation to calculate stopping profile of implanted probes.", "main": "main.js", "scripts": { diff --git a/trimspNL b/trimspNL index 784349d..3cbb71d 100755 Binary files a/trimspNL and b/trimspNL differ