From 94e48846196f72c69c9a702e7535c00ad82d8fb8 Mon Sep 17 00:00:00 2001 From: jkauttio Date: Fri, 27 Feb 2015 15:32:48 +0000 Subject: [PATCH] Xmile export update and general cleanup THIS IS VERY WORK IN PROGRESS AND NOT FUNCTIONAL AT THE MOMENT. refs #5645 git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@31004 ac1ea38d-2e2b-0410-8846-a27921b304fc --- org.simantics.sysdyn.ontology/graph.tg | Bin 182821 -> 196968 bytes .../graph/XmileFunctions.pgraph | 303 ++++++++++++++++++ .../org/simantics/sysdyn/SysdynResource.java | 165 ++++++++++ org.simantics.sysdyn/META-INF/MANIFEST.MF | 1 + .../sysdyn/manager/FunctionUtils.java | 9 +- .../expressions/StockExpression.java | 8 + .../expressions/WithLookupExpression.java | 43 ++- .../org/simantics/sysdyn/utils/Function.java | 12 +- 8 files changed, 534 insertions(+), 7 deletions(-) create mode 100644 org.simantics.sysdyn.ontology/graph/XmileFunctions.pgraph diff --git a/org.simantics.sysdyn.ontology/graph.tg b/org.simantics.sysdyn.ontology/graph.tg index fa218087b2d4136b6810b875973ba0baade063d2..12df6c9291e3d17cbb0d9cbd4c19c3776b7cc7d6 100644 GIT binary patch literal 196968 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 literal 182821 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%0A^npf0zep5|lX*vsHoT zuic29!KDEd;ULB<~(wFwXRE#?o$WzO~#%RxF*S@_8wbm)mBY%>}YEZ+g@q< zG;WEvisM=rx&cXlr;2lXvFC=voB+Fq>;hzs_9Ja9Z84hxc6&yzAukNK;F?vmm6(v* z%O@4>>Zr=T`1c$91i~10pRBEP!|&=x-|ofwWdpgFpRqE@YftgzJGCW^?Qwf?>P|wo RsU5ra@#(f^%1qwW|6k`y#UTIy diff --git a/org.simantics.sysdyn.ontology/graph/XmileFunctions.pgraph b/org.simantics.sysdyn.ontology/graph/XmileFunctions.pgraph new file mode 100644 index 00000000..007732e3 --- /dev/null +++ b/org.simantics.sysdyn.ontology/graph/XmileFunctions.pgraph @@ -0,0 +1,303 @@ +L0 = +SYSDYN = + +XF = : SYSDYN.SysdynModelicaFunctionLibrary + +XF.Input : L0.Template + @template %name + %name + SYSDYN.Variable.type "Real" + SYSDYN.SysdynModelicaFunction.optional false + SYSDYN.SysdynModelicaFunction.unit "1" + +XF.InputOpt : L0.Template + @template %name + %name + SYSDYN.Variable.type "Real" + SYSDYN.SysdynModelicaFunction.optional true + SYSDYN.SysdynModelicaFunction.unit "1" + +XF.Output : L0.Template + @template %name + %name + SYSDYN.Variable.type "Real" + SYSDYN.SysdynModelicaFunction.unit "1" + +XF.ABS : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.ABS.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.ABS.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := abs(value);""" + +XF.ARCCOS : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.ARCCOS.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.ARCCOS.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := acos(value);""" + +XF.ARCSIN : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.ARCSIN.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.ARCSIN.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := asin(value);""" + +XF.ARCTAN : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.ARCTAN.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.ARCTAN.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := atan(value);""" + +XF.COS : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.COS.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.COS.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := cos(value);""" + +XF.EXP : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.EXP.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.EXP.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := exp(value);""" + +/*XF.INF : SYSDYN.SysdynModelicaFunction*/ + +XF.INT : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.INT.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.INT.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := integer(value);""" + +XF.LN : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.LN.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.LN.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := log(value);""" + +XF.LOG10 : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.LOG10.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.LOG10.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := log10(value);""" + +XF.MAX : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.MAX.x : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + XF.MAX.y : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.MAX.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real x; + input Real y; + output Real out; + algorithm + out := if x > y then x else y;""" + +XF.MIN : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.MIN.x : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + XF.MIN.y : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.MIN.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real x; + input Real y; + output Real out; + algorithm + out := if x < y then x else y;""" + +/*XF.PI : SYSDYN.SysdynModelicaFunction*/ + +XF.SIN : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.SIN.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.SIN.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := sin(value);""" + +XF.SQRT : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.SQRT.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.SQRT.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := sqrt(value);""" + +XF.TAN : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.TAN.value : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.TAN.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real value; + output Real out; + algorithm + out := tan(value);""" + + + +/*XF.EXPRND : SYSDYN.SysdynModelicaFunction +XF.LOGNORMAL : SYSDYN.SysdynModelicaFunction +XF.NORMAL : SYSDYN.SysdynModelicaFunction +XF.POISSON : SYSDYN.SysdynModelicaFunction +XF.RANDOM : SYSDYN.SysdynModelicaFunction + +XF.DELAY : SYSDYN.SysdynModelicaFunction +XF.DELAY1 : SYSDYN.SysdynModelicaFunction +XF.DELAY3 : SYSDYN.SysdynModelicaFunction +XF.DELAYN : SYSDYN.SysdynModelicaFunction +XF.FORCST : SYSDYN.SysdynModelicaFunction +XF.SMTH1 : SYSDYN.SysdynModelicaFunction +XF.SMTH3 : SYSDYN.SysdynModelicaFunction +XF.SMTHN : SYSDYN.SysdynModelicaFunction +XF.TREND : SYSDYN.SysdynModelicaFunction*/ + +XF.PULSE : SYSDYN.SysdynModelicaFunction + SYSDYN.SysdynModelicaFunction.inputs _ : L0.List + @L0.list + XF.PULSE.magnitude : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + XF.PULSE.first : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + XF.PULSE.interval : SYSDYN.SysdynModelicaFunction.Input + @XF.InputOpt + XF.PULSE.timeParam : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + XF.PULSE.timeStepParam : SYSDYN.SysdynModelicaFunction.Input + @XF.Input + SYSDYN.SysdynModelicaFunction.outputs _ : L0.List + @L0.list + XF.PULSE.out : SYSDYN.SysdynModelicaFunction.Output + @XF.Output + SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """ + input Real magnitude; + input Real first; + input Real interval = 0; + input Real timeParam; + input Real timeStepParam; + output Real out; + algorithm + out := if (timeParam > first - timeStepParam and timeParam < first + timeStepParam) then magnitude / timeStepParam else 0;""" + /* TODO: how to handle time step here? */ + +/*XF.RAMP : SYSDYN.SysdynModelicaFunction +XF.STEP : SYSDYN.SysdynModelicaFunction + +XF.DT : SYSDYN.SysdynModelicaFunction +XF.STARTTIME : SYSDYN.SysdynModelicaFunction +XF.STOPTIME : SYSDYN.SysdynModelicaFunction +XF.TIME : SYSDYN.SysdynModelicaFunction + +XF.IFTHENELSE : SYSDYN.SysdynModelicaFunction +XF.INIT : SYSDYN.SysdynModelicaFunction +XF.PREVIOUS : SYSDYN.SysdynModelicaFunction +XF.SELF : SYSDYN.SysdynModelicaFunction*/ \ No newline at end of file diff --git a/org.simantics.sysdyn.ontology/src/org/simantics/sysdyn/SysdynResource.java b/org.simantics.sysdyn.ontology/src/org/simantics/sysdyn/SysdynResource.java index 3a3cc77e..5d1ea570 100644 --- a/org.simantics.sysdyn.ontology/src/org/simantics/sysdyn/SysdynResource.java +++ b/org.simantics.sysdyn.ontology/src/org/simantics/sysdyn/SysdynResource.java @@ -288,6 +288,61 @@ public class SysdynResource { public final Resource Built$in_Functions_Vensim_Functions_ZIDZ_a; public final Resource Built$in_Functions_Vensim_Functions_ZIDZ_b; public final Resource Built$in_Functions_Vensim_Functions_ZIDZ_z; + public final Resource Built$in_Functions_Xmile_Functions; + public final Resource Built$in_Functions_Xmile_Functions_ABS; + public final Resource Built$in_Functions_Xmile_Functions_ABS_out; + public final Resource Built$in_Functions_Xmile_Functions_ABS_value; + public final Resource Built$in_Functions_Xmile_Functions_ARCCOS; + public final Resource Built$in_Functions_Xmile_Functions_ARCCOS_out; + public final Resource Built$in_Functions_Xmile_Functions_ARCCOS_value; + public final Resource Built$in_Functions_Xmile_Functions_ARCSIN; + public final Resource Built$in_Functions_Xmile_Functions_ARCSIN_out; + public final Resource Built$in_Functions_Xmile_Functions_ARCSIN_value; + public final Resource Built$in_Functions_Xmile_Functions_ARCTAN; + public final Resource Built$in_Functions_Xmile_Functions_ARCTAN_out; + public final Resource Built$in_Functions_Xmile_Functions_ARCTAN_value; + public final Resource Built$in_Functions_Xmile_Functions_COS; + public final Resource Built$in_Functions_Xmile_Functions_COS_out; + public final Resource Built$in_Functions_Xmile_Functions_COS_value; + public final Resource Built$in_Functions_Xmile_Functions_EXP; + public final Resource Built$in_Functions_Xmile_Functions_EXP_out; + public final Resource Built$in_Functions_Xmile_Functions_EXP_value; + public final Resource Built$in_Functions_Xmile_Functions_INT; + public final Resource Built$in_Functions_Xmile_Functions_INT_out; + public final Resource Built$in_Functions_Xmile_Functions_INT_value; + public final Resource Built$in_Functions_Xmile_Functions_Input; + public final Resource Built$in_Functions_Xmile_Functions_InputOpt; + public final Resource Built$in_Functions_Xmile_Functions_LN; + public final Resource Built$in_Functions_Xmile_Functions_LN_out; + public final Resource Built$in_Functions_Xmile_Functions_LN_value; + public final Resource Built$in_Functions_Xmile_Functions_LOG10; + public final Resource Built$in_Functions_Xmile_Functions_LOG10_out; + public final Resource Built$in_Functions_Xmile_Functions_LOG10_value; + public final Resource Built$in_Functions_Xmile_Functions_MAX; + public final Resource Built$in_Functions_Xmile_Functions_MAX_out; + public final Resource Built$in_Functions_Xmile_Functions_MAX_x; + public final Resource Built$in_Functions_Xmile_Functions_MAX_y; + public final Resource Built$in_Functions_Xmile_Functions_MIN; + public final Resource Built$in_Functions_Xmile_Functions_MIN_out; + public final Resource Built$in_Functions_Xmile_Functions_MIN_x; + public final Resource Built$in_Functions_Xmile_Functions_MIN_y; + public final Resource Built$in_Functions_Xmile_Functions_Output; + public final Resource Built$in_Functions_Xmile_Functions_PULSE; + public final Resource Built$in_Functions_Xmile_Functions_PULSE_first; + public final Resource Built$in_Functions_Xmile_Functions_PULSE_interval; + public final Resource Built$in_Functions_Xmile_Functions_PULSE_magnitude; + public final Resource Built$in_Functions_Xmile_Functions_PULSE_out; + public final Resource Built$in_Functions_Xmile_Functions_PULSE_timeParam; + public final Resource Built$in_Functions_Xmile_Functions_PULSE_timeStepParam; + public final Resource Built$in_Functions_Xmile_Functions_SIN; + public final Resource Built$in_Functions_Xmile_Functions_SIN_out; + public final Resource Built$in_Functions_Xmile_Functions_SIN_value; + public final Resource Built$in_Functions_Xmile_Functions_SQRT; + public final Resource Built$in_Functions_Xmile_Functions_SQRT_out; + public final Resource Built$in_Functions_Xmile_Functions_SQRT_value; + public final Resource Built$in_Functions_Xmile_Functions_TAN; + public final Resource Built$in_Functions_Xmile_Functions_TAN_out; + public final Resource Built$in_Functions_Xmile_Functions_TAN_value; public final Resource Built$in_Functions_interpolate; public final Resource Built$in_Functions_interpolateFull; public final Resource Built$in_Functions_interpolateFull_icol; @@ -1073,6 +1128,61 @@ public class SysdynResource { public static final String Built$in_Functions_Vensim_Functions_ZIDZ_a = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ZIDZ/a"; public static final String Built$in_Functions_Vensim_Functions_ZIDZ_b = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ZIDZ/b"; public static final String Built$in_Functions_Vensim_Functions_ZIDZ_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ZIDZ/z"; + public static final String Built$in_Functions_Xmile_Functions = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions"; + public static final String Built$in_Functions_Xmile_Functions_ABS = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ABS"; + public static final String Built$in_Functions_Xmile_Functions_ABS_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ABS/out"; + public static final String Built$in_Functions_Xmile_Functions_ABS_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ABS/value"; + public static final String Built$in_Functions_Xmile_Functions_ARCCOS = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCCOS"; + public static final String Built$in_Functions_Xmile_Functions_ARCCOS_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCCOS/out"; + public static final String Built$in_Functions_Xmile_Functions_ARCCOS_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCCOS/value"; + public static final String Built$in_Functions_Xmile_Functions_ARCSIN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCSIN"; + public static final String Built$in_Functions_Xmile_Functions_ARCSIN_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCSIN/out"; + public static final String Built$in_Functions_Xmile_Functions_ARCSIN_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCSIN/value"; + public static final String Built$in_Functions_Xmile_Functions_ARCTAN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCTAN"; + public static final String Built$in_Functions_Xmile_Functions_ARCTAN_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCTAN/out"; + public static final String Built$in_Functions_Xmile_Functions_ARCTAN_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/ARCTAN/value"; + public static final String Built$in_Functions_Xmile_Functions_COS = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/COS"; + public static final String Built$in_Functions_Xmile_Functions_COS_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/COS/out"; + public static final String Built$in_Functions_Xmile_Functions_COS_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/COS/value"; + public static final String Built$in_Functions_Xmile_Functions_EXP = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/EXP"; + public static final String Built$in_Functions_Xmile_Functions_EXP_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/EXP/out"; + public static final String Built$in_Functions_Xmile_Functions_EXP_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/EXP/value"; + public static final String Built$in_Functions_Xmile_Functions_INT = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/INT"; + public static final String Built$in_Functions_Xmile_Functions_INT_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/INT/out"; + public static final String Built$in_Functions_Xmile_Functions_INT_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/INT/value"; + public static final String Built$in_Functions_Xmile_Functions_Input = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/Input"; + public static final String Built$in_Functions_Xmile_Functions_InputOpt = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/InputOpt"; + public static final String Built$in_Functions_Xmile_Functions_LN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/LN"; + public static final String Built$in_Functions_Xmile_Functions_LN_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/LN/out"; + public static final String Built$in_Functions_Xmile_Functions_LN_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/LN/value"; + public static final String Built$in_Functions_Xmile_Functions_LOG10 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/LOG10"; + public static final String Built$in_Functions_Xmile_Functions_LOG10_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/LOG10/out"; + public static final String Built$in_Functions_Xmile_Functions_LOG10_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/LOG10/value"; + public static final String Built$in_Functions_Xmile_Functions_MAX = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MAX"; + public static final String Built$in_Functions_Xmile_Functions_MAX_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MAX/out"; + public static final String Built$in_Functions_Xmile_Functions_MAX_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MAX/x"; + public static final String Built$in_Functions_Xmile_Functions_MAX_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MAX/y"; + public static final String Built$in_Functions_Xmile_Functions_MIN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MIN"; + public static final String Built$in_Functions_Xmile_Functions_MIN_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MIN/out"; + public static final String Built$in_Functions_Xmile_Functions_MIN_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MIN/x"; + public static final String Built$in_Functions_Xmile_Functions_MIN_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/MIN/y"; + public static final String Built$in_Functions_Xmile_Functions_Output = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/Output"; + public static final String Built$in_Functions_Xmile_Functions_PULSE = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/PULSE"; + public static final String Built$in_Functions_Xmile_Functions_PULSE_first = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/PULSE/first"; + public static final String Built$in_Functions_Xmile_Functions_PULSE_interval = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/PULSE/interval"; + public static final String Built$in_Functions_Xmile_Functions_PULSE_magnitude = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/PULSE/magnitude"; + public static final String Built$in_Functions_Xmile_Functions_PULSE_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/PULSE/out"; + public static final String Built$in_Functions_Xmile_Functions_PULSE_timeParam = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/PULSE/timeParam"; + public static final String Built$in_Functions_Xmile_Functions_PULSE_timeStepParam = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/PULSE/timeStepParam"; + public static final String Built$in_Functions_Xmile_Functions_SIN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/SIN"; + public static final String Built$in_Functions_Xmile_Functions_SIN_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/SIN/out"; + public static final String Built$in_Functions_Xmile_Functions_SIN_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/SIN/value"; + public static final String Built$in_Functions_Xmile_Functions_SQRT = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/SQRT"; + public static final String Built$in_Functions_Xmile_Functions_SQRT_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/SQRT/out"; + public static final String Built$in_Functions_Xmile_Functions_SQRT_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/SQRT/value"; + public static final String Built$in_Functions_Xmile_Functions_TAN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/TAN"; + public static final String Built$in_Functions_Xmile_Functions_TAN_out = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/TAN/out"; + public static final String Built$in_Functions_Xmile_Functions_TAN_value = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Xmile%20Functions/TAN/value"; public static final String Built$in_Functions_interpolate = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolate"; public static final String Built$in_Functions_interpolateFull = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolateFull"; public static final String Built$in_Functions_interpolateFull_icol = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolateFull/icol"; @@ -1868,6 +1978,61 @@ public class SysdynResource { Built$in_Functions_Vensim_Functions_ZIDZ_a = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ZIDZ_a); Built$in_Functions_Vensim_Functions_ZIDZ_b = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ZIDZ_b); Built$in_Functions_Vensim_Functions_ZIDZ_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ZIDZ_z); + Built$in_Functions_Xmile_Functions = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions); + Built$in_Functions_Xmile_Functions_ABS = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ABS); + Built$in_Functions_Xmile_Functions_ABS_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ABS_out); + Built$in_Functions_Xmile_Functions_ABS_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ABS_value); + Built$in_Functions_Xmile_Functions_ARCCOS = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCCOS); + Built$in_Functions_Xmile_Functions_ARCCOS_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCCOS_out); + Built$in_Functions_Xmile_Functions_ARCCOS_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCCOS_value); + Built$in_Functions_Xmile_Functions_ARCSIN = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCSIN); + Built$in_Functions_Xmile_Functions_ARCSIN_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCSIN_out); + Built$in_Functions_Xmile_Functions_ARCSIN_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCSIN_value); + Built$in_Functions_Xmile_Functions_ARCTAN = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCTAN); + Built$in_Functions_Xmile_Functions_ARCTAN_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCTAN_out); + Built$in_Functions_Xmile_Functions_ARCTAN_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_ARCTAN_value); + Built$in_Functions_Xmile_Functions_COS = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_COS); + Built$in_Functions_Xmile_Functions_COS_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_COS_out); + Built$in_Functions_Xmile_Functions_COS_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_COS_value); + Built$in_Functions_Xmile_Functions_EXP = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_EXP); + Built$in_Functions_Xmile_Functions_EXP_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_EXP_out); + Built$in_Functions_Xmile_Functions_EXP_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_EXP_value); + Built$in_Functions_Xmile_Functions_INT = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_INT); + Built$in_Functions_Xmile_Functions_INT_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_INT_out); + Built$in_Functions_Xmile_Functions_INT_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_INT_value); + Built$in_Functions_Xmile_Functions_Input = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_Input); + Built$in_Functions_Xmile_Functions_InputOpt = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_InputOpt); + Built$in_Functions_Xmile_Functions_LN = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_LN); + Built$in_Functions_Xmile_Functions_LN_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_LN_out); + Built$in_Functions_Xmile_Functions_LN_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_LN_value); + Built$in_Functions_Xmile_Functions_LOG10 = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_LOG10); + Built$in_Functions_Xmile_Functions_LOG10_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_LOG10_out); + Built$in_Functions_Xmile_Functions_LOG10_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_LOG10_value); + Built$in_Functions_Xmile_Functions_MAX = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MAX); + Built$in_Functions_Xmile_Functions_MAX_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MAX_out); + Built$in_Functions_Xmile_Functions_MAX_x = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MAX_x); + Built$in_Functions_Xmile_Functions_MAX_y = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MAX_y); + Built$in_Functions_Xmile_Functions_MIN = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MIN); + Built$in_Functions_Xmile_Functions_MIN_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MIN_out); + Built$in_Functions_Xmile_Functions_MIN_x = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MIN_x); + Built$in_Functions_Xmile_Functions_MIN_y = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_MIN_y); + Built$in_Functions_Xmile_Functions_Output = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_Output); + Built$in_Functions_Xmile_Functions_PULSE = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_PULSE); + Built$in_Functions_Xmile_Functions_PULSE_first = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_PULSE_first); + Built$in_Functions_Xmile_Functions_PULSE_interval = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_PULSE_interval); + Built$in_Functions_Xmile_Functions_PULSE_magnitude = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_PULSE_magnitude); + Built$in_Functions_Xmile_Functions_PULSE_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_PULSE_out); + Built$in_Functions_Xmile_Functions_PULSE_timeParam = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_PULSE_timeParam); + Built$in_Functions_Xmile_Functions_PULSE_timeStepParam = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_PULSE_timeStepParam); + Built$in_Functions_Xmile_Functions_SIN = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_SIN); + Built$in_Functions_Xmile_Functions_SIN_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_SIN_out); + Built$in_Functions_Xmile_Functions_SIN_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_SIN_value); + Built$in_Functions_Xmile_Functions_SQRT = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_SQRT); + Built$in_Functions_Xmile_Functions_SQRT_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_SQRT_out); + Built$in_Functions_Xmile_Functions_SQRT_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_SQRT_value); + Built$in_Functions_Xmile_Functions_TAN = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_TAN); + Built$in_Functions_Xmile_Functions_TAN_out = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_TAN_out); + Built$in_Functions_Xmile_Functions_TAN_value = getResourceOrNull(graph, URIs.Built$in_Functions_Xmile_Functions_TAN_value); Built$in_Functions_interpolate = getResourceOrNull(graph, URIs.Built$in_Functions_interpolate); Built$in_Functions_interpolateFull = getResourceOrNull(graph, URIs.Built$in_Functions_interpolateFull); Built$in_Functions_interpolateFull_icol = getResourceOrNull(graph, URIs.Built$in_Functions_interpolateFull_icol); diff --git a/org.simantics.sysdyn/META-INF/MANIFEST.MF b/org.simantics.sysdyn/META-INF/MANIFEST.MF index 218edabe..9c5a86f7 100644 --- a/org.simantics.sysdyn/META-INF/MANIFEST.MF +++ b/org.simantics.sysdyn/META-INF/MANIFEST.MF @@ -43,6 +43,7 @@ Export-Package: org.simantics.sysdyn, org.simantics.sysdyn.modelImport, org.simantics.sysdyn.modelImport.model, org.simantics.sysdyn.modelImport.model.expression, + org.simantics.sysdyn.modelImport.model.support, org.simantics.sysdyn.modelParser, org.simantics.sysdyn.modelica, org.simantics.sysdyn.representation, diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/FunctionUtils.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/FunctionUtils.java index 2d860011..5b0c158a 100644 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/FunctionUtils.java +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/FunctionUtils.java @@ -36,8 +36,6 @@ import org.simantics.sysdyn.SysdynResource; public class FunctionUtils { - // SOMETHING WRONG HERE - public static List getLibraryPathsForModelica(final SysdynExperiment experiment) { try { return Simantics.getSession().syncRequest(new Read>() { @@ -205,11 +203,18 @@ public class FunctionUtils { writeLibraryFunctions(graph, library, scriptFile, stream); for(Resource sublibrary : graph.syncRequest(new ObjectsWithType(library, l0.ConsistsOf, sr.SysdynModelicaFunctionLibrary))) { String name = NameUtils.getSafeName(graph, sublibrary); + // TODO: this is an extreme hack and should be fixed at earlies conveniece + boolean xmile = false; + if (sublibrary.equals(graph.getResource(SysdynResource.URIs.Built$in_Functions_Xmile_Functions))) { + xmile = true; + } + if (xmile) stream.println("encapsulated package XMILE"); if(!builtIn) stream.println("encapsulated package " + name); writeLibrary(graph, sublibrary, scriptFile, stream, builtIn); if(!builtIn) stream.println("end " + name + ";\n"); + if (xmile) stream.println("end XMILE;\n"); } } diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/StockExpression.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/StockExpression.java index 3fb5f59f..7ed29d3e 100644 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/StockExpression.java +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/StockExpression.java @@ -154,4 +154,12 @@ public class StockExpression extends Expression { return result; } + + public String getPlainInitialEquation() { + return initialEquation; + } + + public String getPlainIntegralEquation() { + return integralEquation; + } } diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/WithLookupExpression.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/WithLookupExpression.java index 82acd991..12d6dfe3 100644 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/WithLookupExpression.java +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/representation/expressions/WithLookupExpression.java @@ -50,7 +50,7 @@ import org.simantics.sysdyn.representation.utils.UnitUtils; */ @GraphType(SysdynResource.URIs.WithLookupExpression) public class WithLookupExpression extends Expression { - + @RelatedValue(SysdynResource.URIs.WithLookupExpression_lookup) private String lookupTable; @RelatedValue(SysdynResource.URIs.WithLookupExpression_expression) @@ -62,8 +62,7 @@ public class WithLookupExpression extends Expression { equation = FormatUtils.formatExpressionForModelica(parent, equation); String range = IndexUtils.rangeToIndexes(parent, this.getArrayRange()); - return - " " + parent.getModelicaName() + (range.equals("[:]") ? "" : range) + " = interpolate(" + equation + ", " + SheetFormatUtils.reformatSheetReferences(parent, lookupTable) + ");\n"; + return " " + parent.getModelicaName() + (range.equals("[:]") ? "" : range) + " = interpolate(" + equation + ", " + SheetFormatUtils.reformatSheetReferences(parent, lookupTable) + ");\n"; } @Override @@ -183,10 +182,46 @@ public class WithLookupExpression extends Expression { svg = svg.replaceAll("[\r\n]+", ""); expression = expression + "

