diff options
| -rw-r--r-- | notes/background.txt | 13 | ||||
| -rw-r--r-- | notes/dae_libs.txt | 9 | ||||
| -rw-r--r-- | notes/goals.txt | 9 | ||||
| -rw-r--r-- | notes/ideas.txt | 4 | ||||
| -rw-r--r-- | notes/julia_libs.txt (renamed from notes/implementation_libs.txt) | 10 | ||||
| -rw-r--r-- | notes/list_of_examples.txt (renamed from notes/examples.txt) | 19 | ||||
| -rw-r--r-- | notes/modelica33r1_grammar.txt (renamed from notes/modelica33r1_spec.txt) | 0 | ||||
| -rw-r--r-- | notes/modelica_limitations.txt (renamed from notes/modelica.txt) | 2 | ||||
| -rw-r--r-- | notes/parsing.txt | 3 | ||||
| -rw-r--r-- | notes/solve_for.txt | 58 | ||||
| -rw-r--r-- | notes/spec.txt | 10 | ||||
| -rw-r--r-- | notes/tangle_demo.txt | 31 | ||||
| -rw-r--r-- | notes/webface.txt | 15 | 
13 files changed, 142 insertions, 41 deletions
| diff --git a/notes/background.txt b/notes/background.txt index 700926d..72991e3 100644 --- a/notes/background.txt +++ b/notes/background.txt @@ -4,6 +4,12 @@  "CellML Model Repository"  http://models.cellml.org/cellml +OpenCell tool for CellML +https://www.cellml.org/tools/opencell + +NeuroML +https://en.wikipedia.org/wiki/NeuroML +  "BioModels Database"  http://www.ebi.ac.uk/biomodels-main/ @@ -82,3 +88,10 @@ Luna Lang      so far, vaporware      http://www.luna-lang.org/ +### Other + +"HOW TO SIMULATE THE UNIVERSE IN 134 EASY STEPS" +Nicky Case, 2016 +http://ncase.me/OVC2016/ + +also: http://blog.ncase.me/evolution-not-revolution/ diff --git a/notes/dae_libs.txt b/notes/dae_libs.txt new file mode 100644 index 0000000..762d21b --- /dev/null +++ b/notes/dae_libs.txt @@ -0,0 +1,9 @@ + +##### Solvers/"Codes" + +SUNDIALS +    http://computation.llnl.gov/projects/sundials + +DAEPACK +    http://yoric.mit.edu/DAEPACK + diff --git a/notes/goals.txt b/notes/goals.txt deleted file mode 100644 index d3e4bc4..0000000 --- a/notes/goals.txt +++ /dev/null @@ -1,9 +0,0 @@ -- simple wiki/database tool with web front end -- some support or UI for compound models -- code generation: -    - julia -    - javascript -    - rust? -    - C? -    - modelica -- Elm interactive front-end / debugger diff --git a/notes/ideas.txt b/notes/ideas.txt deleted file mode 100644 index 2f5d5ac..0000000 --- a/notes/ideas.txt +++ /dev/null @@ -1,4 +0,0 @@ -- FRP-based integration of models (via signals) -- Elm-based browser simulation environment -- fast simulator/plotter in Rust -- try to integrate or use "Luna" language diff --git a/notes/implementation_libs.txt b/notes/julia_libs.txt index 94a961f..3ab17c8 100644 --- a/notes/implementation_libs.txt +++ b/notes/julia_libs.txt @@ -32,13 +32,3 @@ PEGParser.jl  ParserCombinator.jl      More Haskell-like. Meh. - -##### GUI Demos - -numeric.js -    Has an ODE solver. Use with Elm? - -Tangle.js -    Brett's JS widget-y thing. Very simple. -    How did he do plots/graphs for those demos? -    http://worrydream.com/Tangle/guide.html diff --git a/notes/examples.txt b/notes/list_of_examples.txt index 5f5d4d3..b8b416f 100644 --- a/notes/examples.txt +++ b/notes/list_of_examples.txt @@ -1,16 +1,15 @@  Newer list: -https://en.wikipedia.org/wiki/Radioactive_decay#One-decay_process -https://en.wikipedia.org/wiki/Hodgkin%E2%80%93Huxley_model -logistic function -Black–Scholes -https://en.wikipedia.org/wiki/Sethi_model  -von Bertalanffy growth equation +- https://en.wikipedia.org/wiki/Radioactive_decay#One-decay_process +- https://en.wikipedia.org/wiki/Hodgkin%E2%80%93Huxley_model +- logistic function +- Black–Scholes +- https://en.wikipedia.org/wiki/Sethi_model  +- von Bertalanffy growth equation  ### Models  Simple, equation based: -- World3 (from limits to growth report)  - classic predator-prey (Lotka–Volterra)  - attractors  - that vegan paper @@ -57,3 +56,9 @@ https://www.wikidata.org/wiki/Q173227 (physical constant)  ### Units  https://www.wikidata.org/wiki/Q15088658 (measured value) + +### Existing / Import +- World3 (from limits to growth report) +- Tennessee Eastman Process Control Challenge Problem +    http://yoric.mit.edu/DAEPACK/Examples/Eastman +- OpenWorm (in NeuroML) diff --git a/notes/modelica33r1_spec.txt b/notes/modelica33r1_grammar.txt index 2df42dd..2df42dd 100644 --- a/notes/modelica33r1_spec.txt +++ b/notes/modelica33r1_grammar.txt diff --git a/notes/modelica.txt b/notes/modelica_limitations.txt index 69457c1..5c4294d 100644 --- a/notes/modelica.txt +++ b/notes/modelica_limitations.txt @@ -1,2 +1,2 @@ -  Double derivative (eg, "der(der(x)) = a") is not allowed. +Partial derivatives are not allowed. diff --git a/notes/parsing.txt b/notes/parsing.txt index 6a13b76..a3c29ef 100644 --- a/notes/parsing.txt +++ b/notes/parsing.txt @@ -3,3 +3,6 @@ Parser Refs:  http://notes.willcrichton.net/parsing-strategies-in-rust/  http://smallcultfollowing.com/babysteps/blog/2015/09/14/lalrpop/  https://github.com/nikomatsakis/lalrpop/ + + +libsyntax: rust lib for parsing rust itself diff --git a/notes/solve_for.txt b/notes/solve_for.txt new file mode 100644 index 0000000..b1cf81d --- /dev/null +++ b/notes/solve_for.txt @@ -0,0 +1,58 @@ + +    x = a*y + c +    y = 4 * c + +    solve for [c] in terms of [a, x] +        first solve for other unknowns: [y] + +    x = a*(4*c) + c + +    x = c * (1 + 4*a) +    c = (1 + 4*a) / x + +N equations in M unknowns, P constants + +    0 = x + y +    0 = y*2 + 1 - x + +----------------------------------- + +solve_for(self, P: Vec<String>, M: Vec<String>, Q: HashMap<String, Expr>) + + +returns a ModelicaModel with fixed components; equations are LHS identifier, in +    correct order, no extends, no connections, name suffixed " (rewritten)", +    components as Parameter (w/ val), Input, or Output +     + +V variables +Q constants (become kwargs) +P bound vars (independent, inputs/passed, become like constants) +M unknowns (dependent, outputs) +N' total equations +N equations with unknowns + +  V = Q + P + M +  check: each Q is Integer or Float     UnderSpecifiedConstant +  filter N' to get N    OverConstrained if extra equations +  check: N >= M         UnderConstrained + +while len(eqns) > 0: +  1. find first eqn with single unknown, and pop it +  2. rebalance to get unknown on LHS +  3. remove unknown from unknown list + +return: sort equations to match order + +solve_for(var) impl for SimpleEquation => Result<SimpleEquation, String> +    check: var only on one side     VariableNotFound or NaiveImplementation +    put var on LHS +    recursively apply rules to symmetrically unwrap LHS onto RHS +    if try to unwrap Abs:           NaiveImplementation + +----------------------------------- +systems of differential equations: +  will be N equations of N variables, in terms of implied time + +should be no unknowns; odex thing is just varying initial equations +have JS boxes to show ranges of initial conditions diff --git a/notes/spec.txt b/notes/spec.txt deleted file mode 100644 index 405629b..0000000 --- a/notes/spec.txt +++ /dev/null @@ -1,10 +0,0 @@ - -variable types: -    state -    parameter -    constant -    independent (?) -    dependent (?) -    time (special case?) - -"variables"? or "symbols"? or "quantities"? diff --git a/notes/tangle_demo.txt b/notes/tangle_demo.txt new file mode 100644 index 0000000..463abe1 --- /dev/null +++ b/notes/tangle_demo.txt @@ -0,0 +1,31 @@ + + +/experiments/%model/tangle.html +/experiments/%model/tangle-model.js + +<script type="text/javascript" src="Tangle.js"></script> + +this part in body's onLoad; after live script has downloaded. +var table = new Tangle (document.getElementById("MODELNAME"), { +    initialize: function () { +        this.CONSTANT = INIT; +        this.IN_VAR = INIT; +    }, +    update: function () { +        var vals = model(); +        this.OUT_VAR = vals[0]; +        this.OUT_VAR = vals[1]; +        [...] +    }, +}); + +<p id="MODELNAME"> +<!-- TODO: some built-in js that checks if in/out vars are the same, and +     alerts if not? --> +<!-- EDIT ME: this part is template --> +When the parameters are <span data-var="VARSLUG"> for VARSLUG</span>, [...], +    and the variables are <span data-var="cookies" class="TKAdjustableNumber"> +    for VAR</span>, then you get <span data-var=OUTVAR> for OUTVAR</span> +<!-- END EDIT ME --> + + diff --git a/notes/webface.txt b/notes/webface.txt index 2932f8e..78306bd 100644 --- a/notes/webface.txt +++ b/notes/webface.txt @@ -21,3 +21,18 @@ hyperphysics  plotly.js: d3.js and stack.gl      https://plot.ly/javascript/      https://github.com/plotly/plotly.js + + +##### GUI Demos + +numeric.js +    Has an ODE solver. Use with Elm? + +Tangle.js +    Brett's JS widget-y thing. Very simple. +    How did he do plots/graphs for those demos? +    http://worrydream.com/Tangle/guide.html + +KaTeX LaTeX rendering +    Faster than mathjax? +    https://github.com/Khan/KaTeX | 
