[
  {
    "__docId__": 0,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Bomb.js",
    "memberof": null,
    "longname": "src/Bomb.js",
    "access": null,
    "description": null,
    "lineNumber": 5,
    "content": "/**\n * Created by austin on 6/17/16.\n */\n\nimport Source from './Dispersion/Source';\nimport Atmosphere from './Dispersion/Atmosphere';\nimport GaussianPuff from './Dispersion/GaussianPuff';\nimport DynamicGaussianPuff from './Dispersion/DynamicGaussianDecayPuff';\nimport {SourceType} from './Dispersion/Source';\n\n// For some reason importing Atmosphere makes Rollup unhappy\n\n/**\n * Explosive energy of tnt\n * MJ/kg\n * @type {number}\n * @see https://en.wikipedia.org/wiki/TNT_equivalent\n */\nconst Q_TNT = 4.184;    // One Megaton of TNT == 4.184 Petajoules\n\n/**\n * A simple bomb \n */\nclass Bomb {\n    /**\n     *\n     * @param {number} tntEqvMass - Standardized TNT equivalent kg (kg)\n     * @param {Atmosphere} [atmosphere=Bomb.STANDARD_ATM]\n     * @param {boolean} [isStatic=true] - Determines the type of puff that is used\n     */\n    constructor(tntEqvMass, atmosphere = Bomb.STANDARD_ATM, isStatic = true) {\n        /**\n         *\n         * @type {number}\n         * @private\n         */\n        this._mass = tntEqvMass;\n        /**\n         * A standardized measure for weapon strength\n         * @type {number}\n         * @private\n         */\n        this._weaponYield = tntEqvMass / 1000000;\n        /**\n         *\n         * @type {Atmosphere}\n         * @private\n         */\n        this._atm = atmosphere;\n\n        /**\n         * \n         * @type {Source}\n         * @private\n         */\n        this._source = new Source(\n            SourceType.POINT,\n            Math.POSITIVE_INFINITY, // Emission rate, arb for puffs. TODO!\n            this.cloudHeight,\n            this.cloudRadius,\n            this.getGasTemp(this.cloudHeight),\n            this.getGasVelocity(this.cloudHeight)\n        );\n        \n        if (isStatic) {\n            this._puff = new GaussianPuff(\n                atmosphere,\n                this._source,\n                this.mass // Todo: how to calculate how much mass goes into the air?\n            );\n        } else {\n            this._puff = new DynamicGaussianPuff(\n                atmosphere,\n                this._source,\n                this.mass // Todo: how to calculate how much mass goes into the air?\n            );\n        }\n        \n        \n        if (this.weaponYield > 1000) {\n            console.warn(\"WARNING: this bomb library is mean for bombs weaponYields under 1000.\");\n        }\n    }\n\n    /**\n     *\n     * @param atm\n     * @returns {Bomb}\n     */\n    setAtmosphere(atm) {\n        this._atm = atm;\n        return this;\n    }\n\n    /**\n     *\n     * @returns {Atmosphere}\n     */\n    get atmosphere() {\n        return this._atm;\n    }\n\n    /**\n     *\n     * @returns {number}\n     */\n    get weaponYield() {\n        return this._weaponYield;\n    }\n\n    /**\n     *\n     * @returns {Source}\n     */\n    get source() {\n        return this._source;\n    }\n\n    /**\n     *\n     * @param mass\n     * @returns {Bomb}\n     */\n    setMass(mass) {\n        this._mass = mass;\n        return this;\n    }\n\n    /**\n     *\n     * @returns {number}\n     */\n    get mass() {\n        return this._mass;\n    }\n\n    /**\n     * Based on kilotons of tnt nuclear explosions\n     * @returns {number} - (m)\n     */\n    get blastRadius() {\n        return 30 * Math.pow(this.weaponYield, 1/3);\n    }\n\n    /**\n     * From eq 7 of CISAC Fallout Model\n     * Approximating this as the top of the stem cloud\n     * Perhaps will change this as a combination of all three cloud alt equations\n     * @see http://cisac.fsi.stanford.edu/sites/default/files/geist_2014_cv.pdf\n     * @returns {number}\n     */\n    get cloudHeight() {\n        if (this.weaponYield < 2) {\n            return 1740 * Math.pow(this.weaponYield, 0.229);\n        }\n        if (this.weaponYield < 20) {\n            return 1720 * Math.pow(this.weaponYield, 0.261);\n        }\n        return 2040 * Math.pow(this.weaponYield, 0.204);\n    }\n\n    /**\n     * Should not be used in this context. Really for nuclear bombs.\n     * @returns {number}\n     * @private\n     */\n    _getMainCloudRadius() {\n        return 872 * Math.pow(this.weaponYield, 0.427);\n    }\n\n    /**\n     *\n     * @returns {number} - (m)\n     */\n    get cloudRadius() {\n        let mainRad = this._getMainCloudRadius();\n        if (this.weaponYield < 20) {\n            return 0.5 * mainRad;\n        }\n        if (this.weaponYield <= 1000) {\n            return 0.5 * mainRad - 0.3 * mainRad * ((this.weaponYield - 20) / 980);\n        }\n        return 0.2 * mainRad - 0.1 * mainRad * ((this.weaponYield - 1000) / 9000);\n    }\n\n    /**\n     *\n     * @returns {DynamicGaussianPuff|GaussianPuff} - Depending on if the dispersion is static\n     */\n    get dispersion() {\n        return this._puff;\n    }\n\n    /**\n     * @see https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 3\n     * @param {number} r - distance from origin (m)\n     * @returns {number} - pressure (atm)\n     */\n    getOverpressureAt(r) {\n        let a = (0.84 / r) * Math.pow(this._mass, (1/3));\n        let b = (2.7 / Math.pow(r, 2)) * Math.pow(this.mass, (2/3));\n        let c = (7 / Math.pow(r, 3)) * this.mass;\n        return a + b + c;\n    }\n\n    /**\n     * Velocity of gas in behind shock wave front\n     * @see https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 5.2\n     * @param {number} r - distance from origin (m)\n     * @returns {number} velocity (m/s)\n     */\n    getGasVelocity(r) {\n        let pressure = this.getOverpressureAt(r);\n        // Simplified for standard atmosphere\n        return 243 * pressure / Math.sqrt(1 + 0.86 * pressure);\n    }\n\n    /**\n     * Temperature of gas in shock wave front\n     * @see https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 5.3\n     * @param {number} r - distance from origin (m)\n     * @returns {number} temperature (K)\n     */\n    getGasTemp(r) {\n        let pressure = this.getOverpressureAt(r);\n        return this.atmosphere.temperature * (1 + pressure) * (7 + pressure) / (7 + 6 * pressure);\n    }\n\n    /**\n     * Positive Shock Phase Duration\n     * @see https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 4\n     * @param {number} r - distance from origin (m)\n     * @returns {number} duration (s)\n     */\n    getPosShockPhaseDuration(r) {\n        return 1.3 * Math.pow(this.mass, (1 / 6)) * Math.sqrt(r) * 0.001;\n    }\n\n    /**\n     * \n     * @param {number} qExp - explosive energy (MJ/kg)\n     * @returns {number}\n     */\n    static tntEquivalentFactor(qExp) {\n        return qExp / Q_TNT;\n    }\n\n    /**\n     * \n     * @param {number} qExp - explosive energy (MJ/kg)\n     * @param {number} mass - (kg)\n     * @returns {number}\n     */\n    static tntEquivalent(qExp, mass) {\n        return Bomb.tntEquivalentFactor(qExp) * mass;\n    }\n}\n\n/**\n * Should probably move this to the Atmosphere class\n * 0 wind\n * 0 sky cover\n * 65 degrees sun\n * 59 degrees F / 15 degrees C\n * @type {Atmosphere}\n */\nBomb.STANDARD_ATM = new Atmosphere(0, 0, 65, 288.2);\nexport default Bomb;"
  },
  {
    "__docId__": 1,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "Q_TNT",
    "memberof": "src/Bomb.js",
    "longname": "src/Bomb.js~Q_TNT",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Bomb.js",
    "importStyle": null,
    "description": "Explosive energy of tnt\nMJ/kg",
    "see": [
      "https://en.wikipedia.org/wiki/TNT_equivalent"
    ],
    "lineNumber": 19,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 2,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "Bomb",
    "memberof": "src/Bomb.js",
    "longname": "src/Bomb.js~Bomb",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Bomb.js",
    "importStyle": "Bomb",
    "description": "A simple bomb ",
    "lineNumber": 24,
    "interface": false
  },
  {
    "__docId__": 3,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#constructor",
    "access": null,
    "description": "",
    "lineNumber": 31,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "tntEqvMass",
        "description": "Standardized TNT equivalent kg (kg)"
      },
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "Bomb.STANDARD_ATM",
        "defaultRaw": "Bomb.STANDARD_ATM",
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "true",
        "defaultRaw": true,
        "name": "isStatic",
        "description": "Determines the type of puff that is used"
      }
    ],
    "generator": false
  },
  {
    "__docId__": 4,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_mass",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_mass",
    "access": "private",
    "description": "",
    "lineNumber": 37,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 5,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_weaponYield",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_weaponYield",
    "access": "private",
    "description": "A standardized measure for weapon strength",
    "lineNumber": 43,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 6,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_atm",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_atm",
    "access": "private",
    "description": "",
    "lineNumber": 49,
    "type": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 7,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_source",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_source",
    "access": "private",
    "description": "",
    "lineNumber": 56,
    "type": {
      "nullable": null,
      "types": [
        "Source"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 8,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_puff",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_puff",
    "access": null,
    "description": null,
    "lineNumber": 66,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 9,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_puff",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_puff",
    "access": null,
    "description": null,
    "lineNumber": 72,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 10,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setAtmosphere",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#setAtmosphere",
    "access": null,
    "description": "",
    "lineNumber": 90,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Bomb}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "atm",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Bomb"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 11,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_atm",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_atm",
    "access": null,
    "description": null,
    "lineNumber": 91,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 12,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "atmosphere",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#atmosphere",
    "access": null,
    "description": "",
    "lineNumber": 99,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 13,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "weaponYield",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#weaponYield",
    "access": null,
    "description": "",
    "lineNumber": 107,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 14,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "source",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#source",
    "access": null,
    "description": "",
    "lineNumber": 115,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Source}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Source"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 15,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setMass",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#setMass",
    "access": null,
    "description": "",
    "lineNumber": 124,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Bomb}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "mass",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Bomb"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 16,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_mass",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_mass",
    "access": null,
    "description": null,
    "lineNumber": 125,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 17,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "mass",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#mass",
    "access": null,
    "description": "",
    "lineNumber": 133,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 18,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "blastRadius",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#blastRadius",
    "access": null,
    "description": "Based on kilotons of tnt nuclear explosions",
    "lineNumber": 141,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} - (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "(m)"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 19,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "cloudHeight",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#cloudHeight",
    "access": null,
    "description": "From eq 7 of CISAC Fallout Model\nApproximating this as the top of the stem cloud\nPerhaps will change this as a combination of all three cloud alt equations",
    "see": [
      "http://cisac.fsi.stanford.edu/sites/default/files/geist_2014_cv.pdf"
    ],
    "lineNumber": 152,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 20,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "_getMainCloudRadius",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#_getMainCloudRadius",
    "access": "private",
    "description": "Should not be used in this context. Really for nuclear bombs.",
    "lineNumber": 167,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 21,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "cloudRadius",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#cloudRadius",
    "access": null,
    "description": "",
    "lineNumber": 175,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} - (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "(m)"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 22,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "dispersion",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#dispersion",
    "access": null,
    "description": "",
    "lineNumber": 190,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{DynamicGaussianPuff|GaussianPuff} - Depending on if the dispersion is static"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DynamicGaussianPuff",
        "GaussianPuff"
      ],
      "spread": false,
      "description": "Depending on if the dispersion is static"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 23,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getOverpressureAt",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#getOverpressureAt",
    "access": null,
    "description": "",
    "see": [
      "https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 3"
    ],
    "lineNumber": 199,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} - pressure (atm)"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "r",
        "description": "distance from origin (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "pressure (atm)"
    },
    "generator": false
  },
  {
    "__docId__": 24,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getGasVelocity",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#getGasVelocity",
    "access": null,
    "description": "Velocity of gas in behind shock wave front",
    "see": [
      "https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 5.2"
    ],
    "lineNumber": 212,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} velocity (m/s)"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "r",
        "description": "distance from origin (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "velocity (m/s)"
    },
    "generator": false
  },
  {
    "__docId__": 25,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getGasTemp",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#getGasTemp",
    "access": null,
    "description": "Temperature of gas in shock wave front",
    "see": [
      "https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 5.3"
    ],
    "lineNumber": 224,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} temperature (K)"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "r",
        "description": "distance from origin (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "temperature (K)"
    },
    "generator": false
  },
  {
    "__docId__": 26,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getPosShockPhaseDuration",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb#getPosShockPhaseDuration",
    "access": null,
    "description": "Positive Shock Phase Duration",
    "see": [
      "https://www.metabunk.org/attachments/blast-effect-calculation-1-pdf.2578/ equation 4"
    ],
    "lineNumber": 235,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} duration (s)"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "r",
        "description": "distance from origin (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "duration (s)"
    },
    "generator": false
  },
  {
    "__docId__": 27,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "tntEquivalentFactor",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb.tntEquivalentFactor",
    "access": null,
    "description": "",
    "lineNumber": 244,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "qExp",
        "description": "explosive energy (MJ/kg)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 28,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "tntEquivalent",
    "memberof": "src/Bomb.js~Bomb",
    "longname": "src/Bomb.js~Bomb.tntEquivalent",
    "access": null,
    "description": "",
    "lineNumber": 254,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "qExp",
        "description": "explosive energy (MJ/kg)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "mass",
        "description": "(kg)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 29,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dirtybomb.js",
    "memberof": null,
    "longname": "src/Dirtybomb.js",
    "access": null,
    "description": null,
    "lineNumber": 7,
    "content": "/**\n * Created by austin on 6/2/16.\n * file: Dirtybomb.js\n * \n */\n\nimport GaussianDecayPuff from './Dispersion/GaussianDecayPuff';\nimport DynamicGaussianDecayPuff from './Dispersion/DynamicGaussianDecayPuff';\nimport Bomb from './Bomb';\nimport NuclearMaterial from './NuclearMaterial';\nimport Dispersion from './Dispersion/Dispersion';\n\n/**\n * A simple dirtybomb. Assumes all nuclear material is released into the atmosphere\n */\nclass Dirtybomb extends Bomb {\n\n    /**\n     * @param {NuclearMaterial} nuclearMat\n     * @param {number} tntEqvMass - Standardized TNT equivalent (kg)\n     * @param {Atmosphere} [atmosphere=Bomb.STANDARD_ATM]\n     * @param {boolean} [isStatic=true] - Determines the type of puff that is used\n     * \n     */\n    constructor(nuclearMat, tntEqvMass, atmosphere = Bomb.STANDARD_ATM, isStatic = true) {\n        super(tntEqvMass, atmosphere, isStatic);\n        \n        /**\n         * @type {NuclearMaterial}\n         * @private\n         */\n        this._nucMat = nuclearMat;\n\n        /**\n         * Either\n         * @type {GaussianPuff}\n         * @private\n         */\n        this._puff;\n        \n        if (isStatic) {\n            this._puff = new GaussianDecayPuff(\n                atmosphere,\n                this.source,\n                nuclearMat.mass,\n                nuclearMat.halfLife\n            );\n        } else {\n            this._puff = new DynamicGaussianDecayPuff(\n                atmosphere,\n                this.source,\n                nuclearMat.mass,\n                nuclearMat.halfLife\n            )\n        }\n    }\n}\n\nexport {Dispersion};\nexport {NuclearMaterial};\nexport default Dirtybomb;"
  },
  {
    "__docId__": 30,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "Dirtybomb",
    "memberof": "src/Dirtybomb.js",
    "longname": "src/Dirtybomb.js~Dirtybomb",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dirtybomb.js",
    "importStyle": "Dirtybomb",
    "description": "A simple dirtybomb. Assumes all nuclear material is released into the atmosphere",
    "lineNumber": 16,
    "interface": false,
    "extends": [
      "src/Bomb.js~Bomb"
    ]
  },
  {
    "__docId__": 31,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dirtybomb.js~Dirtybomb",
    "longname": "src/Dirtybomb.js~Dirtybomb#constructor",
    "access": null,
    "description": "",
    "lineNumber": 25,
    "params": [
      {
        "nullable": null,
        "types": [
          "NuclearMaterial"
        ],
        "spread": false,
        "optional": false,
        "name": "nuclearMat",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "tntEqvMass",
        "description": "Standardized TNT equivalent (kg)"
      },
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "Bomb.STANDARD_ATM",
        "defaultRaw": "Bomb.STANDARD_ATM",
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "true",
        "defaultRaw": true,
        "name": "isStatic",
        "description": "Determines the type of puff that is used"
      }
    ],
    "generator": false
  },
  {
    "__docId__": 32,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_nucMat",
    "memberof": "src/Dirtybomb.js~Dirtybomb",
    "longname": "src/Dirtybomb.js~Dirtybomb#_nucMat",
    "access": "private",
    "description": "",
    "lineNumber": 32,
    "type": {
      "nullable": null,
      "types": [
        "NuclearMaterial"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 33,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_puff",
    "memberof": "src/Dirtybomb.js~Dirtybomb",
    "longname": "src/Dirtybomb.js~Dirtybomb#_puff",
    "access": null,
    "description": null,
    "lineNumber": 42,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 34,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_puff",
    "memberof": "src/Dirtybomb.js~Dirtybomb",
    "longname": "src/Dirtybomb.js~Dirtybomb#_puff",
    "access": null,
    "description": null,
    "lineNumber": 49,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 35,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/Atmosphere.js",
    "memberof": null,
    "longname": "src/Dispersion/Atmosphere.js",
    "access": null,
    "description": null,
    "lineNumber": 6,
    "content": "/**\n * Created by austin on 6/2/16.\n * @file Atmosphere.js\n */\n\nimport Vector from './Vector';\n\n/**\n * On a scale of 0 - 6\n * Extremely unstable A ... DD, DN ... F Moderately Stable\n * @type {string[]}\n */\nconst LETTER_GRADES = ['A', 'B', 'C', 'DD', 'DN', 'E', 'F'];\n\n/**\n * Overcast should always receive a 3 (D)\n * From Table. 2 on Page 9, all mid grades are rounded up.\n * Maps _windSpeedVec and _skyCover to a grade\n * [<2, 2-3, 3-5, 5-6, >6] then\n * [strong, moderate, slight]\n * @type {number[][]}\n */\nconst DAY_GRADES = [\n    [0, 0, 1],\n    [0, 1, 2],\n    [1, 1, 2],\n    [2, 2, 3],\n    [2, 3, 3]\n];\n\n/**\n * Defined as one hour before sunset to one hour after sunrise\n * NOTE: Night Grade D is DN, 4\n * [_skyCover > .5, _skyCover < .5]\n * @type {number[][]}\n */\nconst NIGHT_GRADES = [  \n    [4, 4], // No given, assumed Class D / not practically possible\n    [5, 6],\n    [4, 5],\n    [4, 4],\n    [4, 4]\n];\n\n/**\n * Contains constants for wind in rural / urban settings\n * @type {Object[]}\n * @property {number} rural\n * @property {number} urban\n */\nconst WIND_PROFILES = [\n    {rural: 0.07, urban: 0.15},\n    {rural: 0.07, urban: 0.15},\n    {rural: 0.1, urban: 0.2},\n    {rural: 0.15, urban: 0.3},\n    {rural: 0.15, urban: 0.3},\n    {rural: 0.35, urban: 0.3},\n    {rural: 0.55, urban: 0.3}\n];\n\n/**\n * Represents the physical surroundings of a Gaussian Plume\n */\nclass Atmosphere {\n\n    /**\n     * Only windSpeed, _skyCover, and _solarElevation are required.\n     * Temperature is required when not _setting effective source height manually\n     * The default is urban daytime.\n     * @param {Array|number} windSpeed - at ground level (m/s)\n     * @param {number} skyCover - a percentage 0-1\n     * @param {number} solarElevation - (degrees)\n     * @param {number} temperature - (Kelvin)\n     * @param {number} pressure - (atm)\n     * @param {string} [setting=\"urban\"]\n     * @param {boolean} [isNight=false] - Can change this to a Date, but should be simple enough to keep track of for the user\n     *          1 hour before sunset and 1 hour past sunrise\n     */\n    constructor(windSpeed, skyCover, solarElevation, temperature, pressure = 1, setting = \"urban\", isNight = false) {\n        /**\n         * \n         * @type {Vector}\n         * @private\n         */\n        this._windSpeedVec = Array.isArray(windSpeed) ? Vector.fromArray(windSpeed) : new Vector(windSpeed);\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._skyCover = skyCover;\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._solarElevation = solarElevation;\n        /**\n         * \n         * @type {number}\n         */\n        this._temp = temperature;\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._pressure = pressure;\n        /**\n         * \n         * @type {string}\n         * @private\n         */\n        this._setting = setting;\n        /**\n         * \n         * @type {boolean}\n         * @private\n         */\n        this._isNight = isNight;\n        //this.grade = Atmosphere.calculateGrade(_skyCover, _solarElevation, _windSpeedVec);\n    }\n\n    /**\n     * \n     * @returns {string}\n     */\n    toString() {\n        return \"Grade: \" + this.letterGrade +\n            \" Wind at \" + this.windSpeed + \" m/s,\" +\n            \" Sun at \" + this._solarElevation + \" degrees\";\n    }\n\n    /* Static methods: these seemed more convenient at the time so one wouldn't have\n    * to build a whole Atmosphere object to calculate a grade, but now seem useless */\n\n    /**\n     * Helper function for grade calculation\n     * @private\n     * @param {number} windSpeed - m/s\n     * @returns {number} index of windLevel in WIND_PROFILES\n     */\n    static _getWindLevel(windSpeed) {\n        let level;\n        if (windSpeed < 2) {\n            // < 2\n            level = 0;\n        } else if (windSpeed < 3) {\n            // 2 - 3\n            level = 1;\n        } else if (windSpeed < 5) {\n            // 3 - 5;\n            level = 2;\n        } else if (windSpeed < 6) {\n            // 5 - 6\n            level = 3;\n        } else {\n            // > 6\n            level = 4;\n        }\n        return level;\n    }\n\n    /**\n     * Helper function for grade calculation\n     * @private\n     * @param {number} skyCover \n     * @param {number} solarElevation \n     * @returns {number} \n     */\n    static _getInsolationLevel(skyCover, solarElevation) {\n        let insolation;\n        if (skyCover <= .5) {\n            if (solarElevation > 60) {\n                // strong\n                insolation = 0;\n            } else if (solarElevation > 35) {\n                // moderate\n                insolation = 1;\n            } else {\n                // slight\n                insolation = 2;\n            }\n        } else {\n            if (solarElevation > 60) {\n                // moderate\n                insolation = 1;\n            } else if (solarElevation > 35) {\n                // slight\n                insolation = 2;\n            } else {\n                // slight\n                insolation = 2;\n            }\n        }\n        return insolation;\n    }\n\n    /**\n     * Calculates a grade with given parameters\n     * @param {number} skyCover \n     * @param {number} solarElevation \n     * @param {number} windSpeed\n     * @param {boolean} isNight \n     * @returns {number} 0 - 6\n     */\n    static calculateGrade(skyCover, solarElevation, windSpeed, isNight) {\n        let grade;\n        let windLevel = Atmosphere._getWindLevel(windSpeed);\n        if (isNight) {\n            let coverLevel = skyCover > .5 ? 0 : 1; // For night, just two columns\n            grade = NIGHT_GRADES[windLevel][coverLevel];\n        } else {\n            let insolation = Atmosphere._getInsolationLevel(skyCover, solarElevation);\n            grade = DAY_GRADES[windLevel][insolation];\n        }\n        return grade;\n    }\n    \n    /**\n     * \n     * @returns {number} 0-6\n     */\n    get grade() {\n        return Atmosphere.calculateGrade(this.skyCover, this.solarElevation, this.windSpeed, this.isNight);\n    }\n    \n    /**\n     * The Human readable\n     * @returns {string} A - F\n     */\n    get letterGrade() {\n        return LETTER_GRADES[this.grade];\n    }\n\n    /**\n     * \n     * @param speed {number[]|number} m/s\n     * @returns {Atmosphere}\n     */\n    setWindSpeed(speed) {\n        this._windSpeedVec = Array.isArray(speed) ? Vector.fromArray(speed) : new Vector(speed);\n        return this;\n    }\n\n    /**\n     * \n     * @returns {Vector|*}\n     */\n    get windSpeedVec() {\n        return this._windSpeedVec;\n    }\n    \n    /**\n     * \n     * @returns {number} m/s\n     */\n    get windSpeed() {\n        return this.windSpeedVec.abs();\n    }\n\n    /**\n     * The percentage of the sky is covered\n     * @param {number} cover - 0 - 1\n     * @returns {Atmosphere}\n     */\n    setSkyCover(cover) {\n        this._skyCover = cover;\n        return this;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    get skyCover() {\n        return this._skyCover;\n    }\n\n    /**\n     * \n     * @param {number} elevation - degrees \n     * @returns {Atmosphere}\n     */\n    setSolarElevation(elevation) {\n        this._solarElevation = elevation;\n        return this;\n    }\n\n    /**\n     * \n     * @returns {number} degrees\n     */\n    get solarElevation() {\n        return this._solarElevation;\n    }\n\n    /**\n     * \n     * @param {number} temp - Kelvin\n     * @returns {Atmosphere}\n     */\n    setTemperature(temp) {\n        this._temp = temp;\n        return this;\n    }\n\n    /**\n     * \n     * @returns {number|*} Kelvin\n     */\n    get temperature() {\n        return this._temp;\n    }\n\n    /**\n     * \n     * @param pressure\n     * @returns {Atmosphere}\n     */\n    setPressure(pressure) {\n        this._pressure = pressure;\n        return this;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    get pressure() {\n        return this._pressure;\n    }\n\n    /**\n     * \n     * @param {string} setting - Either \"rural\" or \"urban\"\n     * @returns {Atmosphere}\n     */\n    setSetting(setting) {\n        this._setting = setting;\n        return this;\n    }\n\n    /**\n     * \n     * @returns {string}\n     */\n    get setting() {\n        return this._setting;\n    }\n\n    /**\n     * \n     * @param {boolean} isNight\n     * @returns {Atmosphere}\n     */\n    setIsNight(isNight) {\n        this._isNight = isNight;\n        return this;\n    }\n\n    /**\n     *\n     * @returns {boolean|*}\n     */\n    get isNight() {\n        return this._isNight;\n    }\n    \n    /**\n     * Adjusts wind speed to a specific height. Approximation.\n     * @param {number} height - m\n     * @returns {number} The approx. wind speed at a specified height above the ground (m/s)\n     */\n    getWindSpeedAt(height) {\n        // Assumes ground wind speed was measured at 10m\n        let windProfile = this._setting === 'urban' ? \n            WIND_PROFILES[this.grade].urban : WIND_PROFILES[this.grade].rural;\n        return this.windSpeed * Math.pow((height / 10), windProfile);\n    }\n}\n\nexport default Atmosphere;"
  },
  {
    "__docId__": 36,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "LETTER_GRADES",
    "memberof": "src/Dispersion/Atmosphere.js",
    "longname": "src/Dispersion/Atmosphere.js~LETTER_GRADES",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Atmosphere.js",
    "importStyle": null,
    "description": "On a scale of 0 - 6\nExtremely unstable A ... DD, DN ... F Moderately Stable",
    "lineNumber": 13,
    "type": {
      "nullable": null,
      "types": [
        "string[]"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 37,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "DAY_GRADES",
    "memberof": "src/Dispersion/Atmosphere.js",
    "longname": "src/Dispersion/Atmosphere.js~DAY_GRADES",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Atmosphere.js",
    "importStyle": null,
    "description": "Overcast should always receive a 3 (D)\nFrom Table. 2 on Page 9, all mid grades are rounded up.\nMaps _windSpeedVec and _skyCover to a grade\n[<2, 2-3, 3-5, 5-6, >6] then\n[strong, moderate, slight]",
    "lineNumber": 23,
    "type": {
      "nullable": null,
      "types": [
        "number[][]"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 38,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "NIGHT_GRADES",
    "memberof": "src/Dispersion/Atmosphere.js",
    "longname": "src/Dispersion/Atmosphere.js~NIGHT_GRADES",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Atmosphere.js",
    "importStyle": null,
    "description": "Defined as one hour before sunset to one hour after sunrise\nNOTE: Night Grade D is DN, 4\n[_skyCover > .5, _skyCover < .5]",
    "lineNumber": 37,
    "type": {
      "nullable": null,
      "types": [
        "number[][]"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 39,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "WIND_PROFILES",
    "memberof": "src/Dispersion/Atmosphere.js",
    "longname": "src/Dispersion/Atmosphere.js~WIND_PROFILES",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Atmosphere.js",
    "importStyle": null,
    "description": "Contains constants for wind in rural / urban settings",
    "lineNumber": 51,
    "properties": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "rural",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "urban",
        "description": ""
      }
    ],
    "type": {
      "nullable": null,
      "types": [
        "Object[]"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 40,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "Atmosphere",
    "memberof": "src/Dispersion/Atmosphere.js",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/Atmosphere.js",
    "importStyle": "Atmosphere",
    "description": "Represents the physical surroundings of a Gaussian Plume",
    "lineNumber": 64,
    "interface": false
  },
  {
    "__docId__": 41,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#constructor",
    "access": null,
    "description": "Only windSpeed, _skyCover, and _solarElevation are required.\nTemperature is required when not _setting effective source height manually\nThe default is urban daytime.",
    "lineNumber": 79,
    "params": [
      {
        "nullable": null,
        "types": [
          "Array",
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "windSpeed",
        "description": "at ground level (m/s)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "skyCover",
        "description": "a percentage 0-1"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "solarElevation",
        "description": "(degrees)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "temperature",
        "description": "(Kelvin)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "pressure",
        "description": "(atm)"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "\"urban\"",
        "defaultRaw": "urban",
        "name": "setting",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "isNight",
        "description": "Can change this to a Date, but should be simple enough to keep track of for the user\n         1 hour before sunset and 1 hour past sunrise"
      }
    ],
    "generator": false
  },
  {
    "__docId__": 42,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_windSpeedVec",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_windSpeedVec",
    "access": "private",
    "description": "",
    "lineNumber": 85,
    "type": {
      "nullable": null,
      "types": [
        "Vector"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 43,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_skyCover",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_skyCover",
    "access": "private",
    "description": "",
    "lineNumber": 91,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 44,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_solarElevation",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_solarElevation",
    "access": "private",
    "description": "",
    "lineNumber": 97,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 45,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_temp",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_temp",
    "access": null,
    "description": "",
    "lineNumber": 102,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 46,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_pressure",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_pressure",
    "access": "private",
    "description": "",
    "lineNumber": 108,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 47,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_setting",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_setting",
    "access": "private",
    "description": "",
    "lineNumber": 114,
    "type": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 48,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_isNight",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_isNight",
    "access": "private",
    "description": "",
    "lineNumber": 120,
    "type": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 49,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "toString",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#toString",
    "access": null,
    "description": "",
    "lineNumber": 128,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{string}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 50,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "_getWindLevel",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere._getWindLevel",
    "access": "private",
    "description": "Helper function for grade calculation",
    "lineNumber": 143,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} index of windLevel in WIND_PROFILES"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "windSpeed",
        "description": "m/s"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "index of windLevel in WIND_PROFILES"
    },
    "generator": false
  },
  {
    "__docId__": 51,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "_getInsolationLevel",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere._getInsolationLevel",
    "access": "private",
    "description": "Helper function for grade calculation",
    "lineNumber": 171,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} "
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "skyCover",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "solarElevation",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 52,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "calculateGrade",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere.calculateGrade",
    "access": null,
    "description": "Calculates a grade with given parameters",
    "lineNumber": 207,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} 0 - 6"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "skyCover",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "solarElevation",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "windSpeed",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "isNight",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "0 - 6"
    },
    "generator": false
  },
  {
    "__docId__": 53,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "grade",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#grade",
    "access": null,
    "description": "",
    "lineNumber": 224,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} 0-6"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "0-6"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 54,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "letterGrade",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#letterGrade",
    "access": null,
    "description": "The Human readable",
    "lineNumber": 232,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{string} A - F"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": "A - F"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 55,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setWindSpeed",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setWindSpeed",
    "access": null,
    "description": "",
    "lineNumber": 241,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "speed",
        "description": "{number[]|number} m/s"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 56,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_windSpeedVec",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_windSpeedVec",
    "access": null,
    "description": null,
    "lineNumber": 242,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 57,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "windSpeedVec",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#windSpeedVec",
    "access": null,
    "description": "",
    "lineNumber": 250,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Vector|*}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Vector",
        "*"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 58,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "windSpeed",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#windSpeed",
    "access": null,
    "description": "",
    "lineNumber": 258,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} m/s"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "m/s"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 59,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setSkyCover",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setSkyCover",
    "access": null,
    "description": "The percentage of the sky is covered",
    "lineNumber": 267,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "cover",
        "description": "0 - 1"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 60,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_skyCover",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_skyCover",
    "access": null,
    "description": null,
    "lineNumber": 268,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 61,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "skyCover",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#skyCover",
    "access": null,
    "description": "",
    "lineNumber": 276,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 62,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setSolarElevation",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setSolarElevation",
    "access": null,
    "description": "",
    "lineNumber": 285,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "elevation",
        "description": "degrees"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 63,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_solarElevation",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_solarElevation",
    "access": null,
    "description": null,
    "lineNumber": 286,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 64,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "solarElevation",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#solarElevation",
    "access": null,
    "description": "",
    "lineNumber": 294,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} degrees"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "degrees"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 65,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setTemperature",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setTemperature",
    "access": null,
    "description": "",
    "lineNumber": 303,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "temp",
        "description": "Kelvin"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 66,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_temp",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_temp",
    "access": null,
    "description": null,
    "lineNumber": 304,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 67,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "temperature",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#temperature",
    "access": null,
    "description": "",
    "lineNumber": 312,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number|*} Kelvin"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number",
        "*"
      ],
      "spread": false,
      "description": "Kelvin"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 68,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setPressure",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setPressure",
    "access": null,
    "description": "",
    "lineNumber": 321,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "pressure",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 69,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_pressure",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_pressure",
    "access": null,
    "description": null,
    "lineNumber": 322,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 70,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "pressure",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#pressure",
    "access": null,
    "description": "",
    "lineNumber": 330,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 71,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setSetting",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setSetting",
    "access": null,
    "description": "",
    "lineNumber": 339,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "setting",
        "description": "Either \"rural\" or \"urban\""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 72,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_setting",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_setting",
    "access": null,
    "description": null,
    "lineNumber": 340,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 73,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "setting",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setting",
    "access": null,
    "description": "",
    "lineNumber": 348,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{string}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 74,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setIsNight",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#setIsNight",
    "access": null,
    "description": "",
    "lineNumber": 357,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "isNight",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 75,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_isNight",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#_isNight",
    "access": null,
    "description": null,
    "lineNumber": 358,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 76,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "isNight",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#isNight",
    "access": null,
    "description": "",
    "lineNumber": 366,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{boolean|*}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean",
        "*"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 77,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getWindSpeedAt",
    "memberof": "src/Dispersion/Atmosphere.js~Atmosphere",
    "longname": "src/Dispersion/Atmosphere.js~Atmosphere#getWindSpeedAt",
    "access": null,
    "description": "Adjusts wind speed to a specific height. Approximation.",
    "lineNumber": 375,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} The approx. wind speed at a specified height above the ground (m/s)"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "height",
        "description": "m"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "The approx. wind speed at a specified height above the ground (m/s)"
    },
    "generator": false
  },
  {
    "__docId__": 78,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/Dispersion.js",
    "memberof": null,
    "longname": "src/Dispersion/Dispersion.js",
    "access": null,
    "description": null,
    "lineNumber": 8,
    "content": "/**\n * Wraps everything up doi\n * Created by austin on 6/16/16.\n * @file Dispersion.js\n *\n */\n\nimport Source, {SourceType} from './Source';\nimport Atmosphere from './Atmosphere';\nimport GaussianPlume from './GaussianPlume';\nimport GaussianDecayPlume from './GaussianDecayPlume';\nimport GaussianPuff from './GaussianPuff';\nimport GaussianDecayPuff from './GaussianDecayPuff';\nimport DynamicGaussianPuff from './DynamicGaussianPuff';\nimport DynamicGaussianDecayPuff from './DynamicGaussianDecayPuff';\nimport Vector from './Vector';\n\n/**\n * Wrapper for the Dispersion Library\n */\nconst Dispersion = {};\n/**\n * \n * @type {Source}\n */\nDispersion.Source = Source;\n/**\n * \n * @type {{POINT: number, VOLUME: number, AREA: number}}\n */\nDispersion.SourceType = SourceType;\n/**\n * \n * @type {Atmosphere}\n */\nDispersion.Atmosphere = Atmosphere;\n/**\n * \n * @type {GaussianPlume}\n */\nDispersion.GaussianPlume = GaussianPlume;\n/**\n * \n * @type {GaussianDecayPlume}\n */\nDispersion.GaussianDecayPlume = GaussianDecayPlume;\n/**\n * \n * @type {GaussianPuff}\n */\nDispersion.GaussianPuff = GaussianPuff;\n/**\n * \n * @type {GaussianDecayPuff}\n */\nDispersion.GaussianDecayPuff = GaussianDecayPuff;\n/**\n * \n * @type {DynamicGaussianPuff}\n */\nDispersion.DynamicGaussianPuff = DynamicGaussianPuff;\n/**\n * \n * @type {DynamicGaussianDecayPuff}\n */\nDispersion.DynamicGaussianDecayPuff = DynamicGaussianDecayPuff;\n/**\n * \n * @type {Vector}\n */\nDispersion.Vector = Vector;\n\nexport {Source};\nexport {SourceType};\nexport {Atmosphere};\nexport {GaussianPlume};\nexport {GaussianDecayPlume};\nexport {GaussianPuff};\nexport {GaussianDecayPuff};\nexport {DynamicGaussianPuff};\nexport {DynamicGaussianDecayPuff};\nexport {Vector};\n\nexport default Dispersion;"
  },
  {
    "__docId__": 79,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "Dispersion",
    "memberof": "src/Dispersion/Dispersion.js",
    "longname": "src/Dispersion/Dispersion.js~Dispersion",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/Dispersion.js",
    "importStyle": "Dispersion",
    "description": "Wrapper for the Dispersion Library",
    "lineNumber": 21,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 80,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/DynamicGaussianDecayPuff.js",
    "memberof": null,
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js",
    "access": null,
    "description": null,
    "lineNumber": 7,
    "content": "/**\n * Created by austin on 6/16/16.\n * @file DynamicGaussianDecayPuff.js\n * \n */\n\nimport DynamicGaussianPuff from './DynamicGaussianPuff';\n\n/**\n * Adds half life decay to the Dynamic Puff\n */\nclass DynamicGaussianDecayPuff extends DynamicGaussianPuff {\n\n    /**\n     *\n     * @param {Atmosphere} atmosphere\n     * @param {Source} source\n     * @param {number} massReleased\n     * @param {number} halfLife - seconds\n     * @param {array} [center] - Manually set the center, defaults to (0,0,0)\n     */\n    constructor(atmosphere, source, massReleased, halfLife, center) {\n        super(atmosphere, source, massReleased, center);\n\n        /**\n         *\n         * @type {number}\n         * @private\n         */\n        this._halfLife = halfLife; // Usually the half-life of the pollutant\n\n        /**\n         *\n         * @type {number}\n         * @private\n         */\n        this._decayCoeff = 0.693 / halfLife;\n    }\n\n    /**\n     *\n     * @returns {number}\n     */\n    getHalfLife() {\n        return this._halfLife;\n    }\n\n    /**\n     * Read URAaTM pg 281 - 285\n     * @see https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false\n     * @param {number} x - downwind distance (m)\n     * @param {number} windSpeed - at source height (m/s)\n     * @returns {number} Decay term\n     */\n    getDecayTerm(x, windSpeed) {\n        if (this._decayCoeff == 0) {\n            return 1;\n        } else {\n            return Math.exp(- this._decayCoeff * (x / windSpeed));\n        }\n    }\n    \n    /**\n     * Takes into account the decay term, as seen in URAaTM pg 281\n     * @see https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false\n     * @override\n     * @param {number} x - downwind (m)\n     * @param {number} y - crosswind (m)\n     * @param {number} z - height (m)\n     */\n    getConcentration(x, y, z) {\n        let unDecayed = super.getConcentration(x, y, z);\n        let decayTerm = this.getDecayTerm(x, this.atmosphere.windSpeed);\n        return unDecayed * decayTerm;\n    }\n}\n\nexport default DynamicGaussianDecayPuff;"
  },
  {
    "__docId__": 81,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "DynamicGaussianDecayPuff",
    "memberof": "src/Dispersion/DynamicGaussianDecayPuff.js",
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/DynamicGaussianDecayPuff.js",
    "importStyle": "DynamicGaussianDecayPuff",
    "description": "Adds half life decay to the Dynamic Puff",
    "lineNumber": 12,
    "interface": false,
    "extends": [
      "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff"
    ]
  },
  {
    "__docId__": 82,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff",
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff#constructor",
    "access": null,
    "description": "",
    "lineNumber": 22,
    "params": [
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": false,
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Source"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "massReleased",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "halfLife",
        "description": "seconds"
      },
      {
        "nullable": null,
        "types": [
          "array"
        ],
        "spread": false,
        "optional": true,
        "name": "center",
        "description": "Manually set the center, defaults to (0,0,0)"
      }
    ],
    "generator": false
  },
  {
    "__docId__": 83,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_halfLife",
    "memberof": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff",
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff#_halfLife",
    "access": "private",
    "description": "",
    "lineNumber": 30,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 84,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_decayCoeff",
    "memberof": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff",
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff#_decayCoeff",
    "access": "private",
    "description": "",
    "lineNumber": 37,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 85,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getHalfLife",
    "memberof": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff",
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff#getHalfLife",
    "access": null,
    "description": "",
    "lineNumber": 44,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 86,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getDecayTerm",
    "memberof": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff",
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff#getDecayTerm",
    "access": null,
    "description": "Read URAaTM pg 281 - 285",
    "see": [
      "https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false"
    ],
    "lineNumber": 55,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} Decay term"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "downwind distance (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "windSpeed",
        "description": "at source height (m/s)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "Decay term"
    },
    "generator": false
  },
  {
    "__docId__": 87,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getConcentration",
    "memberof": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff",
    "longname": "src/Dispersion/DynamicGaussianDecayPuff.js~DynamicGaussianDecayPuff#getConcentration",
    "access": null,
    "description": "Takes into account the decay term, as seen in URAaTM pg 281",
    "see": [
      "https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false"
    ],
    "lineNumber": 71,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "downwind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "crosswind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "height (m)"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 88,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/DynamicGaussianPuff.js",
    "memberof": null,
    "longname": "src/Dispersion/DynamicGaussianPuff.js",
    "access": null,
    "description": null,
    "lineNumber": 7,
    "content": "/**\n * Created by austin on 6/16/16.\n * @file DynamicGaussianPuff.js\n * \n */\n\nimport Vector from './Vector';\nimport GaussianPuff from './GaussianPuff';\n\n/**\n * Allows for atmospheric changes between puff movements\n */\nclass DynamicGaussianPuff extends GaussianPuff {\n    /**\n     *\n     * @param {Atmosphere} atmosphere\n     * @param {Source} source\n     * @param {number} massReleased\n     * @param {array} [center] - Manually set the center, defaults to (0,0,0)\n     */\n    constructor(atmosphere, source, massReleased, center) {\n        super(atmosphere, source, massReleased);\n\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._currentTime = 0;\n\n        /**\n         * Really doesn't need to be a vector. Easy enough to use a vector as a cartesian coord though.\n         * @type {Vector}\n         * @private\n         */\n        this._currentCenter = center ? Vector.fromArray(center) : new Vector(0, 0, this.getEffectiveSourceHeight());\n\n        /**\n         * @type {Vector}\n         * @private\n         */\n        this._startCenter = this._currentCenter.clone();\n\n        /**\n         *\n         * @type {Array}\n         * @private\n         */\n        this._path = [];\n\n        /**\n         * dY\n         * @type {number}\n         * @private\n         */\n        this._virtHoriz = 0;\n\n        /**\n         * dZ\n         * @type {number}\n         * @private\n         */\n        this._vertDist = 0;\n\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._stdY = 0;\n\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._stdZ = 0;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    get time() {\n        return this._currentTime;\n    }\n\n    /**\n     *\n     * @param center\n     * @returns {DynamicGaussianPuff}\n     * @private\n     */\n    _setCenter(center) {\n        this._currentCenter = center;\n        return this;\n    }\n\n    /**\n     *\n     * @returns {Vector}\n     */\n    get center() {\n       return this._currentCenter;\n    }\n    \n    get path() {\n        return this._path;\n    }\n\n    /**\n     *\n     * @returns {Vector}\n     */\n    get start() {\n        return this._startCenter;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    get distanceFromStart() {\n        return this.center.subtract(this.start).abs();\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    get distanceTraveled() {\n        let dist = 0;\n        let start = this.start;\n        for (var point of this._path) {\n            dist += point.subtract(start).abs();\n            start = point;\n        }\n        return dist;\n    }\n\n    /**\n     * A helper function for the StdZ calculation\n     * @override\n     * @protected\n     * @returns {STD_Y_COEFF}\n     */\n    _getStdYCoeffs() {\n        let x = this.distanceTraveled;\n        return super._getStdYCoeffs(x);\n    }\n    \n    /**\n     * Brookhaven sigma\n     * The crosswind distance standard deviation for a distance x downwind.\n     * To be used in a Gaussian distribution\n     * @override\n     * @returns {number} crosswind standard deviation at x meters downwind (m)\n     */\n    get stdY() {\n        return this._stdY;\n    }\n\n    /**\n     * Brookhaven sigma\n     * The vertical distance standard deviation for a distance x downwind.\n     * To be used in a Gaussian distribution\n     * @override\n     * @returns {number}\n     */\n    get stdZ() {\n        return this._stdZ;\n    }\n\n    /**\n     * \n     * @returns {number|*}\n     */\n    get virtHoriz() {\n        return this._virtHoriz;\n    }\n\n    /**\n     * \n     * @returns {number|*}\n     */\n    get vertDist() {\n        return this._vertDist;\n    }\n    \n    /**\n     * Moves the puff along by t seconds\n     * @see http://www.sciencedirect.com/science/article/pii/S0093641303000247 Section 3.2, equation 14\n     * @param {number} deltaT - seconds to increment by\n     * @returns {DynamicGaussianPuff}\n     */\n    step(deltaT) {\n        // update vertHoriz and vertDist\n        let x = this.distanceTraveled;\n        let stdYCoeffs = super._getStdYCoeffs(x);\n        let stdZCoeffs = super._getStdZCoeffs(x);\n\n        // Update the Virtual horizontal and the vertical distance @see equation 15\n        this._virtHoriz = Math.pow((this.stdY / stdYCoeffs.c), (1 / stdYCoeffs.d));\n        this._vertDist = Math.pow((this.stdZ / stdZCoeffs.a), (1 / stdZCoeffs.b));\n\n        // Find the change in x and y directions\n        // Todo: use Navier-Stokes equation solver to account for momentum @see equation 16\n        let deltaDVec = this.atmosphere.windSpeedVec.multiply(deltaT);    // The change in distance from wind\n        let deltaD = deltaDVec.abs();\n\n        // Update the standard deviations @see equation 17\n        this._stdY = stdYCoeffs.c * Math.pow(this.virtHoriz + deltaD, stdYCoeffs.d);\n        this._stdZ = stdZCoeffs.a * Math.pow(this.vertDist + deltaD, stdZCoeffs.b);\n\n        // Update position/time/path\n        this._currentTime += deltaT;\n        this._setCenter(this.center.add(deltaDVec));\n        this._path.push(this.center.clone());\n        \n        return this;\n    }\n\n    /**\n     * @see http://www.sciencedirect.com/science/article/pii/S0093641303000247 Section 3.2, equation 14\n     * @override\n     * @param {number} x - downwind (m)\n     * @param {number} y - crosswind (m)\n     * @param {number} z - height (m)\n     * @returns {number}\n     */\n    getConcentration(x, y, z) {\n        let stdY = this.stdY;\n        let stdZ = this.stdZ;\n        let H = this.getEffectiveSourceHeight();\n\n        let a = this.massReleased / (Math.pow(2 * Math.PI, 1.5) * Math.pow(stdY, 2) * stdZ);\n        let b = Math.exp(-0.5 * Math.pow(x / stdY, 2));\n        let c = Math.exp(-0.5 * Math.pow(y / stdY, 2));\n        let d = Math.exp(-0.5 * Math.pow((z - H) / stdZ, 2));\n\n        return a * b * c * d;\n    }\n\n}\n\nexport default DynamicGaussianPuff;"
  },
  {
    "__docId__": 89,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "DynamicGaussianPuff",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/DynamicGaussianPuff.js",
    "importStyle": "DynamicGaussianPuff",
    "description": "Allows for atmospheric changes between puff movements",
    "lineNumber": 13,
    "interface": false,
    "extends": [
      "src/Dispersion/GaussianPuff.js~GaussianPuff"
    ]
  },
  {
    "__docId__": 90,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#constructor",
    "access": null,
    "description": "",
    "lineNumber": 21,
    "params": [
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": false,
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Source"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "massReleased",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "array"
        ],
        "spread": false,
        "optional": true,
        "name": "center",
        "description": "Manually set the center, defaults to (0,0,0)"
      }
    ],
    "generator": false
  },
  {
    "__docId__": 91,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_currentTime",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_currentTime",
    "access": "private",
    "description": "",
    "lineNumber": 29,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 92,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_currentCenter",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_currentCenter",
    "access": "private",
    "description": "Really doesn't need to be a vector. Easy enough to use a vector as a cartesian coord though.",
    "lineNumber": 36,
    "type": {
      "nullable": null,
      "types": [
        "Vector"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 93,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_startCenter",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_startCenter",
    "access": "private",
    "description": "",
    "lineNumber": 42,
    "type": {
      "nullable": null,
      "types": [
        "Vector"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 94,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_path",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_path",
    "access": "private",
    "description": "",
    "lineNumber": 49,
    "type": {
      "nullable": null,
      "types": [
        "Array"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 95,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_virtHoriz",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_virtHoriz",
    "access": "private",
    "description": "dY",
    "lineNumber": 56,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 96,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_vertDist",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_vertDist",
    "access": "private",
    "description": "dZ",
    "lineNumber": 63,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 97,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_stdY",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_stdY",
    "access": "private",
    "description": "",
    "lineNumber": 70,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 98,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_stdZ",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_stdZ",
    "access": "private",
    "description": "",
    "lineNumber": 77,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 99,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "time",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#time",
    "access": null,
    "description": "",
    "lineNumber": 84,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 100,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "_setCenter",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_setCenter",
    "access": "private",
    "description": "",
    "lineNumber": 94,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{DynamicGaussianPuff}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "center",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DynamicGaussianPuff"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 101,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_currentCenter",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_currentCenter",
    "access": null,
    "description": null,
    "lineNumber": 95,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 102,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "center",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#center",
    "access": null,
    "description": "",
    "lineNumber": 103,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Vector}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Vector"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 103,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "path",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#path",
    "access": null,
    "description": null,
    "lineNumber": 107,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 104,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "start",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#start",
    "access": null,
    "description": "",
    "lineNumber": 115,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Vector}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Vector"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 105,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "distanceFromStart",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#distanceFromStart",
    "access": null,
    "description": "",
    "lineNumber": 123,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 106,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "distanceTraveled",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#distanceTraveled",
    "access": null,
    "description": "",
    "lineNumber": 131,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 107,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "_getStdYCoeffs",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_getStdYCoeffs",
    "access": "protected",
    "description": "A helper function for the StdZ calculation",
    "lineNumber": 147,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{STD_Y_COEFF}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "STD_Y_COEFF"
      ],
      "spread": false,
      "description": ""
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 108,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "stdY",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#stdY",
    "access": null,
    "description": "Brookhaven sigma\nThe crosswind distance standard deviation for a distance x downwind.\nTo be used in a Gaussian distribution",
    "lineNumber": 159,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} crosswind standard deviation at x meters downwind (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "crosswind standard deviation at x meters downwind (m)"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 109,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "stdZ",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#stdZ",
    "access": null,
    "description": "Brookhaven sigma\nThe vertical distance standard deviation for a distance x downwind.\nTo be used in a Gaussian distribution",
    "lineNumber": 170,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 110,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "virtHoriz",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#virtHoriz",
    "access": null,
    "description": "",
    "lineNumber": 178,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number|*}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number",
        "*"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 111,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "vertDist",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#vertDist",
    "access": null,
    "description": "",
    "lineNumber": 186,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number|*}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number",
        "*"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 112,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "step",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#step",
    "access": null,
    "description": "Moves the puff along by t seconds",
    "see": [
      "http://www.sciencedirect.com/science/article/pii/S0093641303000247 Section 3.2, equation 14"
    ],
    "lineNumber": 196,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{DynamicGaussianPuff}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "deltaT",
        "description": "seconds to increment by"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DynamicGaussianPuff"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 113,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_virtHoriz",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_virtHoriz",
    "access": null,
    "description": null,
    "lineNumber": 203,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 114,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_vertDist",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_vertDist",
    "access": null,
    "description": null,
    "lineNumber": 204,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 115,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_stdY",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_stdY",
    "access": null,
    "description": null,
    "lineNumber": 212,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 116,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_stdZ",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_stdZ",
    "access": null,
    "description": null,
    "lineNumber": 213,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 117,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_currentTime",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#_currentTime",
    "access": null,
    "description": null,
    "lineNumber": 216,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 118,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getConcentration",
    "memberof": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff",
    "longname": "src/Dispersion/DynamicGaussianPuff.js~DynamicGaussianPuff#getConcentration",
    "access": null,
    "description": "",
    "see": [
      "http://www.sciencedirect.com/science/article/pii/S0093641303000247 Section 3.2, equation 14"
    ],
    "lineNumber": 231,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "downwind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "crosswind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "height (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 119,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/GaussianDecayPlume.js",
    "memberof": null,
    "longname": "src/Dispersion/GaussianDecayPlume.js",
    "access": null,
    "description": null,
    "lineNumber": 6,
    "content": "/**\n * Created by austin on 6/6/16.\n * @file GaussianDecayPlume.js\n */\n\nimport GaussianPlume from './GaussianPlume';\n\n/*\n* Understanding Radioactive Aerosols and Their Measurement\n* https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false\n* \n* */\n\n/**\n * An extension (surprise surprise) on the Gaussian Plume to account for radioactive materials\n */\nclass GaussianDecayPlume extends GaussianPlume {\n\n    /**\n     * @override\n     * @param {Atmosphere} atmosphere\n     * @param {Source} source\n     * @param {number} halfLife - seconds\n     */\n    constructor(atmosphere, source, halfLife) {\n        super(atmosphere, source);\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._halfLife = halfLife; // Usually the half-life of the pollutant\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._decayCoeff = 0.693 / halfLife;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    getHalfLife() {\n        return this._halfLife;\n    }\n    \n    /**\n     * Read URAaTM pg 281 - 285\n     * @see https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false\n     * @param {number} x - downwind distance (m)\n     * @param {number} windSpeed - at source height (m/s)\n     * @returns {number} Decay term\n     */\n    getDecayTerm(x, windSpeed) {\n        if (this._decayCoeff == 0) {\n            return 1;\n        } else {\n            return Math.exp(- this._decayCoeff * (x / windSpeed));\n        }\n    }\n\n    /**\n     * Takes into account the decay term, as seen in URAaTM pg 281\n     * Overridden from super class\n     * @override\n     * @param {number} x\n     * @param {number} y\n     * @param {number} z\n     */\n    getConcentration(x, y, z) {\n        let unDecayed = super.getConcentration(x, y, z);\n        let decayTerm = this.getDecayTerm(x, this.atmosphere.windSpeed);\n        return unDecayed * decayTerm;\n    }\n}\n\nexport default GaussianDecayPlume;"
  },
  {
    "__docId__": 120,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "GaussianDecayPlume",
    "memberof": "src/Dispersion/GaussianDecayPlume.js",
    "longname": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/GaussianDecayPlume.js",
    "importStyle": "GaussianDecayPlume",
    "description": "An extension (surprise surprise) on the Gaussian Plume to account for radioactive materials",
    "lineNumber": 17,
    "interface": false,
    "extends": [
      "src/Dispersion/GaussianPlume.js~GaussianPlume"
    ]
  },
  {
    "__docId__": 121,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume",
    "longname": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume#constructor",
    "access": null,
    "description": "",
    "lineNumber": 25,
    "params": [
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": false,
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Source"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "halfLife",
        "description": "seconds"
      }
    ],
    "override": true,
    "generator": false
  },
  {
    "__docId__": 122,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_halfLife",
    "memberof": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume",
    "longname": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume#_halfLife",
    "access": "private",
    "description": "",
    "lineNumber": 32,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 123,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_decayCoeff",
    "memberof": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume",
    "longname": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume#_decayCoeff",
    "access": "private",
    "description": "",
    "lineNumber": 38,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 124,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getHalfLife",
    "memberof": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume",
    "longname": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume#getHalfLife",
    "access": null,
    "description": "",
    "lineNumber": 45,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 125,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getDecayTerm",
    "memberof": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume",
    "longname": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume#getDecayTerm",
    "access": null,
    "description": "Read URAaTM pg 281 - 285",
    "see": [
      "https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false"
    ],
    "lineNumber": 56,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} Decay term"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "downwind distance (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "windSpeed",
        "description": "at source height (m/s)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "Decay term"
    },
    "generator": false
  },
  {
    "__docId__": 126,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getConcentration",
    "memberof": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume",
    "longname": "src/Dispersion/GaussianDecayPlume.js~GaussianDecayPlume#getConcentration",
    "access": null,
    "description": "Takes into account the decay term, as seen in URAaTM pg 281\nOverridden from super class",
    "lineNumber": 72,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": ""
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 127,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/GaussianDecayPuff.js",
    "memberof": null,
    "longname": "src/Dispersion/GaussianDecayPuff.js",
    "access": null,
    "description": null,
    "lineNumber": 5,
    "content": "/**\n * Created by austin on 6/8/16.\n */\n\nimport GaussianPuff from './GaussianPuff';\n\n/**\n * Adds decay to the Simple Gaussian Puff\n */\nclass GaussianDecayPuff extends GaussianPuff {\n    /**\n     *\n     * @param {Atmosphere} atmosphere\n     * @param {Source} source\n     * @param {number} massReleased\n     * @param {number} halfLife - seconds\n     */\n    constructor(atmosphere, source, massReleased, halfLife) {\n        super(atmosphere, source, massReleased);\n\n        /**\n         *\n         * @type {number}\n         * @private\n         */\n        this._halfLife = halfLife; // Usually the half-life of the pollutant\n\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._decayCoeff = 0.693 / halfLife;\n    }\n\n    /**\n     *\n     * @returns {number}\n     */\n    get halfLife() {\n        return this._halfLife;\n    }\n\n    /**\n     * Read URAaTM pg 281 - 285\n     * @see https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false\n     * @param {number} x - downwind distance (m)\n     * @param {number} windSpeed - at source height (m/s)\n     * @returns {number} Decay term\n     */\n    getDecayTerm(x, windSpeed) {\n        if (this._decayCoeff == 0) {\n            return 1;\n        } else {\n            return Math.exp(- this._decayCoeff * (x / windSpeed));\n        }\n    }\n\n    /**\n     * Takes into account the decay term, as seen in URAaTM pg 281\n     * @see https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false\n     * @override\n     * @param {number} x - downwind (m)\n     * @param {number} y - crosswind (m)\n     * @param {number} z - height (m)\n     * @param {number} t - seconds from start\n     */\n    getConcentration(x, y, z, t) {\n        let unDecayed = super.getConcentration(x, y, z, t);\n        let decayTerm = this.getDecayTerm(x, this.atmosphere.windSpeed);\n        return unDecayed * decayTerm;\n    }\n}\n\nexport default GaussianDecayPuff;"
  },
  {
    "__docId__": 128,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "GaussianDecayPuff",
    "memberof": "src/Dispersion/GaussianDecayPuff.js",
    "longname": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/GaussianDecayPuff.js",
    "importStyle": "GaussianDecayPuff",
    "description": "Adds decay to the Simple Gaussian Puff",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/Dispersion/GaussianPuff.js~GaussianPuff"
    ]
  },
  {
    "__docId__": 129,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff",
    "longname": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff#constructor",
    "access": null,
    "description": "",
    "lineNumber": 18,
    "params": [
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": false,
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Source"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "massReleased",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "halfLife",
        "description": "seconds"
      }
    ],
    "generator": false
  },
  {
    "__docId__": 130,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_halfLife",
    "memberof": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff",
    "longname": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff#_halfLife",
    "access": "private",
    "description": "",
    "lineNumber": 26,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 131,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_decayCoeff",
    "memberof": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff",
    "longname": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff#_decayCoeff",
    "access": "private",
    "description": "",
    "lineNumber": 33,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 132,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "halfLife",
    "memberof": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff",
    "longname": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff#halfLife",
    "access": null,
    "description": "",
    "lineNumber": 40,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 133,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getDecayTerm",
    "memberof": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff",
    "longname": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff#getDecayTerm",
    "access": null,
    "description": "Read URAaTM pg 281 - 285",
    "see": [
      "https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false"
    ],
    "lineNumber": 51,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} Decay term"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "downwind distance (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "windSpeed",
        "description": "at source height (m/s)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "Decay term"
    },
    "generator": false
  },
  {
    "__docId__": 134,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getConcentration",
    "memberof": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff",
    "longname": "src/Dispersion/GaussianDecayPuff.js~GaussianDecayPuff#getConcentration",
    "access": null,
    "description": "Takes into account the decay term, as seen in URAaTM pg 281",
    "see": [
      "https://books.google.com/books?id=bCjRtBX0MYkC&pg=PA280&lpg=PA280&dq=gaussian+decay+plume&source=bl&ots=oJbqk8OmIe&sig=GqzwcwVfbk_XUR6RztjSeVI0J20&hl=en&sa=X&ved=0ahUKEwih4OS7zpTNAhWq5oMKHeM_DyIQ6AEINjAF#v=onepage&q=gaussian%20decay%20plume&f=false"
    ],
    "lineNumber": 68,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "downwind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "crosswind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "height (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "t",
        "description": "seconds from start"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 135,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/GaussianPlume.js",
    "memberof": null,
    "longname": "src/Dispersion/GaussianPlume.js",
    "access": null,
    "description": null,
    "lineNumber": 8,
    "content": "/**\n * Created by austin on 6/6/16.\n * @file GaussianPlume.js\n * Assumes:\n * Single point source\n */\n\n\"use strict\";\n\nimport Source, {\n    SourceType\n} from './Source';\nimport Atmosphere from './Atmosphere';\n\n/**\n * @typedef {Object} Stat\n * @property {number} x - meters downwind\n * @property {number} y - meters crosswind\n * @property {number} z - meters vertical\n * @property {number} stdY\n * @property {number} stdZ\n * @property {number} concentration - micrograms / cubic meter\n */\n\n/**\n * @typedef {Object} Coord\n * @property {number} x - meters downwind \n * @property {number} y - meters crosswind \n * @property {number} z - meters vertical \n */\n\n/**\n * @typedef {Object} STD_Y_COEFF\n * @property {number} c\n * @property {number} d\n */\n/**\n * 0 - 6 for atm stab grade\n * [x < 10000, x >= 10000]\n *  @type {STD_Y_COEFF}\n */\nconst STD_Y_COEFFS = [\n    [{c: .495, d: .873}, {c: .606, d: .851}],\n    [{c: .310, d: .897}, {c: .523, d: .840}],\n    [{c: .197, d: .908}, {c: .285, d: .867}],\n    [{c: .122, d: .916}, {c: .193, d: .865}],\n    [{c: .122, d: .916}, {c: .193, d: .865}],\n    [{c: .0934, d: .912}, {c: .141, d: .868}],\n    [{c: .0625, d: .911}, {c: .0800, d: .884}]\n];\n\n/**\n * @typedef {Object} STD_Z_COEFF\n * @property {number} a\n * @property {number} b\n */\n/** \n * [x < 500, 500 <= x < 5000, 5000 <= x]\n * @type {STD_Z_COEFF}\n */\nconst STD_Z_COEFFS = [\n    [{a: .0383, b: 1.281}, {a: .0002539, b: 2.089}, {a: .0002539, b: 2.089}],\n    [{a: .1393, b: .9467}, {a: .04936, b: 1.114}, {a: .04936, b: 1.114}],\n    [{a: .1120, b: .9100}, {a: .1014, b: .926}, {a: .1154, b: .9106}],\n    [{a: .0856, b: .8650}, {a: .2591, b: .6869}, {a: .7368, b: .5642}],\n    [{a: .0818, b: .8155}, {a: .2527, b: .6341}, {a: 1.297, b: .4421}],\n    [{a: .1064, b: .7657}, {a: .2452, b: .6358}, {a: .9024, b: .4805}],\n    [{a: .05645, b: .8050}, {a: .1930, b: .6072}, {a: 1.505, b: .3662}]\n];\n\nconst G = 9.8; // gravity (m/s^2)\n\n/**\n * A Simple Gaussian Plume. For resources, please see the github repo.\n * Calculates spread for one hour with constant conditions.\n * \n * http://www.cerc.co.uk/environmental-software/assets/data/doc_techspec/CERC_ADMS5_P10_01_P12_01.pdf\n */\nclass GaussianPlume {\n\n    /**\n     * For now, each Plume contains a constant atmosphere and a single Source\n     * @param {Atmosphere} atmosphere\n     * @param {Source} source\n     */\n    constructor(atmosphere, source) {\n        this.setAtmosphere(atmosphere);\n        this.addSource(source);\n    }\n\n    /**\n     * @override\n     * @returns {string}\n     */\n    toString() {\n        return '${this.source.toString()} in ${this._atm.toString()}';\n    }\n\n    /**\n     * Adds a single source to the plume\n     * @param {Source} source\n     * @returns {GaussianPlume} For chaining purposes\n     */\n    addSource(source) {\n        this._source = source;\n        return this;\n    }\n\n    /**\n     * \n     * @returns {Source}\n     */\n    get source() {\n        return this._source;\n    }\n\n    /**\n     * @param {Atmosphere} atmosphere\n     * @returns {GaussianPlume} For chaining purposes\n     */\n    setAtmosphere(atmosphere) {\n        this._atm = atmosphere;\n        return this;\n    }\n\n    /**\n     * @returns {Atmosphere}\n     */\n    get atmosphere() {\n        return this._atm;\n    }\n\n    /**\n     * A helper function for the StdZ calculation\n     * @protected\n     * @param {number} x - distance downwind (m)\n     * @returns {STD_Y_COEFF}\n     */\n    _getStdYCoeffs(x) {\n        let index;\n        let coeffs = STD_Y_COEFFS[this._atm.grade];\n        if (x < 10000) {\n            index = 0;\n        } else {\n            index = 1;\n        }\n        return coeffs[index];\n    }\n\n    /**\n     * Brookhaven sigma\n     * The crosswind distance standard deviation for a distance x downwind.\n     * To be used in a Gaussian distribution\n     * @param {number} x - distance downwind (m)\n     * @returns {number} crosswind standard deviation at x meters downwind (m)\n     */\n    getStdY(x) {\n        let coeffs = this._getStdYCoeffs(x);\n        return coeffs.c * Math.pow(x, coeffs.d);\n    }\n\n    /**\n     * A helper function for the StdZ calculation\n     * @protected\n     * @param {number} x - distance downwind (m)\n     * @returns {STD_Z_COEFF}\n     */\n    _getStdZCoeffs(x) {\n        let index;\n        let coeffs = STD_Z_COEFFS[this._atm.grade];\n        if (x < 500) {\n            index = 0;\n        } else if (x < 5000) {\n            index = 1;\n        } else {\n            // 5000 < x\n            index = 2;\n        }\n        return coeffs[index];\n    }\n\n    /**\n     * Brookhaven sigma\n     * The vertical distance standard deviation for a distance x downwind.\n     * To be used in a Gaussian distribution\n     * @param {number} x - distance downwind (m)\n     * @returns {number}\n     */\n    getStdZ(x) {\n        let coeffs = this._getStdZCoeffs(x);\n        return coeffs.a * Math.pow(x, coeffs.b);\n    }\n\n    /**\n     * \n     * @returns {number} m/s\n     */\n    get windSpeedAtSourceHeight() {\n        return this._atm.getWindSpeedAt(this.getEffectiveSourceHeight());\n    }\n\n    /**\n     * Manually set the Effective Source Height\n     * @param {number} height \n     * @returns {GaussianPlume} For chaining purposes\n     */\n    setEffectiveSourceHeight(height) {\n        this._effSrcHeight = height;\n        return this;\n    }\n    /**\n     *  Takes into account the wind and other factors into account.\n     *  Should potentially move this to the Source class\n     *  @returns {number} the effective source height\n     *  */\n    getEffectiveSourceHeight() {\n        if (this._effSrcHeight) {\n            return this._effSrcHeight;\n        }\n        let deltaH = this.getMaxRise(0);\n        this._effSrcHeight = this.source.getHeight() + deltaH;\n        return this._effSrcHeight;\n    }\n\n    /**\n     * \n     * @param x\n     * @returns {number}\n     */\n    getMeanHeight(x) {\n        // Should use integrals but need to research how to load a nicer math library in hur\n\n        // For large x this should be ok, between 0 (ground) and maxPlumeRise\n        return this.getMaxRise(x) / 2;\n    }\n\n    /**\n     * The max rise of the plume at x meters downwind\n     * @param {number} x - distance (m) downwind\n     * @returns {number} vertical standard deviation at x meters downwind (m)\n     */\n    getMaxRise(x) {\n        // @see page 31\n        // Grades 1 - 5 are assumed unstable/neutral, 6 - 7 are assumed stable\n        // Both the momentum dominated and buoyancy dominated methods should be calculated, then use the max\n        let bDeltaH, mDeltaH; // Max plume rise buoyancy, momentum dominated resp.\n        const srcRad = this.source.getRadius();\n        const srcTemp = this.source.getTemperature();\n        const srcHeight = this.source.getHeight();\n        const srcExitVel = this.source.getExitVelocity();\n        const ambTemp = this._atm.temperature;\n        const F = G * srcExitVel * Math.pow(srcRad, 2) * (srcTemp - ambTemp) / srcTemp;\n        const U = this._atm.getWindSpeedAt(srcHeight); // wind speed at stack height\n\n        if (this._atm.grade <= 5) {\n            // unstable/neutral\n            // Gets super funky, ugh science\n\n            // Distance to Maximum Plume Rise\n            let xStar = F < 55 ? 14 * Math.pow(F, 0.625) : 34 * Math.pow(F, .4);\n            // Will use 0 if calculating from the source. Need to read more about this.\n            if (x == 0 || x > 3.5 * xStar) {\n                x = xStar;\n            }\n            bDeltaH = 1.6 * Math.pow(F, .333) * Math.pow(3.5 * x, .667) * Math.pow(U, -1);\n            mDeltaH = (3 * srcExitVel * (2 * srcRad)) / U;\n        } else {\n            // stable\n            const s = this._atm.letterGrade === 'E' ? 0.018: 0.025; //  g/ambientTemp\n            bDeltaH = 2.6 * Math.pow(F / (U * s), .333);\n            mDeltaH = 1.5 * Math.pow(srcExitVel * srcRad, .667) * Math.pow(U, -0.333) * Math.pow(s, -0.166);\n        }\n\n        // console.log(\"bDeltaH: \" + bDeltaH);\n        // console.log(\"mDeltaH: \" + mDeltaH);\n        // Return the max\n        if (bDeltaH > mDeltaH) {\n            // console.log(\"Buoyancy dominated.\");\n            return bDeltaH;\n        }\n        // console.log(\"Momentum dominated.\");\n        return mDeltaH;\n    }\n\n    /**\n     * Calculates the maximum concentration dispersed\n     * @returns {number} micrograms / cubic meters\n     */\n    getMaxConcentration() {\n        let x = this.getMaxConcentrationX();\n        let stdY = this.getStdY(x);\n        let stdZ = this.getStdZ(x);\n        let H = this.getEffectiveSourceHeight();\n\n        let a = (this.source.getEmissionRate() * 1000000) / (Math.PI * stdY * stdZ * this.windSpeedAtSourceHeight);\n        let b = Math.exp((-0.5) * Math.pow(H / stdZ, 2));\n\n        return a * b;\n    }\n\n    /**\n     * Calculates the distance downwind of the maximum concentration\n     * @returns {number} micrograms / cubic meter\n     */\n    getMaxConcentrationX() {\n        // If unknown, set x to 5000 meters\n        let stdYCoeffs = this._getStdYCoeffs(5000);  // c , d\n        let stdZCoeffs = this._getStdZCoeffs(5000);  // a , b\n        let H = this.getEffectiveSourceHeight();\n\n        let pt1 = (stdZCoeffs.b * Math.pow(H, 2)) / (Math.pow(stdZCoeffs.a, 2) * (stdYCoeffs.d + stdZCoeffs.b));\n        return Math.pow(pt1, (1 / (2 * stdZCoeffs.b)));\n    }\n\n    /**\n     * Calculates the concentration at a given x,y,z coordinate.\n     * Must be downwind\n     * @param {number} x - Meters downwind of source, greater than 0\n     * @param {number} y - Meters crosswind of source\n     * @param {number} z - Meters vertical of ground\n     * @returns {number} micrograms / cubic meter\n     *\n     * @example\n     * getConcentration(200, 300, 10)\n     * Calculates at 200 meters downwind, 300 east, 10 high\n     */\n    getConcentration(x, y, z) {\n        // First part of Gaussian equation 1 found on page 2\n        let stdY = this.getStdY(x);\n        let stdZ = this.getStdZ(x);\n        // Effective stack height\n        let H = this.getEffectiveSourceHeight();\n        let U = this.windSpeedAtSourceHeight;\n\n        let a = this.source.getEmissionRate() / (2 * Math.PI * stdY * stdZ * U);\n        let b = Math.exp(-1 * Math.pow(y, 2) / (2 * Math.pow(stdY, 2)));\n        let c = Math.exp(-1 * Math.pow(z - H, 2) / (2 * Math.pow(stdZ, 2)));\n        let d = Math.exp(-1 * Math.pow(z + H, 2) / (2 * Math.pow(stdZ, 2)));\n        \n        // Put it all together! get\n        return a * b * (c + d);\n    }\n\n    /**\n     * Calculates the stdY, stdZ, and concentrations for a list of x coordinates\n     *  directly downwind of the source\n     * Useful in creating graphs / processing large amounts of data at once\n     * @param {number[]} xs - a list of x's\n     * @returns {Stat[]} a list of stats\n     */\n    getStatsForXs(xs) {\n        let stats = [];\n        for (let i = 0; i < xs.length; i++) {\n            stats.push({\n                x: xs[i],\n                y: 0,\n                z: 0,\n                stdY: this.getStdY(xs[i]),\n                stdZ: this.getStdZ(xs[i]),\n                concentration: this.getConcentration(xs[i], 0, 0)\n            })\n        }\n        return stats;\n    }\n\n    /**\n     * Same as getStatsForXs, but for 3d coordinates\n     * @param {Coord[]} coords - a list of objects with x,y,z params\n     * @returns {Stat[]}\n     */\n    getStatsForCoords(coords) {\n        let stats = [];\n        for (let i = 0; i < coords.length; i++) {\n            stats.push({\n                x: coords[i].x,\n                y: coords[i].y,\n                z: coords[i].z,\n                stdY: this.getStdY(xs[i]),\n                stdZ: this.getStdZ(xs[i]),\n                concentration: this.getConcentration(coords[i].x, coords[i].y, coords[i].z)\n            })\n        }\n        return stats;\n    }\n}\n\nexport { SourceType }\nexport { Source };\nexport { Atmosphere };\nexport default GaussianPlume;"
  },
  {
    "__docId__": 136,
    "kind": "typedef",
    "static": true,
    "variation": null,
    "name": "Stat",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~Stat",
    "access": null,
    "description": "",
    "properties": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "meters downwind"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "meters crosswind"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "meters vertical"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "stdY",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "stdZ",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "concentration",
        "description": "micrograms / cubic meter"
      }
    ],
    "type": {
      "types": [
        "Object"
      ],
      "optional": false,
      "name": "Stat"
    }
  },
  {
    "__docId__": 137,
    "kind": "typedef",
    "static": true,
    "variation": null,
    "name": "Coord",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~Coord",
    "access": null,
    "description": "",
    "properties": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "meters downwind"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "meters crosswind"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "meters vertical"
      }
    ],
    "type": {
      "types": [
        "Object"
      ],
      "optional": false,
      "name": "Coord"
    }
  },
  {
    "__docId__": 138,
    "kind": "typedef",
    "static": true,
    "variation": null,
    "name": "STD_Y_COEFF",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~STD_Y_COEFF",
    "access": null,
    "description": "",
    "properties": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "c",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "d",
        "description": ""
      }
    ],
    "type": {
      "types": [
        "Object"
      ],
      "optional": false,
      "name": "STD_Y_COEFF"
    }
  },
  {
    "__docId__": 139,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "STD_Y_COEFFS",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~STD_Y_COEFFS",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/GaussianPlume.js",
    "importStyle": null,
    "description": "0 - 6 for atm stab grade\n[x < 10000, x >= 10000]",
    "lineNumber": 42,
    "type": {
      "nullable": null,
      "types": [
        "STD_Y_COEFF"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 140,
    "kind": "typedef",
    "static": true,
    "variation": null,
    "name": "STD_Z_COEFF",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~STD_Z_COEFF",
    "access": null,
    "description": "",
    "properties": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "a",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "b",
        "description": ""
      }
    ],
    "type": {
      "types": [
        "Object"
      ],
      "optional": false,
      "name": "STD_Z_COEFF"
    }
  },
  {
    "__docId__": 141,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "STD_Z_COEFFS",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~STD_Z_COEFFS",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/GaussianPlume.js",
    "importStyle": null,
    "description": "[x < 500, 500 <= x < 5000, 5000 <= x]",
    "lineNumber": 61,
    "type": {
      "nullable": null,
      "types": [
        "STD_Z_COEFF"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 142,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "G",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~G",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/GaussianPlume.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 71,
    "undocument": true,
    "type": {
      "types": [
        "number"
      ]
    }
  },
  {
    "__docId__": 143,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "GaussianPlume",
    "memberof": "src/Dispersion/GaussianPlume.js",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/GaussianPlume.js",
    "importStyle": "GaussianPlume",
    "description": "A Simple Gaussian Plume. For resources, please see the github repo.\nCalculates spread for one hour with constant conditions.\n\nhttp://www.cerc.co.uk/environmental-software/assets/data/doc_techspec/CERC_ADMS5_P10_01_P12_01.pdf",
    "lineNumber": 79,
    "interface": false
  },
  {
    "__docId__": 144,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#constructor",
    "access": null,
    "description": "For now, each Plume contains a constant atmosphere and a single Source",
    "lineNumber": 86,
    "params": [
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": false,
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Source"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": ""
      }
    ],
    "generator": false
  },
  {
    "__docId__": 145,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "toString",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#toString",
    "access": null,
    "description": "",
    "lineNumber": 95,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{string}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 146,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "addSource",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#addSource",
    "access": null,
    "description": "Adds a single source to the plume",
    "lineNumber": 104,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{GaussianPlume} For chaining purposes"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "Source"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "GaussianPlume"
      ],
      "spread": false,
      "description": "For chaining purposes"
    },
    "generator": false
  },
  {
    "__docId__": 147,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_source",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#_source",
    "access": null,
    "description": null,
    "lineNumber": 105,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 148,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "source",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#source",
    "access": null,
    "description": "",
    "lineNumber": 113,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Source}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Source"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 149,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setAtmosphere",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#setAtmosphere",
    "access": null,
    "description": "",
    "lineNumber": 121,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{GaussianPlume} For chaining purposes"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": false,
        "name": "atmosphere",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "GaussianPlume"
      ],
      "spread": false,
      "description": "For chaining purposes"
    },
    "generator": false
  },
  {
    "__docId__": 150,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_atm",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#_atm",
    "access": null,
    "description": null,
    "lineNumber": 122,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 151,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "atmosphere",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#atmosphere",
    "access": null,
    "description": "",
    "lineNumber": 129,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Atmosphere}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Atmosphere"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 152,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "_getStdYCoeffs",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#_getStdYCoeffs",
    "access": "protected",
    "description": "A helper function for the StdZ calculation",
    "lineNumber": 139,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{STD_Y_COEFF}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "distance downwind (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "STD_Y_COEFF"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 153,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getStdY",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getStdY",
    "access": null,
    "description": "Brookhaven sigma\nThe crosswind distance standard deviation for a distance x downwind.\nTo be used in a Gaussian distribution",
    "lineNumber": 157,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} crosswind standard deviation at x meters downwind (m)"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "distance downwind (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "crosswind standard deviation at x meters downwind (m)"
    },
    "generator": false
  },
  {
    "__docId__": 154,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "_getStdZCoeffs",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#_getStdZCoeffs",
    "access": "protected",
    "description": "A helper function for the StdZ calculation",
    "lineNumber": 168,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{STD_Z_COEFF}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "distance downwind (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "STD_Z_COEFF"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 155,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getStdZ",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getStdZ",
    "access": null,
    "description": "Brookhaven sigma\nThe vertical distance standard deviation for a distance x downwind.\nTo be used in a Gaussian distribution",
    "lineNumber": 189,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "distance downwind (m)"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 156,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "windSpeedAtSourceHeight",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#windSpeedAtSourceHeight",
    "access": null,
    "description": "",
    "lineNumber": 198,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} m/s"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "m/s"
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 157,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "setEffectiveSourceHeight",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#setEffectiveSourceHeight",
    "access": null,
    "description": "Manually set the Effective Source Height",
    "lineNumber": 207,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{GaussianPlume} For chaining purposes"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "height",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "GaussianPlume"
      ],
      "spread": false,
      "description": "For chaining purposes"
    },
    "generator": false
  },
  {
    "__docId__": 158,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_effSrcHeight",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#_effSrcHeight",
    "access": null,
    "description": null,
    "lineNumber": 208,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 159,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getEffectiveSourceHeight",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getEffectiveSourceHeight",
    "access": null,
    "description": " Takes into account the wind and other factors into account.\n Should potentially move this to the Source class",
    "lineNumber": 216,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} the effective source height"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "the effective source height"
    },
    "generator": false
  },
  {
    "__docId__": 160,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_effSrcHeight",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#_effSrcHeight",
    "access": null,
    "description": null,
    "lineNumber": 221,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 161,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getMeanHeight",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getMeanHeight",
    "access": null,
    "description": "",
    "lineNumber": 230,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 162,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getMaxRise",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getMaxRise",
    "access": null,
    "description": "The max rise of the plume at x meters downwind",
    "lineNumber": 242,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} vertical standard deviation at x meters downwind (m)"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "distance (m) downwind"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "vertical standard deviation at x meters downwind (m)"
    },
    "generator": false
  },
  {
    "__docId__": 163,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getMaxConcentration",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getMaxConcentration",
    "access": null,
    "description": "Calculates the maximum concentration dispersed",
    "lineNumber": 289,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} micrograms / cubic meters"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "micrograms / cubic meters"
    },
    "generator": false
  },
  {
    "__docId__": 164,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getMaxConcentrationX",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getMaxConcentrationX",
    "access": null,
    "description": "Calculates the distance downwind of the maximum concentration",
    "lineNumber": 305,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} micrograms / cubic meter"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "micrograms / cubic meter"
    },
    "generator": false
  },
  {
    "__docId__": 165,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getConcentration",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getConcentration",
    "access": null,
    "description": "Calculates the concentration at a given x,y,z coordinate.\nMust be downwind",
    "examples": [
      "getConcentration(200, 300, 10)\nCalculates at 200 meters downwind, 300 east, 10 high"
    ],
    "lineNumber": 327,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} micrograms / cubic meter"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "Meters downwind of source, greater than 0"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "Meters crosswind of source"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "Meters vertical of ground"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "micrograms / cubic meter"
    },
    "generator": false
  },
  {
    "__docId__": 166,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getStatsForXs",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getStatsForXs",
    "access": null,
    "description": "Calculates the stdY, stdZ, and concentrations for a list of x coordinates\n directly downwind of the source\nUseful in creating graphs / processing large amounts of data at once",
    "lineNumber": 351,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Stat[]} a list of stats"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number[]"
        ],
        "spread": false,
        "optional": false,
        "name": "xs",
        "description": "a list of x's"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Stat[]"
      ],
      "spread": false,
      "description": "a list of stats"
    },
    "generator": false
  },
  {
    "__docId__": 167,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getStatsForCoords",
    "memberof": "src/Dispersion/GaussianPlume.js~GaussianPlume",
    "longname": "src/Dispersion/GaussianPlume.js~GaussianPlume#getStatsForCoords",
    "access": null,
    "description": "Same as getStatsForXs, but for 3d coordinates",
    "lineNumber": 371,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{Stat[]}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "Coord[]"
        ],
        "spread": false,
        "optional": false,
        "name": "coords",
        "description": "a list of objects with x,y,z params"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Stat[]"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 168,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/GaussianPuff.js",
    "memberof": null,
    "longname": "src/Dispersion/GaussianPuff.js",
    "access": null,
    "description": null,
    "lineNumber": 5,
    "content": "/**\n * Created by austin on 6/8/16.\n */\n    \nimport GaussianPlume from './GaussianPlume';\nimport {integrate} from './utils';\n\n\n//const GAS_CONSTANT = 8.3144598;\n\n/**\n * Models a discrete release for constant atmospheric\n * http://www.cerc.co.uk/environmental-software/assets/data/doc_techspec/CERC_ADMS5_P10_01_P12_01.pdf pg 17\n * http://www.sciencedirect.com/science/article/pii/S0093641303000247\n */\nclass GaussianPuff extends GaussianPlume {\n\n    /**\n     *\n     * @param {Atmosphere} atmosphere\n     * @param {Source} source\n     * @param {number} massReleased\n     */\n    constructor(atmosphere, source, massReleased) {\n        super(atmosphere, source);\n        /**\n         * @type {number}\n         * @private\n         */\n        this._massReleased = massReleased;\n    }\n\n    /**\n     *\n     * @returns {number}\n     */\n    get massReleased() {\n        return this._massReleased;\n    }\n\n\n/*    /!**\n     * Could potentially move this to the General Gaussian Plume\n     * Not necessarily specific to the Puff\n     * @see https://en.wikipedia.org/wiki/Root-mean-square_speed\n     * @returns {number} m/s\n     *!/\n    getRms() {\n        return Math.sqrt(\n            (3 * this.getAtmosphere().getTemperature() * GAS_CONSTANT) / this.getMolarMass()\n        );\n    }*/\n\n    /**\n     * The center at x meters downstream after t seconds\n     * @param {number} t - seconds after release\n     * @returns {number} - meters downwind\n     */\n    getCenterX(t) {\n        let windAtSource = this.windSpeedAtSourceHeight;\n        return windAtSource * t;\n        /*return integrate(0, t, () => {\n            return windAtSource;\n        });*/\n    }\n\n    /**\n     * @see http://www.sciencedirect.com/science/article/pii/S0093641303000247 Section 3.2, equation 14\n     * @override\n     * @param {number} x - downwind (m)\n     * @param {number} y - crosswind (m)\n     * @param {number} z - height (m)\n     * @param {number} t - seconds from start\n     * @returns {number}\n     */\n    getConcentration(x, y, z, t) {\n        let deltaD = this.getCenterX(t);\n        let stdY = this.getStdY(deltaD);\n        let stdZ = this.getStdZ(deltaD);\n        let H = this.getEffectiveSourceHeight();\n\n        let a = this.massReleased / (Math.pow(2 * Math.PI, 1.5) * Math.pow(stdY, 2) * stdZ);\n        let b = Math.exp(-0.5 * Math.pow(x / stdY, 2));\n        let c = Math.exp(-0.5 * Math.pow(y / stdY, 2));\n        let d = Math.exp(-0.5 * Math.pow((z - H) / stdZ, 2));\n\n        return a * b * c * d;\n    }\n}\n\nexport default GaussianPuff;"
  },
  {
    "__docId__": 169,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "GaussianPuff",
    "memberof": "src/Dispersion/GaussianPuff.js",
    "longname": "src/Dispersion/GaussianPuff.js~GaussianPuff",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/GaussianPuff.js",
    "importStyle": "GaussianPuff",
    "description": "Models a discrete release for constant atmospheric\nhttp://www.cerc.co.uk/environmental-software/assets/data/doc_techspec/CERC_ADMS5_P10_01_P12_01.pdf pg 17\nhttp://www.sciencedirect.com/science/article/pii/S0093641303000247",
    "lineNumber": 16,
    "interface": false,
    "extends": [
      "src/Dispersion/GaussianPlume.js~GaussianPlume"
    ]
  },
  {
    "__docId__": 170,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/GaussianPuff.js~GaussianPuff",
    "longname": "src/Dispersion/GaussianPuff.js~GaussianPuff#constructor",
    "access": null,
    "description": "",
    "lineNumber": 24,
    "params": [
      {
        "nullable": null,
        "types": [
          "Atmosphere"
        ],
        "spread": false,
        "optional": false,
        "name": "atmosphere",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Source"
        ],
        "spread": false,
        "optional": false,
        "name": "source",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "massReleased",
        "description": ""
      }
    ],
    "generator": false
  },
  {
    "__docId__": 171,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_massReleased",
    "memberof": "src/Dispersion/GaussianPuff.js~GaussianPuff",
    "longname": "src/Dispersion/GaussianPuff.js~GaussianPuff#_massReleased",
    "access": "private",
    "description": "",
    "lineNumber": 30,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 172,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "massReleased",
    "memberof": "src/Dispersion/GaussianPuff.js~GaussianPuff",
    "longname": "src/Dispersion/GaussianPuff.js~GaussianPuff#massReleased",
    "access": null,
    "description": "",
    "lineNumber": 37,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 173,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getCenterX",
    "memberof": "src/Dispersion/GaussianPuff.js~GaussianPuff",
    "longname": "src/Dispersion/GaussianPuff.js~GaussianPuff#getCenterX",
    "access": null,
    "description": "The center at x meters downstream after t seconds",
    "lineNumber": 59,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number} - meters downwind"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "t",
        "description": "seconds after release"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": "meters downwind"
    },
    "generator": false
  },
  {
    "__docId__": 174,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getConcentration",
    "memberof": "src/Dispersion/GaussianPuff.js~GaussianPuff",
    "longname": "src/Dispersion/GaussianPuff.js~GaussianPuff#getConcentration",
    "access": null,
    "description": "",
    "see": [
      "http://www.sciencedirect.com/science/article/pii/S0093641303000247 Section 3.2, equation 14"
    ],
    "lineNumber": 76,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": "downwind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": "crosswind (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": "height (m)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "t",
        "description": "seconds from start"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "override": true,
    "generator": false
  },
  {
    "__docId__": 175,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/Source.js",
    "memberof": null,
    "longname": "src/Dispersion/Source.js",
    "access": null,
    "description": null,
    "lineNumber": 10,
    "content": "/**\n * Created by austin on 6/2/16.\n * file: Source.js\n */\n\n/**\n * Currently only supporting Point sources\n * @type {{POINT: string, VOLUME: string, AREA: string}}\n */\nconst SourceType = {\n    POINT: 'point',\n    VOLUME: 'volume',\n    AREA: 'area'\n};\n\n/**\n * Where the contaminate comes from !\n */\nclass Source {\n    \n    /**\n     * \n     * @param {string} type - The type of source \n     * @param {number} emissionRate - Maximum hourly emissions rate in g/s\n     * @param {number} height - m\n     * @param {number} radius - m\n     * @param {number} temperature - Kelvin\n     * @param {number} exitVelocity -  m/s\n     */\n    constructor(type, emissionRate, height, radius, temperature, exitVelocity) {\n        /**\n         * \n         * @type {number}\n         */\n        this.emissionRate = emissionRate;\n        /**\n         * \n         * @type {number}\n         */\n        this.height = height;\n        /**\n         * \n         * @type {number}\n         */\n        this.radius = radius;\n        /**\n         * \n         * @type {SourceType}\n         * @private\n         */\n        this._type = type;\n        /**\n         * \n         * @type {number}\n         */\n        this._temp = temperature;\n        /**\n         * \n         * @type {number}\n         */\n        this.exitVel = exitVelocity;\n    }\n\n    /**\n     * \n     * @returns {string}\n     */\n    toString() {\n        return `${this.type}: Emission rate of ${this.emissionRate} g/s`;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    getEmissionRate() {\n        return this.emissionRate;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    getHeight() {\n        return this.height;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    getRadius() {\n        return this.radius;\n    }\n\n    /**\n     * \n     * @returns {SourceType}\n     */\n    getType() {\n        return this._type;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    getTemperature() {\n        return this._temp;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    getExitVelocity() {\n        return this.exitVel;\n    }\n}\n\nSource.SourceType = SourceType;\n\nexport {SourceType};\nexport default Source;\n"
  },
  {
    "__docId__": 176,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "Source",
    "memberof": "src/Dispersion/Source.js",
    "longname": "src/Dispersion/Source.js~Source",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/Source.js",
    "importStyle": "Source",
    "description": "Where the contaminate comes from !",
    "lineNumber": 19,
    "interface": false
  },
  {
    "__docId__": 177,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#constructor",
    "access": null,
    "description": "",
    "lineNumber": 30,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "type",
        "description": "The type of source"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "emissionRate",
        "description": "Maximum hourly emissions rate in g/s"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "height",
        "description": "m"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "radius",
        "description": "m"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "temperature",
        "description": "Kelvin"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "exitVelocity",
        "description": "m/s"
      }
    ],
    "generator": false
  },
  {
    "__docId__": 178,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "emissionRate",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#emissionRate",
    "access": null,
    "description": "",
    "lineNumber": 35,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 179,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "height",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#height",
    "access": null,
    "description": "",
    "lineNumber": 40,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 180,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "radius",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#radius",
    "access": null,
    "description": "",
    "lineNumber": 45,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 181,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_type",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#_type",
    "access": "private",
    "description": "",
    "lineNumber": 51,
    "type": {
      "nullable": null,
      "types": [
        "SourceType"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 182,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_temp",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#_temp",
    "access": null,
    "description": "",
    "lineNumber": 56,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 183,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "exitVel",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#exitVel",
    "access": null,
    "description": "",
    "lineNumber": 61,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 184,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "toString",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#toString",
    "access": null,
    "description": "",
    "lineNumber": 68,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{string}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 185,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getEmissionRate",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#getEmissionRate",
    "access": null,
    "description": "",
    "lineNumber": 76,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 186,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getHeight",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#getHeight",
    "access": null,
    "description": "",
    "lineNumber": 84,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 187,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getRadius",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#getRadius",
    "access": null,
    "description": "",
    "lineNumber": 92,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 188,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getType",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#getType",
    "access": null,
    "description": "",
    "lineNumber": 100,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{SourceType}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "SourceType"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 189,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getTemperature",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#getTemperature",
    "access": null,
    "description": "",
    "lineNumber": 108,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 190,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "getExitVelocity",
    "memberof": "src/Dispersion/Source.js~Source",
    "longname": "src/Dispersion/Source.js~Source#getExitVelocity",
    "access": null,
    "description": "",
    "lineNumber": 116,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 191,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "SourceType",
    "memberof": "src/Dispersion/Source.js",
    "longname": "src/Dispersion/Source.js~SourceType",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/Source.js",
    "importStyle": "{SourceType}",
    "description": "Currently only supporting Point sources",
    "lineNumber": 10,
    "type": {
      "nullable": null,
      "types": [
        "{POINT: string, VOLUME: string, AREA: string}"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 192,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/Vector.js",
    "memberof": null,
    "longname": "src/Dispersion/Vector.js",
    "access": null,
    "description": null,
    "lineNumber": 13,
    "content": "/**\n * ES5\n * https://evanw.github.io/lightgl.js/docs/vector.html\n */\n\n/**\n *\n * @param x\n * @param y\n * @param z\n * @constructor\n */\nfunction Vector(x, y, z) {\n    this.x = x || 0;\n    this.y = y || 0;\n    this.z = z || 0;\n}\n\nVector.prototype = {\n    /**\n     *\n     * @returns {Vector}\n     */\n    negative: function() {\n        return new Vector(-this.x, -this.y, -this.z);\n    },\n    /**\n     *\n     * @param {Vector || number} v\n     * @returns {Vector}\n     */\n    add: function(v) {\n        if (v instanceof Vector) return new Vector(this.x + v.x, this.y + v.y, this.z + v.z);\n        else return new Vector(this.x + v, this.y + v, this.z + v);\n    },\n    subtract: function(v) {\n        if (v instanceof Vector) return new Vector(this.x - v.x, this.y - v.y, this.z - v.z);\n        else return new Vector(this.x - v, this.y - v, this.z - v);\n    },\n    multiply: function(v) {\n        if (v instanceof Vector) return new Vector(this.x * v.x, this.y * v.y, this.z * v.z);\n        else return new Vector(this.x * v, this.y * v, this.z * v);\n    },\n    divide: function(v) {\n        if (v instanceof Vector) return new Vector(this.x / v.x, this.y / v.y, this.z / v.z);\n        else return new Vector(this.x / v, this.y / v, this.z / v);\n    },\n    equals: function(v) {\n        return this.x == v.x && this.y == v.y && this.z == v.z;\n    },\n    dot: function(v) {\n        return this.x * v.x + this.y * v.y + this.z * v.z;\n    },\n    cross: function(v) {\n        return new Vector(\n            this.y * v.z - this.z * v.y,\n            this.z * v.x - this.x * v.z,\n            this.x * v.y - this.y * v.x\n        );\n    },\n    length: function() {\n        return Math.sqrt(this.dot(this));\n    },\n    unit: function() {\n        return this.divide(this.length());\n    },\n    min: function() {\n        return Math.min(Math.min(this.x, this.y), this.z);\n    },\n    max: function() {\n        return Math.max(Math.max(this.x, this.y), this.z);\n    },\n    /**\n     *\n     * @returns {number}\n     */\n    abs: function() {\n        return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2) + Math.pow(this.z, 2));\n    },\n    toAngles: function() {\n        return {\n            theta: Math.atan2(this.z, this.x),\n            phi: Math.asin(this.y / this.length())\n        };\n    },\n    angleTo: function(a) {\n        return Math.acos(this.dot(a) / (this.length() * a.length()));\n    },\n    toArray: function(n) {\n        return [this.x, this.y, this.z].slice(0, n || 3);\n    },\n    clone: function() {\n        return new Vector(this.x, this.y, this.z);\n    },\n    init: function(x, y, z) {\n        this.x = x; this.y = y; this.z = z;\n        return this;\n    }\n};\n\n\nVector.negative = function(a, b) {\n    b.x = -a.x; b.y = -a.y; b.z = -a.z;\n    return b;\n};\nVector.add = function(a, b, c) {\n    if (b instanceof Vector) { c.x = a.x + b.x; c.y = a.y + b.y; c.z = a.z + b.z; }\n    else { c.x = a.x + b; c.y = a.y + b; c.z = a.z + b; }\n    return c;\n};\nVector.subtract = function(a, b, c) {\n    if (b instanceof Vector) { c.x = a.x - b.x; c.y = a.y - b.y; c.z = a.z - b.z; }\n    else { c.x = a.x - b; c.y = a.y - b; c.z = a.z - b; }\n    return c;\n};\nVector.multiply = function(a, b, c) {\n    if (b instanceof Vector) { c.x = a.x * b.x; c.y = a.y * b.y; c.z = a.z * b.z; }\n    else { c.x = a.x * b; c.y = a.y * b; c.z = a.z * b; }\n    return c;\n};\nVector.divide = function(a, b, c) {\n    if (b instanceof Vector) { c.x = a.x / b.x; c.y = a.y / b.y; c.z = a.z / b.z; }\n    else { c.x = a.x / b; c.y = a.y / b; c.z = a.z / b; }\n    return c;\n};\nVector.cross = function(a, b, c) {\n    c.x = a.y * b.z - a.z * b.y;\n    c.y = a.z * b.x - a.x * b.z;\n    c.z = a.x * b.y - a.y * b.x;\n    return c;\n};\nVector.unit = function(a, b) {\n    var length = a.length();\n    b.x = a.x / length;\n    b.y = a.y / length;\n    b.z = a.z / length;\n    return b;\n};\nVector.fromAngles = function(theta, phi) {\n    return new Vector(Math.cos(theta) * Math.cos(phi), Math.sin(phi), Math.sin(theta) * Math.cos(phi));\n};\nVector.randomDirection = function() {\n    return Vector.fromAngles(Math.random() * Math.PI * 2, Math.asin(Math.random() * 2 - 1));\n};\nVector.min = function(a, b) {\n    return new Vector(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.min(a.z, b.z));\n};\nVector.max = function(a, b) {\n    return new Vector(Math.max(a.x, b.x), Math.max(a.y, b.y), Math.max(a.z, b.z));\n};\nVector.lerp = function(a, b, fraction) {\n    return b.subtract(a).multiply(fraction).add(a);\n};\nVector.fromArray = function(a) {\n    return new Vector(a[0], a[1], a[2]);\n};\nVector.angleBetween = function(a, b) {\n    return a.angleTo(b);\n};\n\nexport default Vector;"
  },
  {
    "__docId__": 193,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "negative",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~negative",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 102,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 194,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "add",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~add",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 106,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "c",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 195,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "subtract",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~subtract",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 111,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "c",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 196,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "multiply",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~multiply",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 116,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "c",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 197,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "divide",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~divide",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 121,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "c",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 198,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "cross",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~cross",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 126,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "c",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 199,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "unit",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~unit",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 132,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 200,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "fromAngles",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~fromAngles",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 139,
    "undocument": true,
    "params": [
      {
        "name": "theta",
        "types": [
          "*"
        ]
      },
      {
        "name": "phi",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 201,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "randomDirection",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~randomDirection",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 142,
    "undocument": true,
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 202,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "min",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~min",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 145,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 203,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "max",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~max",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 148,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 204,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "lerp",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~lerp",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 151,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      },
      {
        "name": "fraction",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 205,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "fromArray",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~fromArray",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 154,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 206,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "angleBetween",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~angleBetween",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 157,
    "undocument": true,
    "params": [
      {
        "name": "a",
        "types": [
          "*"
        ]
      },
      {
        "name": "b",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 207,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "Vector",
    "memberof": "src/Dispersion/Vector.js",
    "longname": "src/Dispersion/Vector.js~Vector",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/Vector.js",
    "importStyle": "Vector",
    "description": "",
    "lineNumber": 13,
    "unknown": [
      {
        "tagName": "@constructor",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "x",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "y",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "z",
        "description": ""
      }
    ],
    "generator": false
  },
  {
    "__docId__": 208,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/Dispersion/utils.js",
    "memberof": null,
    "longname": "src/Dispersion/utils.js",
    "access": null,
    "description": null,
    "lineNumber": 5,
    "content": "/**\n * Created by austin on 6/8/16.\n */\n\n\"use strict\";\n\n/**\n *\n * http://mathjs.org/examples/advanced/custom_argument_parsing.js.html\n *\n * @param {number} start\n * @param {number} end\n * @param {function} func\n * @param {number} [step=0.01]\n * @returns {number}\n */\nexport function integrate(start, end, func, step = 0.01) {\n    let total = 0;\n    for (let x = start; x < end; x += step) {\n        total += func(x + step / 2) * step;\n    }\n    return total;\n}"
  },
  {
    "__docId__": 209,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "integrate",
    "memberof": "src/Dispersion/utils.js",
    "longname": "src/Dispersion/utils.js~integrate",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/Dispersion/utils.js",
    "importStyle": "{integrate}",
    "description": "\nhttp://mathjs.org/examples/advanced/custom_argument_parsing.js.html",
    "lineNumber": 17,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "start",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "end",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "function"
        ],
        "spread": false,
        "optional": false,
        "name": "func",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0.01",
        "defaultRaw": 0.01,
        "name": "step",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "generator": false
  },
  {
    "__docId__": 210,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "src/NuclearMaterial.js",
    "memberof": null,
    "longname": "src/NuclearMaterial.js",
    "access": null,
    "description": null,
    "lineNumber": 28,
    "content": "/**\n * Created by austin on 6/16/16.\n */\n\n/**\n * Predefined isotopes:\n     Cobalt 60\n     Strontium 90 \n     Iodine 129 \n     Caesium 135 \n     Caesium 137 \n     Polonium 210 \n     Radon 222 \n     Radium 226 \n     Torium 232 \n     Uranium 233 \n     Uranium 235 \n     Uranium 238 \n     Plutonium 238\n     Plutonium 239\n     Plutonium 240\n     Americium 241\n     Curium 242\n * \n * \n * @type {*[]}\n */\nconst ISOTOPES = [\n    {name: \"Cobalt\", element: \"Co\", mass: 60, halfLife: 166349000, decayMode: \"beta,gamma,gamma\"},\n    {name: \"Strontium\", element: \"Sr\", mass: 90, halfLife: 908839000, decayMode: \"betaminus\"},\n    {name: \"Iodine\", element: \"I\", mass: 129, halfLife: 495444000000000, decayMode: \"beta,gamma\"},\n    {name: \"Caesium\", element: \"Cs\", mass: 135, halfLife: 7.25328e+13, decayMode: \"beta\"},\n    {name: \"Caesium\", element: \"Cs\", mass: 137, halfLife: 952072000, decayMode: \"beta,gamma\"},\n    {name: \"Polonium\", element: \"Po\", mass: 210, halfLife: 11955700, decayMode: \"alpha\"},\n    {name: \"Radon\", element: \"Rn\", mass: 222, halfLife: 330350, decayMode: \"alpha\"},\n    {name: \"Radium\", element: \"Ra\", mass: 226, halfLife: 50491100000, decayMode: \"alpha\"},\n    {name: \"Thorium\", element: \"Th\", mass: 232, halfLife: 443375000000000000, decayMode: \"alpha\"},\n    {name: \"Uranium\", element: \"U\", mass: 233, halfLife: 5023860000000, decayMode: \"alpha\"},\n    {name: \"Uranium\", element: \"U\", mass: 235, halfLife: 22209800000000000, decayMode: \"alpha\"},\n    {name: \"Uranium\", element: \"U\", mass: 238, halfLife: 140996000000000000, decayMode: \"alpha\"},\n    {name: \"Plutonium\", element: \"Pu\", mass: 238, halfLife: 2767540000, decayMode: \"alpha\"},\n    {name: \"Plutonium\", element: \"Pu\", mass: 239, halfLife: 760837000000, decayMode: \"alpha\"},\n    {name: \"Plutonium\", element: \"Pu\", mass: 240, halfLife: 207108000000, decayMode: \"alpha\"},\n    {name: \"Americium\", element: \"Am\", mass: 241, halfLife: 13638900000, decayMode: \"alpha\"},\n    {name: \"Curium\", element: \"Cm\", mass: 242, halfLife: 13824000, decayMode: \"alpha\"}\n];\n\n\n/**\n * Provides a few presets of common nuclear material as well as the ability to define a custom material\n  */\nclass NuclearMaterial {\n\n    /**\n     *\n     * @param {number|string} halfLifeOrName - either\n     * @param {number} [atomicMass] - necessary with name if using preset (u)\n     * @param {number} mass - Total mass of substance (g)\n     * @param {string} [decayMode='']\n     *\n     * @example\n     * // 100 grams of Cobalt-60\n     * let cobalt60 = new NuclearMaterial(\"Cobalt\", 60, 100);\n     *\n     * // 100 grams of Plutonium-238\n     * let pu238 = new NuclearMaterial(2767540000, 238, 100);\n     */\n    constructor(halfLifeOrName, atomicMass, mass, decayMode = '') {\n        if (typeof halfLifeOrName === 'number') {\n            /**\n             *\n             * @type {number}\n             * @private\n             */\n            this._halfLife = halfLifeOrName;\n\n            /**\n             * @type {number|*}\n             * @private\n             */\n            this._atomicMass = atomicMass;\n\n            /**\n             * \n             * @type {string}\n             * @private\n             */\n            this._decayMode = decayMode;\n\n        } else {\n            let isotopePreset;\n            for (let i of ISOTOPES) {\n                if (i.name === halfLifeOrName && i.mass == Math.round(atomicMass)) {\n                    isotopePreset = i;\n                    break;\n                }\n            }\n\n            if (!isotopePreset) \n                throw new Error('There is no preset for ' + halfLifeOrName + '-'+ atomicMass);\n\n            this._halfLife = isotopePreset.halfLife; // Map to known substances\n            this._atomicMass = isotopePreset.mass;\n            this._decayMode = isotopePreset.decayMode;\n        }\n\n\n        /**\n         * \n         * @type {number}\n         * @private\n         */\n        this._mass = mass;\n    }\n\n    /**\n     * \n     * @returns {number}\n     */\n    get mass() {\n        return this._mass;\n    }\n\n    /**\n     * \n     * @returns {number|*}\n     */\n    get atomicMass() {\n        return this._atomicMass;\n    }\n\n    /**\n     * \n     * @returns {number|*}\n     */\n    get halfLife() {\n        return this._halfLife;\n    }\n\n    /**\n     * \n     * @returns {string|*}\n     */\n    get decayMode() {\n        return this._decayMode;\n    }\n}\n\nNuclearMaterial.PRESETS = ISOTOPES;\n\nexport default NuclearMaterial;"
  },
  {
    "__docId__": 211,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "ISOTOPES",
    "memberof": "src/NuclearMaterial.js",
    "longname": "src/NuclearMaterial.js~ISOTOPES",
    "access": null,
    "export": false,
    "importPath": "dirtybomb/src/NuclearMaterial.js",
    "importStyle": null,
    "description": "Predefined isotopes:\nCobalt 60\nStrontium 90 \nIodine 129 \nCaesium 135 \nCaesium 137 \nPolonium 210 \nRadon 222 \nRadium 226 \nTorium 232 \nUranium 233 \nUranium 235 \nUranium 238 \nPlutonium 238\nPlutonium 239\nPlutonium 240\nAmericium 241\nCurium 242",
    "lineNumber": 28,
    "type": {
      "nullable": null,
      "types": [
        "*[]"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 212,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "NuclearMaterial",
    "memberof": "src/NuclearMaterial.js",
    "longname": "src/NuclearMaterial.js~NuclearMaterial",
    "access": null,
    "export": true,
    "importPath": "dirtybomb/src/NuclearMaterial.js",
    "importStyle": "NuclearMaterial",
    "description": "Provides a few presets of common nuclear material as well as the ability to define a custom material",
    "lineNumber": 52,
    "interface": false
  },
  {
    "__docId__": 213,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#constructor",
    "access": null,
    "description": "",
    "examples": [
      "// 100 grams of Cobalt-60\nlet cobalt60 = new NuclearMaterial(\"Cobalt\", 60, 100);\n\n// 100 grams of Plutonium-238\nlet pu238 = new NuclearMaterial(2767540000, 238, 100);"
    ],
    "lineNumber": 68,
    "params": [
      {
        "nullable": null,
        "types": [
          "number",
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "halfLifeOrName",
        "description": "either"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "name": "atomicMass",
        "description": "necessary with name if using preset (u)"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "mass",
        "description": "Total mass of substance (g)"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "''",
        "defaultRaw": "''",
        "name": "decayMode",
        "description": ""
      }
    ],
    "generator": false
  },
  {
    "__docId__": 214,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_halfLife",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#_halfLife",
    "access": "private",
    "description": "",
    "lineNumber": 75,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 215,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_atomicMass",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#_atomicMass",
    "access": "private",
    "description": "",
    "lineNumber": 81,
    "type": {
      "nullable": null,
      "types": [
        "number",
        "*"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 216,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_decayMode",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#_decayMode",
    "access": "private",
    "description": "",
    "lineNumber": 88,
    "type": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 217,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_halfLife",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#_halfLife",
    "access": null,
    "description": null,
    "lineNumber": 102,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 218,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_atomicMass",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#_atomicMass",
    "access": null,
    "description": null,
    "lineNumber": 103,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 219,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_decayMode",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#_decayMode",
    "access": null,
    "description": null,
    "lineNumber": 104,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 220,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "_mass",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#_mass",
    "access": "private",
    "description": "",
    "lineNumber": 113,
    "type": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 221,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "mass",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#mass",
    "access": null,
    "description": "",
    "lineNumber": 120,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 222,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "atomicMass",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#atomicMass",
    "access": null,
    "description": "",
    "lineNumber": 128,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number|*}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number",
        "*"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 223,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "halfLife",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#halfLife",
    "access": null,
    "description": "",
    "lineNumber": 136,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{number|*}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number",
        "*"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 224,
    "kind": "get",
    "static": false,
    "variation": null,
    "name": "decayMode",
    "memberof": "src/NuclearMaterial.js~NuclearMaterial",
    "longname": "src/NuclearMaterial.js~NuclearMaterial#decayMode",
    "access": null,
    "description": "",
    "lineNumber": 144,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "{string|*}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string",
        "*"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 226,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Infinity",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Infinity",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 227,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "NaN",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~NaN",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 228,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "undefined",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~undefined",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 229,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "null",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~null",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 230,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Object",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 231,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~object",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 232,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Function",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 233,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~function",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 234,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Boolean",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 235,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~boolean",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 236,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Symbol",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Symbol",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 237,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Error",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Error",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 238,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "EvalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~EvalError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 239,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "InternalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~InternalError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 240,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "RangeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~RangeError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 241,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "ReferenceError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~ReferenceError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 242,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "SyntaxError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~SyntaxError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 243,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "TypeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~TypeError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 244,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "URIError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~URIError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 245,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Number",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 246,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~number",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 247,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Date",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Date",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 248,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "String",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~String",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 249,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "string",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~string",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 250,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "RegExp",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~RegExp",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 251,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 252,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Int8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int8Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 253,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 254,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint8ClampedArray",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8ClampedArray",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 255,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Int16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int16Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 256,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint16Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 257,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Int32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 258,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 259,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Float32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Float32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 260,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Float64Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Float64Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 261,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Map",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Map",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 262,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Set",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Set",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 263,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "WeakMap",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakMap",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 264,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "WeakSet",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakSet",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 265,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "ArrayBuffer",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~ArrayBuffer",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 266,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "DataView",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~DataView",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 267,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "JSON",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~JSON",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 268,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Promise",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Promise",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 269,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Generator",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Generator",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 270,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "GeneratorFunction",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~GeneratorFunction",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 271,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Reflect",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Reflect",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 272,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Proxy",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Proxy",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 274,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "CanvasRenderingContext2D",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~CanvasRenderingContext2D",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 275,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "DocumentFragment",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~DocumentFragment",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 276,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Element",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Element",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~Element",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 277,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Event",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Event",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~Event",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 278,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Node",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Node",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~Node",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 279,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "NodeList",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/NodeList",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~NodeList",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 280,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "XMLHttpRequest",
    "externalLink": "https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~XMLHttpRequest",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 281,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "AudioContext",
    "externalLink": "https://developer.mozilla.org/en/docs/Web/API/AudioContext",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~AudioContext",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 282,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/Atmosphere.Spec.js",
    "memberof": null,
    "longname": "test/Atmosphere.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 4,
    "content": "/**\n * Created by austin on 6/15/16.\n */\n\"use strict\";\nimport chai from 'chai';\nimport Atmosphere from '../src/Dispersion/Atmosphere';\n\nconst expect = chai.expect;\nchai.should();\n\ndescribe('Atmosphere', function() {\n    let atm;\n    \n    describe('Constructor and setters', () => {\n        it('should take basic and optional parameters', () => {\n            atm = new Atmosphere(5, .5, 40, 300, 'rural', true);\n        }) ;\n        \n        it('should update wind with number', () => {\n            atm.setWindSpeed(3);\n            atm.windSpeed.should.be.equal(3);\n        });\n        \n        it('should update wind with array', () => {\n            atm.setWindSpeed([5, 1]);\n            atm.windSpeedVec.x.should.be.equal(5);\n            atm.windSpeedVec.y.should.be.equal(1);\n            atm.windSpeedVec.z.should.be.equal(0);\n        });\n    });\n    \n    describe('Wind methods', () => {\n       it('should calculate abs from 2d wind direction', () => {\n           atm.setWindSpeed([10, 0]);\n           let atm2 = new Atmosphere(10, .5, 40, 300, 'rural', true);\n           atm.windSpeed.should.be.equal(atm2.windSpeed);\n           \n           atm.windSpeed.should.be.equal(10);\n       });\n    });\n    \n    it('should print a human readable sentence', () => {\n        atm = new Atmosphere(5, .5, 40, 300, 'rural', true);\n        let readable = '' + atm;\n        expect(readable).to.have.string('Grade');\n    })\n});"
  },
  {
    "__docId__": 283,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe0",
    "testId": 0,
    "memberof": "test/Atmosphere.Spec.js",
    "testDepth": 0,
    "longname": "test/Atmosphere.Spec.js~describe0",
    "access": null,
    "description": "Atmosphere",
    "lineNumber": 11
  },
  {
    "__docId__": 284,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe1",
    "testId": 1,
    "memberof": "test/Atmosphere.Spec.js~describe0",
    "testDepth": 1,
    "longname": "test/Atmosphere.Spec.js~describe0.describe1",
    "access": null,
    "description": "Constructor and setters",
    "lineNumber": 14
  },
  {
    "__docId__": 285,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it2",
    "testId": 2,
    "memberof": "test/Atmosphere.Spec.js~describe0.describe1",
    "testDepth": 2,
    "longname": "test/Atmosphere.Spec.js~describe0.describe1.it2",
    "access": null,
    "description": "should take basic and optional parameters",
    "lineNumber": 15
  },
  {
    "__docId__": 286,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it3",
    "testId": 3,
    "memberof": "test/Atmosphere.Spec.js~describe0.describe1",
    "testDepth": 2,
    "longname": "test/Atmosphere.Spec.js~describe0.describe1.it3",
    "access": null,
    "description": "should update wind with number",
    "lineNumber": 19
  },
  {
    "__docId__": 287,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it4",
    "testId": 4,
    "memberof": "test/Atmosphere.Spec.js~describe0.describe1",
    "testDepth": 2,
    "longname": "test/Atmosphere.Spec.js~describe0.describe1.it4",
    "access": null,
    "description": "should update wind with array",
    "lineNumber": 24
  },
  {
    "__docId__": 288,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe5",
    "testId": 5,
    "memberof": "test/Atmosphere.Spec.js~describe0",
    "testDepth": 1,
    "longname": "test/Atmosphere.Spec.js~describe0.describe5",
    "access": null,
    "description": "Wind methods",
    "lineNumber": 32
  },
  {
    "__docId__": 289,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it6",
    "testId": 6,
    "memberof": "test/Atmosphere.Spec.js~describe0.describe5",
    "testDepth": 2,
    "longname": "test/Atmosphere.Spec.js~describe0.describe5.it6",
    "access": null,
    "description": "should calculate abs from 2d wind direction",
    "lineNumber": 33
  },
  {
    "__docId__": 290,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it7",
    "testId": 7,
    "memberof": "test/Atmosphere.Spec.js~describe0",
    "testDepth": 1,
    "longname": "test/Atmosphere.Spec.js~describe0.it7",
    "access": null,
    "description": "should print a human readable sentence",
    "lineNumber": 42
  },
  {
    "__docId__": 291,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/Bomb.Spec.js",
    "memberof": null,
    "longname": "test/Bomb.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 4,
    "content": "/**\n * Created by austin on 6/15/16.\n */\nimport chai from 'chai';\n\nimport Bomb from '../src/Bomb';\n\n\"use strict\";\n\nchai.should();\n\ndescribe('Bomb', function() {\n    let bomb;\n    \n    it('should import correctly', () => {\n        bomb = new Bomb(22); // Fat Man\n    });\n\n    it('should create all properties', () => {\n        bomb.mass.should.be.equal(22);\n        bomb.weaponYield.should.be.equal(22 / 1000000);\n    });\n    \n    describe('Cloud Methods', () => {\n        it('should do cloud calculations', () => {\n            bomb.cloudHeight.should.be.above(0);\n            bomb.cloudRadius.should.be.above(0);\n        });\n    });\n    \n    describe('Static', () => {\n        it('should calculate tntEquivalence', () => {\n           Bomb.tntEquivalent(4.184, 1).should.be.equal(1); \n        });\n        \n        it('should have a standard Atmosphere object', () => {\n            Bomb.STANDARD_ATM.temperature.should.be.equal(288.2);\n        })\n    });\n});"
  },
  {
    "__docId__": 292,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe8",
    "testId": 8,
    "memberof": "test/Bomb.Spec.js",
    "testDepth": 0,
    "longname": "test/Bomb.Spec.js~describe8",
    "access": null,
    "description": "Bomb",
    "lineNumber": 12
  },
  {
    "__docId__": 293,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it9",
    "testId": 9,
    "memberof": "test/Bomb.Spec.js~describe8",
    "testDepth": 1,
    "longname": "test/Bomb.Spec.js~describe8.it9",
    "access": null,
    "description": "should import correctly",
    "lineNumber": 15
  },
  {
    "__docId__": 294,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it10",
    "testId": 10,
    "memberof": "test/Bomb.Spec.js~describe8",
    "testDepth": 1,
    "longname": "test/Bomb.Spec.js~describe8.it10",
    "access": null,
    "description": "should create all properties",
    "lineNumber": 19
  },
  {
    "__docId__": 295,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe11",
    "testId": 11,
    "memberof": "test/Bomb.Spec.js~describe8",
    "testDepth": 1,
    "longname": "test/Bomb.Spec.js~describe8.describe11",
    "access": null,
    "description": "Cloud Methods",
    "lineNumber": 24
  },
  {
    "__docId__": 296,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it12",
    "testId": 12,
    "memberof": "test/Bomb.Spec.js~describe8.describe11",
    "testDepth": 2,
    "longname": "test/Bomb.Spec.js~describe8.describe11.it12",
    "access": null,
    "description": "should do cloud calculations",
    "lineNumber": 25
  },
  {
    "__docId__": 297,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe13",
    "testId": 13,
    "memberof": "test/Bomb.Spec.js~describe8",
    "testDepth": 1,
    "longname": "test/Bomb.Spec.js~describe8.describe13",
    "access": null,
    "description": "Static",
    "lineNumber": 31
  },
  {
    "__docId__": 298,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it14",
    "testId": 14,
    "memberof": "test/Bomb.Spec.js~describe8.describe13",
    "testDepth": 2,
    "longname": "test/Bomb.Spec.js~describe8.describe13.it14",
    "access": null,
    "description": "should calculate tntEquivalence",
    "lineNumber": 32
  },
  {
    "__docId__": 299,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it15",
    "testId": 15,
    "memberof": "test/Bomb.Spec.js~describe8.describe13",
    "testDepth": 2,
    "longname": "test/Bomb.Spec.js~describe8.describe13.it15",
    "access": null,
    "description": "should have a standard Atmosphere object",
    "lineNumber": 36
  },
  {
    "__docId__": 300,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/DirtyBomb.Spec.js",
    "memberof": null,
    "longname": "test/DirtyBomb.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 4,
    "content": "/**\n * Created by austin on 6/15/16.\n */\n\"use strict\";\nimport chai from 'chai';\n\nconst db = require('../dist/Dirtybomb');\n\n\nchai.should();\n\ndescribe('DirtyBomb', function() {\n    let bomb;\n    describe('Imports', () => {\n        it('should import Atmosphere', () => {\n            let atm = new db.Dispersion.Atmosphere(10, 1, 65, 300);\n        });\n        \n        it('should import NuclearMaterial', () => {\n            let nucMat = new db.NuclearMaterial(2767540000, 238, 100);\n        });\n    });\n\n    describe('Constructor', () => {\n        let nucMat = new db.NuclearMaterial(\"Cobalt\", 60, 100);\n        let atm = new db.Dispersion.Atmosphere([2, 3], .5, 65, 288);\n        \n        it('should construct from defaults', () => {\n            let bomb = new db.Dirtybomb(nucMat);\n        });\n        \n        it('should construct with non-default atmosphere', () => {\n            let bomb = new db.Dirtybomb(nucMat, 20, atm);\n        });\n        \n        it('should construct with a dynamic plume', () => {\n            let bomb = new db.Dirtybomb(nucMat, 20, atm, false);\n            // Dynamic\n            bomb.dispersion.path.length.should.be.equal(0);\n            bomb.mass.should.be.equal(20);\n        });\n    });\n    \n    \n    \n});"
  },
  {
    "__docId__": 301,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe16",
    "testId": 16,
    "memberof": "test/DirtyBomb.Spec.js",
    "testDepth": 0,
    "longname": "test/DirtyBomb.Spec.js~describe16",
    "access": null,
    "description": "DirtyBomb",
    "lineNumber": 12
  },
  {
    "__docId__": 302,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe17",
    "testId": 17,
    "memberof": "test/DirtyBomb.Spec.js~describe16",
    "testDepth": 1,
    "longname": "test/DirtyBomb.Spec.js~describe16.describe17",
    "access": null,
    "description": "Imports",
    "lineNumber": 14
  },
  {
    "__docId__": 303,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it18",
    "testId": 18,
    "memberof": "test/DirtyBomb.Spec.js~describe16.describe17",
    "testDepth": 2,
    "longname": "test/DirtyBomb.Spec.js~describe16.describe17.it18",
    "access": null,
    "description": "should import Atmosphere",
    "lineNumber": 15
  },
  {
    "__docId__": 304,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it19",
    "testId": 19,
    "memberof": "test/DirtyBomb.Spec.js~describe16.describe17",
    "testDepth": 2,
    "longname": "test/DirtyBomb.Spec.js~describe16.describe17.it19",
    "access": null,
    "description": "should import NuclearMaterial",
    "lineNumber": 19
  },
  {
    "__docId__": 305,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe20",
    "testId": 20,
    "memberof": "test/DirtyBomb.Spec.js~describe16",
    "testDepth": 1,
    "longname": "test/DirtyBomb.Spec.js~describe16.describe20",
    "access": null,
    "description": "Constructor",
    "lineNumber": 24
  },
  {
    "__docId__": 306,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it21",
    "testId": 21,
    "memberof": "test/DirtyBomb.Spec.js~describe16.describe20",
    "testDepth": 2,
    "longname": "test/DirtyBomb.Spec.js~describe16.describe20.it21",
    "access": null,
    "description": "should construct from defaults",
    "lineNumber": 28
  },
  {
    "__docId__": 307,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it22",
    "testId": 22,
    "memberof": "test/DirtyBomb.Spec.js~describe16.describe20",
    "testDepth": 2,
    "longname": "test/DirtyBomb.Spec.js~describe16.describe20.it22",
    "access": null,
    "description": "should construct with non-default atmosphere",
    "lineNumber": 32
  },
  {
    "__docId__": 308,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it23",
    "testId": 23,
    "memberof": "test/DirtyBomb.Spec.js~describe16.describe20",
    "testDepth": 2,
    "longname": "test/DirtyBomb.Spec.js~describe16.describe20.it23",
    "access": null,
    "description": "should construct with a dynamic plume",
    "lineNumber": 36
  },
  {
    "__docId__": 309,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/DynamicGaussianPuff.Spec.js",
    "memberof": null,
    "longname": "test/DynamicGaussianPuff.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 5,
    "content": "/**\n * Created by austin on 6/22/16.\n */\n\n\"use strict\";\nimport chai from 'chai';\n\nconst db = require('../dist/Dirtybomb');\n\nchai.should();\n\ndescribe(\"DynamicGaussianPuff\", function() {\n    let puff;\n\n    describe(\"Constructors\", () => {\n        let atm = new db.Dispersion.Atmosphere([1, 1], .5, 65, 288);\n        let source = new db.Dispersion.Source(\n            db.Dispersion.SourceType.POINT,\n            Number.POSITIVE_INFINITY,\n            20,\n            5,\n            350,\n            5\n        );\n\n        it('should use the default center', () => {\n            puff = new db.Dispersion.DynamicGaussianPuff(atm, source, 50);\n            puff.center.x.should.be.equal(0);\n            puff.center.y.should.be.equal(0);\n        });\n\n        it('should take explicit center', () => {\n            puff = new db.Dispersion.DynamicGaussianPuff(atm, source, 50, [1, 1, 1]);\n            puff.center.x.should.be.equal(1);\n            puff.center.y.should.be.equal(1);\n        });\n    });\n\n    describe(\"Distance functions\", () => {\n        beforeEach((done) => {\n            let atm = new db.Dispersion.Atmosphere([1, 1], .5, 65, 288);\n            let source = new db.Dispersion.Source(\n                db.Dispersion.SourceType.POINT,\n                Number.POSITIVE_INFINITY,\n                20,\n                5,\n                350,\n                5\n            );\n            puff = new db.Dispersion.DynamicGaussianPuff(atm, source, 50);\n            done();\n        });\n\n        it('should calculate distance traveled from start', () => {\n            puff.distanceFromStart.should.be.equal(0);\n            puff.step(60); // Move one minute\n            puff.distanceFromStart.should.be.above(0);\n        });\n\n        it('should not mutate data', () => {\n            puff.distanceFromStart.should.be.equal(0);\n            puff.step(60); // Move one minute\n            let orig = puff.center.clone();\n            puff.distanceFromStart.should.be.above(0);\n            orig.equals(puff.center).should.be.true;\n        });\n\n        it('should calculate distance total traveled with changing wind', () => {\n            let atm = puff.atmosphere;\n            atm.setWindSpeed([2, 2]);\n            puff.step(60);\n            atm.setWindSpeed([1,4]);\n            puff.step(60);\n            atm.setWindSpeed([2, 8]);\n            puff.step(60);\n            puff.distanceTraveled.should.be.above(puff.distanceFromStart);\n            console.log(`Puff has traveled ${puff.distanceTraveled}m total`);\n        });\n    });\n\n});"
  },
  {
    "__docId__": 310,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe24",
    "testId": 24,
    "memberof": "test/DynamicGaussianPuff.Spec.js",
    "testDepth": 0,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24",
    "access": null,
    "description": "DynamicGaussianPuff",
    "lineNumber": 12
  },
  {
    "__docId__": 311,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe25",
    "testId": 25,
    "memberof": "test/DynamicGaussianPuff.Spec.js~describe24",
    "testDepth": 1,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24.describe25",
    "access": null,
    "description": "Constructors",
    "lineNumber": 15
  },
  {
    "__docId__": 312,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it26",
    "testId": 26,
    "memberof": "test/DynamicGaussianPuff.Spec.js~describe24.describe25",
    "testDepth": 2,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24.describe25.it26",
    "access": null,
    "description": "should use the default center",
    "lineNumber": 26
  },
  {
    "__docId__": 313,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it27",
    "testId": 27,
    "memberof": "test/DynamicGaussianPuff.Spec.js~describe24.describe25",
    "testDepth": 2,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24.describe25.it27",
    "access": null,
    "description": "should take explicit center",
    "lineNumber": 32
  },
  {
    "__docId__": 314,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe28",
    "testId": 28,
    "memberof": "test/DynamicGaussianPuff.Spec.js~describe24",
    "testDepth": 1,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24.describe28",
    "access": null,
    "description": "Distance functions",
    "lineNumber": 39
  },
  {
    "__docId__": 315,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it29",
    "testId": 29,
    "memberof": "test/DynamicGaussianPuff.Spec.js~describe24.describe28",
    "testDepth": 2,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24.describe28.it29",
    "access": null,
    "description": "should calculate distance traveled from start",
    "lineNumber": 54
  },
  {
    "__docId__": 316,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it30",
    "testId": 30,
    "memberof": "test/DynamicGaussianPuff.Spec.js~describe24.describe28",
    "testDepth": 2,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24.describe28.it30",
    "access": null,
    "description": "should not mutate data",
    "lineNumber": 60
  },
  {
    "__docId__": 317,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it31",
    "testId": 31,
    "memberof": "test/DynamicGaussianPuff.Spec.js~describe24.describe28",
    "testDepth": 2,
    "longname": "test/DynamicGaussianPuff.Spec.js~describe24.describe28.it31",
    "access": null,
    "description": "should calculate distance total traveled with changing wind",
    "lineNumber": 68
  },
  {
    "__docId__": 318,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/GaussianPlume.Spec.js",
    "memberof": null,
    "longname": "test/GaussianPlume.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 4,
    "content": "/**\n * Created by austin on 6/8/16.\n */\n\"use strict\";\n\nimport chai from 'chai';\n\nimport Atmosphere from '../src/Dispersion/Atmosphere';\nimport Source, {\n    SourceType\n} from '../src/Dispersion/Source';\nimport GaussianPlume from '../src/Dispersion/GaussianPlume';\n\nchai.should();\n\ndescribe('GaussianPlume', function() {\n    let plume;\n    \n    it('should import correctly', () => {\n        let atm = new Atmosphere(10, 1, 65, 300);\n        let source = new Source(SourceType.POINT, 2, 150, 5, 400, 4);\n        plume = new GaussianPlume(atm, source); \n    });\n    \n    it('should have 0 stdY and stdZ at source', () => {\n        plume.getStdY(0).should.be.closeTo(0, 0.1);\n        plume.getStdZ(0).should.be.closeTo(0, 0.1);\n    });\n\n    it('should calculate proper effective heights', () => {\n\n    });\n});"
  },
  {
    "__docId__": 319,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe32",
    "testId": 32,
    "memberof": "test/GaussianPlume.Spec.js",
    "testDepth": 0,
    "longname": "test/GaussianPlume.Spec.js~describe32",
    "access": null,
    "description": "GaussianPlume",
    "lineNumber": 16
  },
  {
    "__docId__": 320,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it33",
    "testId": 33,
    "memberof": "test/GaussianPlume.Spec.js~describe32",
    "testDepth": 1,
    "longname": "test/GaussianPlume.Spec.js~describe32.it33",
    "access": null,
    "description": "should import correctly",
    "lineNumber": 19
  },
  {
    "__docId__": 321,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it34",
    "testId": 34,
    "memberof": "test/GaussianPlume.Spec.js~describe32",
    "testDepth": 1,
    "longname": "test/GaussianPlume.Spec.js~describe32.it34",
    "access": null,
    "description": "should have 0 stdY and stdZ at source",
    "lineNumber": 25
  },
  {
    "__docId__": 322,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it35",
    "testId": 35,
    "memberof": "test/GaussianPlume.Spec.js~describe32",
    "testDepth": 1,
    "longname": "test/GaussianPlume.Spec.js~describe32.it35",
    "access": null,
    "description": "should calculate proper effective heights",
    "lineNumber": 30
  },
  {
    "__docId__": 323,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/GaussianPuff.Spec.js",
    "memberof": null,
    "longname": "test/GaussianPuff.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 5,
    "content": "/**\n * Created by austin on 6/15/16.\n */\n\n\"use strict\";\n\nimport chai from 'chai';\n\nimport Atmosphere from '../src/Dispersion/Atmosphere';\nimport Source, {\n    SourceType\n} from '../src/Dispersion/Source';\nimport GaussianPuff from '../src/Dispersion/GaussianPuff';\nimport {integrate} from '../src/Dispersion/utils';\n\nchai.should();\n\ndescribe('GaussianPuff', function() {\n    let puff;\n    \n    describe('Constructor', () => {\n        it('should import correctly', () => {\n            let atm = new Atmosphere(10, 1, 65, 300);\n            let source = new Source(SourceType.POINT, 2, 150, 5, 400, 4);\n            puff = new GaussianPuff(atm, source, 20);\n        });\n    });\n    \n    describe('CenterX functions', () => {\n        it('should have a center at 0,0,0 before release', () => {\n            puff.getCenterX(0).should.be.equal(0);\n        });\n        \n        it('should move in the x direction with constant wind', () => {\n           puff.getCenterX(3600).should.be.above(0); \n        });\n        \n        it('should move at the rate of the wind', () => {\n            console.log(puff.windSpeedAtSourceHeight);\n           puff.getCenterX(3600).should.be.closeTo(3600 * puff.windSpeedAtSourceHeight, 0.01)\n        });\n    });\n    \n    describe('Concentration functions', () => {\n        it('should have 0 concentration before release', () => {\n            isNaN(puff.getConcentration(0, 0, 0, 0)).should.be.true;\n            puff.getConcentration(0, 0, 0, 10).should.be.above(0);\n        });\n    });\n});"
  },
  {
    "__docId__": 324,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe36",
    "testId": 36,
    "memberof": "test/GaussianPuff.Spec.js",
    "testDepth": 0,
    "longname": "test/GaussianPuff.Spec.js~describe36",
    "access": null,
    "description": "GaussianPuff",
    "lineNumber": 18
  },
  {
    "__docId__": 325,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe37",
    "testId": 37,
    "memberof": "test/GaussianPuff.Spec.js~describe36",
    "testDepth": 1,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe37",
    "access": null,
    "description": "Constructor",
    "lineNumber": 21
  },
  {
    "__docId__": 326,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it38",
    "testId": 38,
    "memberof": "test/GaussianPuff.Spec.js~describe36.describe37",
    "testDepth": 2,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe37.it38",
    "access": null,
    "description": "should import correctly",
    "lineNumber": 22
  },
  {
    "__docId__": 327,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe39",
    "testId": 39,
    "memberof": "test/GaussianPuff.Spec.js~describe36",
    "testDepth": 1,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe39",
    "access": null,
    "description": "CenterX functions",
    "lineNumber": 29
  },
  {
    "__docId__": 328,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it40",
    "testId": 40,
    "memberof": "test/GaussianPuff.Spec.js~describe36.describe39",
    "testDepth": 2,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe39.it40",
    "access": null,
    "description": "should have a center at 0,0,0 before release",
    "lineNumber": 30
  },
  {
    "__docId__": 329,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it41",
    "testId": 41,
    "memberof": "test/GaussianPuff.Spec.js~describe36.describe39",
    "testDepth": 2,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe39.it41",
    "access": null,
    "description": "should move in the x direction with constant wind",
    "lineNumber": 34
  },
  {
    "__docId__": 330,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it42",
    "testId": 42,
    "memberof": "test/GaussianPuff.Spec.js~describe36.describe39",
    "testDepth": 2,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe39.it42",
    "access": null,
    "description": "should move at the rate of the wind",
    "lineNumber": 38
  },
  {
    "__docId__": 331,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe43",
    "testId": 43,
    "memberof": "test/GaussianPuff.Spec.js~describe36",
    "testDepth": 1,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe43",
    "access": null,
    "description": "Concentration functions",
    "lineNumber": 44
  },
  {
    "__docId__": 332,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it44",
    "testId": 44,
    "memberof": "test/GaussianPuff.Spec.js~describe36.describe43",
    "testDepth": 2,
    "longname": "test/GaussianPuff.Spec.js~describe36.describe43.it44",
    "access": null,
    "description": "should have 0 concentration before release",
    "lineNumber": 45
  },
  {
    "__docId__": 333,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/NuclearMaterial.Spec.js",
    "memberof": null,
    "longname": "test/NuclearMaterial.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 5,
    "content": "/**\n * Created by austin on 6/20/16.\n */\n\n\"use strict\";\n\nimport chai from 'chai';\nconst db = require('../dist/Dirtybomb');\n\nconst expect = chai.expect;\nchai.should();\n\ndescribe('NuclearMaterial', function() {\n    let pu238, cobalt60;\n    describe('Constructor', () => {\n        it('should construct from half life', () => {\n            pu238 = new db.NuclearMaterial(2767540000, 238, 100);\n        });\n        \n        it('should construct from preset', () => {\n            cobalt60 = new db.NuclearMaterial(\"Cobalt\", 60, 100);\n        });\n        \n        it('should throw error if preset is not found', () => {\n            let badConstruction = function() {\n                return new db.NuclearMaterial(\"WMD\", 2001, 100);\n            };\n            expect(badConstruction).to.throw(Error, /no preset/);\n        });\n    });\n    \n    describe('Getters', () => {\n        it('should return sample mass', () => {\n            pu238.mass.should.be.equal(100);\n            cobalt60.mass.should.be.equal(100);\n        });\n        \n        it('should return atomic mass', () => {\n            pu238.atomicMass.should.be.equal(238);\n            cobalt60.atomicMass.should.be.equal(60);\n        });\n        \n        it('should return half life', () => {\n            pu238.halfLife.should.be.equal(2767540000);\n            cobalt60.halfLife.should.be.equal(166349000);\n        });\n        \n        it('should return decayMode if provided', () => {\n            pu238.decayMode.should.be.equal('');\n            cobalt60.decayMode.should.be.equal('beta,gamma,gamma');\n        });\n    })\n});"
  },
  {
    "__docId__": 334,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe45",
    "testId": 45,
    "memberof": "test/NuclearMaterial.Spec.js",
    "testDepth": 0,
    "longname": "test/NuclearMaterial.Spec.js~describe45",
    "access": null,
    "description": "NuclearMaterial",
    "lineNumber": 13
  },
  {
    "__docId__": 335,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe46",
    "testId": 46,
    "memberof": "test/NuclearMaterial.Spec.js~describe45",
    "testDepth": 1,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe46",
    "access": null,
    "description": "Constructor",
    "lineNumber": 15
  },
  {
    "__docId__": 336,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it47",
    "testId": 47,
    "memberof": "test/NuclearMaterial.Spec.js~describe45.describe46",
    "testDepth": 2,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe46.it47",
    "access": null,
    "description": "should construct from half life",
    "lineNumber": 16
  },
  {
    "__docId__": 337,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it48",
    "testId": 48,
    "memberof": "test/NuclearMaterial.Spec.js~describe45.describe46",
    "testDepth": 2,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe46.it48",
    "access": null,
    "description": "should construct from preset",
    "lineNumber": 20
  },
  {
    "__docId__": 338,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it49",
    "testId": 49,
    "memberof": "test/NuclearMaterial.Spec.js~describe45.describe46",
    "testDepth": 2,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe46.it49",
    "access": null,
    "description": "should throw error if preset is not found",
    "lineNumber": 24
  },
  {
    "__docId__": 339,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe50",
    "testId": 50,
    "memberof": "test/NuclearMaterial.Spec.js~describe45",
    "testDepth": 1,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe50",
    "access": null,
    "description": "Getters",
    "lineNumber": 32
  },
  {
    "__docId__": 340,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it51",
    "testId": 51,
    "memberof": "test/NuclearMaterial.Spec.js~describe45.describe50",
    "testDepth": 2,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe50.it51",
    "access": null,
    "description": "should return sample mass",
    "lineNumber": 33
  },
  {
    "__docId__": 341,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it52",
    "testId": 52,
    "memberof": "test/NuclearMaterial.Spec.js~describe45.describe50",
    "testDepth": 2,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe50.it52",
    "access": null,
    "description": "should return atomic mass",
    "lineNumber": 38
  },
  {
    "__docId__": 342,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it53",
    "testId": 53,
    "memberof": "test/NuclearMaterial.Spec.js~describe45.describe50",
    "testDepth": 2,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe50.it53",
    "access": null,
    "description": "should return half life",
    "lineNumber": 43
  },
  {
    "__docId__": 343,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it54",
    "testId": 54,
    "memberof": "test/NuclearMaterial.Spec.js~describe45.describe50",
    "testDepth": 2,
    "longname": "test/NuclearMaterial.Spec.js~describe45.describe50.it54",
    "access": null,
    "description": "should return decayMode if provided",
    "lineNumber": 48
  },
  {
    "__docId__": 344,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/Vector.Spec.js",
    "memberof": null,
    "longname": "test/Vector.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 6,
    "content": "/**\n * Created by austin on 6/15/16.\n */\n\n\n\"use strict\";\n\nimport chai from 'chai';\n\nimport Vector from '../src/Dispersion/Vector';\n\nchai.should();\n\ndescribe('Vector', function() {\n\n    it('should do basic calculations', () => {\n        let x1 = new Vector(1, 0, 0);\n        x1.dot(x1).should.be.closeTo(1, 0.01);\n        x1.abs().should.be.closeTo(1, 0);\n    });\n\n    it('should do 2d calculations', () => {\n        let x1 = new Vector(1, 1);\n        x1.abs().should.be.closeTo(1.414, 0.01);\n    });\n    \n});\n"
  },
  {
    "__docId__": 345,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe55",
    "testId": 55,
    "memberof": "test/Vector.Spec.js",
    "testDepth": 0,
    "longname": "test/Vector.Spec.js~describe55",
    "access": null,
    "description": "Vector",
    "lineNumber": 14
  },
  {
    "__docId__": 346,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it56",
    "testId": 56,
    "memberof": "test/Vector.Spec.js~describe55",
    "testDepth": 1,
    "longname": "test/Vector.Spec.js~describe55.it56",
    "access": null,
    "description": "should do basic calculations",
    "lineNumber": 16
  },
  {
    "__docId__": 347,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it57",
    "testId": 57,
    "memberof": "test/Vector.Spec.js~describe55",
    "testDepth": 1,
    "longname": "test/Vector.Spec.js~describe55.it57",
    "access": null,
    "description": "should do 2d calculations",
    "lineNumber": 22
  },
  {
    "__docId__": 348,
    "kind": "testFile",
    "static": true,
    "variation": null,
    "name": "test/utils.Spec.js",
    "memberof": null,
    "longname": "test/utils.Spec.js",
    "access": null,
    "description": null,
    "lineNumber": 4,
    "content": "/**\n * Created by austin on 6/8/16.\n */\n\"use strict\";\nimport {integrate} from '../src/Dispersion/utils';\nimport chai from 'chai';\n\nchai.should();\n\ndescribe('Integrate', function() {\n    it('accurate within 1/1000 for simple functions', () => {\n        integrate(0, 1, () => { return 1; }).should.be.closeTo(1, 0.001);\n    });\n    \n    it('can take functions with arguments', () => {\n       integrate(0, 1, (x) => { return x; }).should.be.closeTo(0.5, 0.001); \n    });\n\n    it('does slightly more complex functions with increased accuracy', () => {\n       integrate(2, 3, (x) => { return .25 * Math.pow(x, 3); }, 0.0001)\n           .should.be.closeTo(4.0625, 0.001);\n    });\n});"
  },
  {
    "__docId__": 349,
    "kind": "testDescribe",
    "static": true,
    "variation": null,
    "name": "describe58",
    "testId": 58,
    "memberof": "test/utils.Spec.js",
    "testDepth": 0,
    "longname": "test/utils.Spec.js~describe58",
    "access": null,
    "description": "Integrate",
    "lineNumber": 10
  },
  {
    "__docId__": 350,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it59",
    "testId": 59,
    "memberof": "test/utils.Spec.js~describe58",
    "testDepth": 1,
    "longname": "test/utils.Spec.js~describe58.it59",
    "access": null,
    "description": "accurate within 1/1000 for simple functions",
    "lineNumber": 11
  },
  {
    "__docId__": 351,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it60",
    "testId": 60,
    "memberof": "test/utils.Spec.js~describe58",
    "testDepth": 1,
    "longname": "test/utils.Spec.js~describe58.it60",
    "access": null,
    "description": "can take functions with arguments",
    "lineNumber": 15
  },
  {
    "__docId__": 352,
    "kind": "testIt",
    "static": true,
    "variation": null,
    "name": "it61",
    "testId": 61,
    "memberof": "test/utils.Spec.js~describe58",
    "testDepth": 1,
    "longname": "test/utils.Spec.js~describe58.it61",
    "access": null,
    "description": "does slightly more complex functions with increased accuracy",
    "lineNumber": 19
  }
]