" + svg + "
"; } catch (NumberFormatException e) { - } catch (IOException e) { } return expression; } + + public String getLookupEquation() { + return equation; + } + + public double[] getPoints() { + // the lookup table is stored in format {{0,0},{1,2}} + String[] table = lookupTable.replaceAll("\\{|\\}", "").split(","); + double[] points = new double[table.length]; + for (int i = 0; i < table.length; i++) { + try { + points[i] = Double.parseDouble(table[i]); + } + catch (NumberFormatException e) { + // could not convert to double, do something + } + } + return points; + } + + public double[] getXPoints() { + double[] points = getPoints(); + double[] xPoints = new double[points.length/2]; + for (int i = 0; i < points.length; i++) { + xPoints[i] = points[2*i]; + } + return xPoints; + } + + public double[] getYPoints() { + double[] points = getPoints(); + double[] yPoints = new double[points.length/2]; + for (int i = 0; i < points.length; i++) { + yPoints[i] = points[2*i + 1]; + } + return yPoints; + } } diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/utils/Function.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/utils/Function.java index 21fce962..ec9ff751 100644 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/utils/Function.java +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/utils/Function.java @@ -115,7 +115,8 @@ public class Function implements Comparable{ SYSDYN, MODELICA, MODELICA_ARRAY, - VENSIM + VENSIM, + XMILE } public Function( @@ -290,6 +291,14 @@ public class Function implements Comparable{ Resource functionLibrary = graph.getPossibleResource(functionTypeUri); for(Resource r : graph.syncRequest(new ObjectsWithType(functionLibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) { String name = NameUtils.getSafeName(graph, r); + // add a XMILE prefix to xmile functions. this should probably be + // done to VENSIM functions too, but a better solutions would be + // to segregate the non-sysdyn non-modelica function libraries + // to a separate place, be it an external function library or + // something else, instead of including them everywhere by default + if (functionType.equals(Type.XMILE)) { + name = "XMILE." + name; + } ArrayList inputs = getFunctionInputs(graph, sr, r); ArrayList outputs = getFunctionOutputs(graph, sr, r); String description = getFunctionDescription(graph, r); @@ -311,6 +320,7 @@ public class Function implements Comparable{ functions.addAll(getFunctionsOfType(graph, SysdynResource.URIs.Built$in_Functions_Vensim_Functions, Type.VENSIM)); functions.addAll(getFunctionsOfType(graph, SysdynResource.URIs.Built$in_Functions_Modelica_Functions, Type.MODELICA)); functions.addAll(getFunctionsOfType(graph, SysdynResource.URIs.Built$in_Functions_Modelica_Array_Functions, Type.MODELICA_ARRAY)); + functions.addAll(getFunctionsOfType(graph, SysdynResource.URIs.Built$in_Functions_Xmile_Functions, Type.XMILE)); return functions; } -- 2.47.1