Skip to content

Instantly share code, notes, and snippets.

@miho
Last active November 16, 2017 16:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miho/ceb8e79ee73b3653b23f95532418c5a1 to your computer and use it in GitHub Desktop.
Save miho/ceb8e79ee73b3653b23f95532418c5a1 to your computer and use it in GitHub Desktop.
@ComponentInfo(name="VectorRhsODE", category="ODE")
public class VectorRhsODE implements Serializable, VectorRhsODEInterface {
private static final long serialVersionUID = 1L;
private transient Script script;
@MethodInfo(name="", valueName="", valueStyle="default", valueOptions="", hide=false)
public VectorRhsODEInterface setExpression(
@ParamInfo(name="<html><b>Vector-valued Function f(t,u)</b>: <br>Param: double t, double[] <b>u</b><br>Return: double[] <b>f</b></hmtl>", style="code", options="") String expression) {
GroovyShell shell = new GroovyShell();
script = shell.parse("import static java.lang.Math.*;"
+ "import eu.mihosoft.vrl.types.*;"
+ "f = new double[u.length];"
+ expression);
return this;
}
@MethodInfo(name="", valueName="", valueStyle="array", valueOptions="", hide=true)
public double[] run(
@ParamInfo(name="t", style="", options="") double t,
@ParamInfo(name="u", style="array", options="") double[] u) {
if(script != null){
script.setProperty("u", u);
script.setProperty("t", t);
script.run();
return (double[]) script.getProperty("f");
} else {
throw(new RuntimeException("No user function specified."));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment