squiggle/src/models/GlobalCatastrophe.re

34 lines
974 B
ReasonML
Raw Normal View History

module Model = {
2020-02-14 21:53:47 +00:00
let make = (currentDateTime: MomentRe.Moment.t) => {
2020-02-14 22:29:22 +00:00
let lazyDistribution = r =>
2020-02-14 21:53:47 +00:00
TimeLimitedDomainCdf.make(
~timeVector={zero: currentDateTime, unit: `years},
2020-02-15 11:39:37 +00:00
~distribution=r(FloatCdf.logNormal(20., 3.)),
2020-02-14 21:53:47 +00:00
~probabilityAtMaxX=0.7,
~maxX=`x(200.),
);
2020-02-14 22:29:22 +00:00
Prop.Value.TimeLimitedDomainCdfLazy(lazyDistribution);
};
};
module Interface = {
let dayKey = "Day";
let run = (p: Prop.Combo.t) => {
switch (Prop.Combo.InputValues.toValueArray(p)) {
2020-02-14 21:53:47 +00:00
| [|Some(DateTime(currentYear))|] => Some(Model.make(currentYear))
| _ => None
};
};
let model: Prop.Model.t =
Prop.{
name: "Global Catastrophe",
2020-02-10 23:45:54 +00:00
description: "The chances of having at least one catastrophe per year in the future, assuming no other catastrophe until then.",
version: "1.0.0",
author: "Ozzie Gooen",
2020-02-14 21:53:47 +00:00
inputTypes: [|TypeWithMetadata.currentYear|],
outputTypes: [||],
run,
};
};