dirtybomb
Version:
A dirty bomb model
226 lines (198 loc) • 10.5 kB
HTML
<html>
<head>
<meta charset="utf-8">
<base data-ice="baseUrl" href="../../">
<title data-ice="title">src/NuclearMaterial.js | API Document</title>
<link type="text/css" rel="stylesheet" href="css/style.css">
<link type="text/css" rel="stylesheet" href="css/prettify-tomorrow.css">
<script src="script/prettify/prettify.js"></script>
<script src="script/manual.js"></script>
</head>
<body class="layout-container" data-ice="rootContainer">
<header>
<a href="./">Home</a>
<a href="identifiers.html">Reference</a>
<a href="source.html">Source</a>
<a href="test.html" data-ice="testLink">Test</a>
<a data-ice="repoURL" href="https://github.com/austincawley/dirtybomb" class="repo-url-github">Repository</a>
<div class="search-box">
<span>
<img src="./image/search.png">
<span class="search-input-edge"></span><input class="search-input"><span class="search-input-edge"></span>
</span>
<ul class="search-result"></ul>
</div>
</header>
<nav class="navigation" data-ice="nav"><div>
<ul>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Bomb.js~Bomb.html">Bomb</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dirtybomb.js~Dirtybomb.html">Dirtybomb</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/NuclearMaterial.js~NuclearMaterial.html">NuclearMaterial</a></span></span></li>
<li data-ice="doc"><div data-ice="dirPath" class="nav-dir-path">Dispersion</div><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/Atmosphere.js~Atmosphere.html">Atmosphere</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff.html">DynamicGaussianDecayPuff</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff.html">DynamicGaussianPuff</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume.html">GaussianDecayPlume</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff.html">GaussianDecayPuff</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/GaussianPlume.js~GaussianPlume.html">GaussianPlume</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/GaussianPuff.js~GaussianPuff.html">GaussianPuff</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-class">C</span><span data-ice="name"><span><a href="class/src/Dispersion/Source.js~Source.html">Source</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-Vector">Vector</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-integrate">integrate</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Dispersion">Dispersion</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-SourceType">SourceType</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-Coord">Coord</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-STD_Y_COEFF">STD_Y_COEFF</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-STD_Z_COEFF">STD_Z_COEFF</a></span></span></li>
<li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-Stat">Stat</a></span></span></li>
</ul>
</div>
</nav>
<div class="content" data-ice="content"><h1 data-ice="title">src/NuclearMaterial.js</h1>
<pre class="source-code line-number raw-source-code"><code class="prettyprint linenums" data-ice="content">/**
* Created by austin on 6/16/16.
*/
/**
* Predefined isotopes:
Cobalt 60
Strontium 90
Iodine 129
Caesium 135
Caesium 137
Polonium 210
Radon 222
Radium 226
Torium 232
Uranium 233
Uranium 235
Uranium 238
Plutonium 238
Plutonium 239
Plutonium 240
Americium 241
Curium 242
*
*
* @type {*[]}
*/
const ISOTOPES = [
{name: "Cobalt", element: "Co", mass: 60, halfLife: 166349000, decayMode: "beta,gamma,gamma"},
{name: "Strontium", element: "Sr", mass: 90, halfLife: 908839000, decayMode: "betaminus"},
{name: "Iodine", element: "I", mass: 129, halfLife: 495444000000000, decayMode: "beta,gamma"},
{name: "Caesium", element: "Cs", mass: 135, halfLife: 7.25328e+13, decayMode: "beta"},
{name: "Caesium", element: "Cs", mass: 137, halfLife: 952072000, decayMode: "beta,gamma"},
{name: "Polonium", element: "Po", mass: 210, halfLife: 11955700, decayMode: "alpha"},
{name: "Radon", element: "Rn", mass: 222, halfLife: 330350, decayMode: "alpha"},
{name: "Radium", element: "Ra", mass: 226, halfLife: 50491100000, decayMode: "alpha"},
{name: "Thorium", element: "Th", mass: 232, halfLife: 443375000000000000, decayMode: "alpha"},
{name: "Uranium", element: "U", mass: 233, halfLife: 5023860000000, decayMode: "alpha"},
{name: "Uranium", element: "U", mass: 235, halfLife: 22209800000000000, decayMode: "alpha"},
{name: "Uranium", element: "U", mass: 238, halfLife: 140996000000000000, decayMode: "alpha"},
{name: "Plutonium", element: "Pu", mass: 238, halfLife: 2767540000, decayMode: "alpha"},
{name: "Plutonium", element: "Pu", mass: 239, halfLife: 760837000000, decayMode: "alpha"},
{name: "Plutonium", element: "Pu", mass: 240, halfLife: 207108000000, decayMode: "alpha"},
{name: "Americium", element: "Am", mass: 241, halfLife: 13638900000, decayMode: "alpha"},
{name: "Curium", element: "Cm", mass: 242, halfLife: 13824000, decayMode: "alpha"}
];
/**
* Provides a few presets of common nuclear material as well as the ability to define a custom material
*/
class NuclearMaterial {
/**
*
* @param {number|string} halfLifeOrName - either
* @param {number} [atomicMass] - necessary with name if using preset (u)
* @param {number} mass - Total mass of substance (g)
* @param {string} [decayMode='']
*
* @example
* // 100 grams of Cobalt-60
* let cobalt60 = new NuclearMaterial("Cobalt", 60, 100);
*
* // 100 grams of Plutonium-238
* let pu238 = new NuclearMaterial(2767540000, 238, 100);
*/
constructor(halfLifeOrName, atomicMass, mass, decayMode = '') {
if (typeof halfLifeOrName === 'number') {
/**
*
* @type {number}
* @private
*/
this._halfLife = halfLifeOrName;
/**
* @type {number|*}
* @private
*/
this._atomicMass = atomicMass;
/**
*
* @type {string}
* @private
*/
this._decayMode = decayMode;
} else {
let isotopePreset;
for (let i of ISOTOPES) {
if (i.name === halfLifeOrName && i.mass == Math.round(atomicMass)) {
isotopePreset = i;
break;
}
}
if (!isotopePreset)
throw new Error('There is no preset for ' + halfLifeOrName + '-'+ atomicMass);
this._halfLife = isotopePreset.halfLife; // Map to known substances
this._atomicMass = isotopePreset.mass;
this._decayMode = isotopePreset.decayMode;
}
/**
*
* @type {number}
* @private
*/
this._mass = mass;
}
/**
*
* @returns {number}
*/
get mass() {
return this._mass;
}
/**
*
* @returns {number|*}
*/
get atomicMass() {
return this._atomicMass;
}
/**
*
* @returns {number|*}
*/
get halfLife() {
return this._halfLife;
}
/**
*
* @returns {string|*}
*/
get decayMode() {
return this._decayMode;
}
}
NuclearMaterial.PRESETS = ISOTOPES;
export default NuclearMaterial;</code></pre>
</div>
<footer class="footer">
Generated by <a href="https://esdoc.org">ESDoc<span data-ice="esdocVersion">(0.4.7)</span></a>
</footer>
<script src="script/search_index.js"></script>
<script src="script/search.js"></script>
<script src="script/pretty-print.js"></script>
<script src="script/inherited-summary.js"></script>
<script src="script/test-summary.js"></script>
<script src="script/inner-link.js"></script>
<script src="script/patch-for-local.js"></script>
</body>
</html>