From 5a503b13e3fe40e1f2738d7765df0bebcb286d15 Mon Sep 17 00:00:00 2001 From: villberg Date: Thu, 8 Dec 2016 13:03:33 +0000 Subject: [PATCH] refs #6860 Sysdyn update site on top of Simantics Desktop git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@33407 ac1ea38d-2e2b-0410-8846-a27921b304fc --- org.simantics.sysdyn.ontology/graph.tg | Bin 202551 -> 202296 bytes .../graph/Sysdyn.pgraph | 43 +- .../graph/SysdynModelingViewpoint.pgraph | 5 +- .../org/simantics/sysdyn/SysdynResource.java | 3 + org.simantics.sysdyn.ui/META-INF/MANIFEST.MF | 1 - org.simantics.sysdyn.ui/plugin.xml | 30 +- .../sysdyn/ui/project/SysdynProject.java | 35 -- org.simantics.sysdyn/META-INF/MANIFEST.MF | 1 - .../src/org/simantics/sysdyn/Activator.java | 6 +- .../InternalGameExperimentFactory.java | 12 + .../manager/SysdynExperimentFactory.java | 9 + .../sysdyn/manager/SysdynGameExperiment.java | 415 ------------------ .../manager/SysdynGameExperimentBase.java | 7 +- .../simantics/sysdyn/manager/SysdynModel.java | 18 +- .../sysdyn/solver/ModelicaSolver.java | 93 ---- .../org/simantics/sysdyn/solver/Solvers.java | 52 +++ 16 files changed, 135 insertions(+), 595 deletions(-) create mode 100644 org.simantics.sysdyn/src/org/simantics/sysdyn/manager/InternalGameExperimentFactory.java create mode 100644 org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynExperimentFactory.java delete mode 100644 org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperiment.java delete mode 100644 org.simantics.sysdyn/src/org/simantics/sysdyn/solver/ModelicaSolver.java create mode 100644 org.simantics.sysdyn/src/org/simantics/sysdyn/solver/Solvers.java diff --git a/org.simantics.sysdyn.ontology/graph.tg b/org.simantics.sysdyn.ontology/graph.tg index 8700d51bd699ba3e45de82f120ad6e0922fa818a..21006429bec0916f51146b5021720eba0a9be123 100644 GIT binary patch literal 202296 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 IOmXV}Up)-- SYSDYN.Variable.value -- SYSDYN.Variable.values -- SYSDYN.Variable.times -- SYSDYN.Variable.names -- SYSDYN.Variable.activeDatasets -- SYSDYN.Variable.time -- SYSDYN.Variable.equation -- SYSDYN.Experiment.Run.time -- SYSDYN.HistoryDataset.sheet --> SHEET.Spreadsheet -- SYSDYN.Experiment.result --> SYSDYN.Result -- SYSDYN.Experiment.result SYSDYN.InitialCondition -- SYSDYN.InitialCondition.HasInitialValues --> MOD.PartialIC -- SYSDYN.ValveSymbol.textLocation --> SYSDYN.Location - - + --> - Structural model browser view for Sysdyn. - + --> @@ -143,7 +143,7 @@ relative="org.simantics.sysdyn.ui.trend.view"> @@ -152,7 +152,7 @@ id="org.simantics.diagram.symbollibrary" minimized="false" relationship="stack" - relative="org.simantics.sysdyn.ui.browser"> + relative="org.simantics.modeling.ui.browser"> + relative="org.simantics.modeling.ui.browser"> Delete the rest of the directory - try { - FileUtils.deleteAll(child); - child.delete(); - } catch (IOException e) { - - } - } - } - } - } - } @Override public void deconfigure() throws ProjectException { diff --git a/org.simantics.sysdyn/META-INF/MANIFEST.MF b/org.simantics.sysdyn/META-INF/MANIFEST.MF index 8bf988ce..2083aad0 100644 --- a/org.simantics.sysdyn/META-INF/MANIFEST.MF +++ b/org.simantics.sysdyn/META-INF/MANIFEST.MF @@ -26,7 +26,6 @@ Require-Bundle: org.simantics.objmap;bundle-version="0.1.0", org.simantics.spreadsheet;bundle-version="1.1.0", org.eclipse.jface.text;bundle-version="3.6.1", org.simantics.spreadsheet.ontology;bundle-version="1.2.0", - org.simantics.fmu;bundle-version="1.0.0", org.simantics.issues;bundle-version="1.1.0", org.simantics.issues.common;bundle-version="1.1.0", org.simantics.jfreechart;bundle-version="1.0.0", diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/Activator.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/Activator.java index 2970af28..39ba5a16 100644 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/Activator.java +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/Activator.java @@ -15,6 +15,9 @@ import java.io.File; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; +import org.simantics.sysdyn.manager.InternalGameExperimentFactory; +import org.simantics.sysdyn.solver.SolverSettings.SolverType; +import org.simantics.sysdyn.solver.Solvers; public class Activator implements BundleActivator { @@ -34,16 +37,17 @@ public class Activator implements BundleActivator { modelsDir.mkdir(); } plugin = this; + Solvers.registerGameExperimentFactory(SolverType.INTERNAL, new InternalGameExperimentFactory()); } @Override public void stop(BundleContext context) throws Exception { + Solvers.unregisterGameExperimentFactory(SolverType.INTERNAL); File modelsDir = Activator.getBundleContext().getDataFile("models"); if (modelsDir.exists()) { recursiveDelete(modelsDir); } plugin = null; - } public static Activator getDefault() { diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/InternalGameExperimentFactory.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/InternalGameExperimentFactory.java new file mode 100644 index 00000000..818487c3 --- /dev/null +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/InternalGameExperimentFactory.java @@ -0,0 +1,12 @@ +package org.simantics.sysdyn.manager; + +import org.simantics.db.Resource; + +public class InternalGameExperimentFactory implements SysdynExperimentFactory { + + @Override + public SysdynExperiment create(Resource experiment, Resource model) { + return new SysdynGameExperimentInternal(experiment, model); + } + +} diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynExperimentFactory.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynExperimentFactory.java new file mode 100644 index 00000000..b0c8cdf1 --- /dev/null +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynExperimentFactory.java @@ -0,0 +1,9 @@ +package org.simantics.sysdyn.manager; + +import org.simantics.db.Resource; + +public interface SysdynExperimentFactory { + + SysdynExperiment create(Resource experiment, Resource model); + +} diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperiment.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperiment.java deleted file mode 100644 index 3a396670..00000000 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperiment.java +++ /dev/null @@ -1,415 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2012, 2015 Association for Decentralized Information Management in - * Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -package org.simantics.sysdyn.manager; - -import gnu.trove.list.array.TDoubleArrayList; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.HashMap; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.simantics.Simantics; -import org.simantics.databoard.Bindings; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.Session; -import org.simantics.db.WriteGraph; -import org.simantics.db.common.request.WriteRequest; -import org.simantics.db.common.utils.Logger; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.util.Layer0Utils; -import org.simantics.db.layer0.variable.Variable; -import org.simantics.db.layer0.variable.Variables; -import org.simantics.db.request.Read; -import org.simantics.fmu.FMUControlJNI; -import org.simantics.fmu.FMUJNIException; -import org.simantics.modelica.IModelicaMonitor; -import org.simantics.modelica.ModelicaManager; -import org.simantics.modelica.SimulationLocation; -import org.simantics.modeling.PartialIC; -import org.simantics.sysdyn.SysdynResource; -import org.simantics.sysdyn.simulation.SimulationJob.HeadlessModelicaMonitor; -import org.simantics.sysdyn.solver.ISolver; -import org.simantics.sysdyn.solver.ModelicaSolver; - -/** - * Game experiment - * @author Teemu Lempinen - * - */ -public class SysdynGameExperiment extends SysdynGameExperimentBase { - - private ModelicaSolver solver; - public FMUControlJNI control; - private boolean loaded = false; - - private static boolean fortranLibrariesLoaded = false; - - public SysdynGameExperiment(Resource experiment, Resource model) { - super(experiment, model); - this.solver = new ModelicaSolver(this); - } - - public FMUControlJNI getFMUControl() { - return control; - } - - @Override - public void init(ReadGraph g) { - super.init(g); - - if(control == null) - control = new FMUControlJNI(); - - results = new TDoubleArrayList[results != null ? results.length : 0]; - - } - - @Override - protected void onExperimentDisposed() { - super.onExperimentDisposed(); - if(control!=null) { - try { - control.unloadFMU(); - loaded = false; - } catch (FMUJNIException e) { - e.printStackTrace(); - } - } - } - - private boolean isValidFMU(File file) { - if(!file.exists()) return false; - if(!file.isFile()) return false; - if(file.length() == 0) return false; - return true; - } - - - @Override - public synchronized void simulate(final IModelicaMonitor monitor, final IProgressMonitor progressMonitor, String modelName) throws IOException { - canceled = false; - - progressMonitor.subTask("Write modelica classes"); - - // Write Modelica files - String modelText = getModelicaCode(monitor, true, getOpenModelicaVersion()); - if(modelText == null) - return; - - omcVersion = ModelicaManager.getDefaultOMVersion(); - - monitor.message("Simulate " + modelName + " using OpenModelica " + omcVersion); - - progressMonitor.worked(1); - - // Write initial files and add init-parameters - progressMonitor.subTask("Write simulation files"); - HashMap inits = getExperimentParameters(monitor); - - - // add loadFile script to load all related functions and function libraries - String additionalScript = getAdditionalScripts(); - - // Create simulation files - SimulationLocation simulationLocation = createSimulationFiles(sysdynModel, modelText, inits, additionalScript, true); - progressMonitor.worked(1); - - // Load precompiled fmu if structure has not changed and it has not yet been loaded - File fmu = null; - if(!sysdynModel.isStructureModified()) { - if(!simulationLocation.executableFile.isFile()) { - fmu = loadModelFmu(simulationLocation); - } else { - fmu = simulationLocation.executableFile; - } - } - // Build the model and store previous model structure and inits that affect the building - // If there is no exe file OR the model structure has not changed, no need to build - if (fmu == null && (!isValidFMU(simulationLocation.executableFile) || sysdynModel.isStructureModified())) { - progressMonitor.subTask("Build model"); - buildModel(simulationLocation, monitor); - - saveModelFmu(simulationLocation); - } - - progressMonitor.worked(1); - - if(simulationLocation != null && !canceled) { - // Load fmu and initialize it for simulation - try { - if (!fortranLibrariesLoaded) { // Enable this when we update from OpenModelica 1.9.0beta4! - File omDir = ModelicaManager.getOMHome(); - File mingw = new File(omDir, "MinGW"); - File mbin = new File(mingw, "bin"); - - // Add MinGW path to java.library.path. This is a bit of a hack because - // java.library.path isn't intended to be set programmatically. - String newLibPath = System.getProperty("java.library.path") + File.pathSeparator + mbin.getAbsolutePath(); - System.setProperty("java.library.path", newLibPath); - Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); - fieldSysPath.setAccessible(true); - if (fieldSysPath != null) { - fieldSysPath.set(System.class.getClassLoader(), null); - } - - System.loadLibrary("libgfortran-3"); - System.out.println("Loaded libgfortran-3.dll"); - System.loadLibrary("pthreadGC2"); - System.out.println("Loaded pthreadGC2.dll"); - fortranLibrariesLoaded = true; - } - - control.loadFMUFile(simulationLocation.executableFile.getAbsolutePath()); // unzip and load fmu - loaded = true; - instantiate(); - - } catch (FMUJNIException e) { - System.err.println("SysdynGameExperiment initialization failed:\n\t" + e.getMessage()); - } catch (SecurityException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (NoSuchFieldException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalArgumentException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - process = null; - simulate(false); - } - - /** - * Load fmu file from database, if it exists for the model of this experiment - * - * @param simulationLocation SimulationLocation indicating where the fmu should be loaded - * @return Loaded fmu or null if it was not loaded from database - */ - private File loadModelFmu(SimulationLocation simulationLocation) { - File fmu = null; - try { - final String fmuLocation = simulationLocation.executableFile.getAbsolutePath(); - fmu = session.syncRequest(new Read() { - @Override - public File perform(ReadGraph graph) throws DatabaseException { - File result = null; - FileOutputStream fos; - try { - fos = new FileOutputStream(fmuLocation); - byte[] fileBArray = graph.getPossibleRelatedValue( - getModel(), SysdynResource.getInstance(graph).SysdynModel_fmuFile, Bindings.BYTE_ARRAY); - - if(fileBArray != null) { - fos.write(fileBArray); - fos.close(); - result = new File(fmuLocation); - } else { - fos.close(); - return null; - } - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - return result; - } - }); - } catch (DatabaseException e) { - e.printStackTrace(); - } - - return fmu; - } - - /** - * Save fmu file from simulationLocation to database - * @param simulationLocation Location for finding fmu - */ - private void saveModelFmu(SimulationLocation simulationLocation) { - final String fmuLocation = simulationLocation.executableFile.getAbsolutePath(); - session.asyncRequest(new WriteRequest() { - - @Override - public void perform(WriteGraph graph) throws DatabaseException { - File file = new File(fmuLocation); - byte[] fileBArray = new byte[(int)file.length()]; - FileInputStream fis; - try { - fis = new FileInputStream(file); - - fis.read(fileBArray); - graph.claimLiteral( - getModel(), - SysdynResource.getInstance(graph).SysdynModel_fmuFile, - fileBArray, Bindings.BYTE_ARRAY); - fis.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - }); - } - - - @Override - public void rewindTo(double time) { - - if(control == null) - return; - - if(time >-0.001 && time < 0.001) { - try { - simulate(new HeadlessModelicaMonitor(), new NullProgressMonitor(), sysdynModel.getConfiguration().getLabel()); - //instantiate(); - } catch (IOException e) { - Logger.defaultLogError(e); - } - } else { - System.out.println("rewindTo"); - } - } - - @Override - public void refresh(Session session) { - try { - control.initializeSimulation(); - clearResults(); - //getInitialResultValues(); - - } catch (FMUJNIException e) { - System.err.println("SysdynGameExperiment instantiate failed: " + e.getMessage()); - } - } - - private synchronized void instantiate() { - try { - HashMap inits = getExperimentParameters(null); - - control.setStepLength(stepLength); // FIXME: fixed step lenghth - control.setTime(startTime); - control.instantiateSimulation(); // instantiate simulation - - if(!control.isInitialized()) { - control.initializeSimulation(); - } - - if(inits.get("variableFilter") == null || inits.get("variableFilter").equals(".*")) - subscription = control.getAllVariables(); - else - subscription = control.filterVariables(inits.get("variableFilter")); - - // Initialize subscription indexes map for fast result reading in getValue() - if(subscriptionIndexes == null) - subscriptionIndexes = new HashMap(); - - subscriptionIndexes.clear(); - for(int i = 0; i < subscription.length; i++) { - subscriptionIndexes.put(subscription[i], i); - } - - results = new TDoubleArrayList[subscription.length]; - - // Initialize container for current simulation results - currentValues = new double[subscription.length]; - - // subscribe all variables - control.subscribe(subscription); - - clearResults(); - //getInitialResultValues(); - - Simantics.getSession().syncRequest(new WriteRequest() { - - @Override - public void perform(WriteGraph graph) throws DatabaseException { - - Resource run = Layer0Utils.getPossibleChild(graph, SysdynGameExperiment.this.experiment, getIdentifier()); - if(run == null) { - System.err.println("No run"); - return; - } - - Variable base = Variables.getVariable(graph, run); - - SysdynResource SYSDYN = SysdynResource.getInstance(graph); - - Resource ic = graph.getPossibleObject(SysdynGameExperiment.this.experiment, SYSDYN.Experiment_ic); - if(ic == null) return; - - PartialIC data = graph.getPossibleRelatedValue(ic, SYSDYN.InitialCondition_HasInitialValues, PartialIC.BINDING); - data.apply(graph, base); - - } - - }); - - } catch (FMUJNIException e) { - System.err.println("SysdynGameExperiment instantiate failed: " + e.getMessage()); - } catch (DatabaseException e) { - System.err.println("SysdynGameExperiment instantiate failed: " + e.getMessage()); - } - } - -// private synchronized void getInitialResultValues() { -// try { -// // Initialize results -// results.clear(); -// -// currentValues = control.getSubscribedResults(currentValues); -// for(int k = 0; k < subscription.length; k++) { -// results.put(subscription[k], new ArrayList()); -// results.get(subscription[k]).add(currentValues[k]); -// } -// -// ((MemoryResult)getCurrentResult()).setResult(new GameResult(this.results, this.subscription)); -// resultsChanged(); -// } catch (FMUJNIException e) { -// System.err.println("SysdynGameExperiment getInitialResultValues failed: " + e.getMessage()); -// } -// } - - @Override - public void updateSubscriptions() { - - if(!loaded) return; - - try { - if(control.isInitialized()) - currentValues = control.getSubscribedResults(currentValues); - } catch (FMUJNIException e) { - e.printStackTrace(); - } - super.updateSubscriptions(); - } - - @Override - public ISolver getSolver() { - return solver; - } - - } diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperimentBase.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperimentBase.java index 79f17152..797c8439 100644 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperimentBase.java +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynGameExperimentBase.java @@ -23,7 +23,6 @@ import org.simantics.db.common.utils.Logger; import org.simantics.db.exception.DatabaseException; import org.simantics.db.procedure.AsyncListener; import org.simantics.db.request.Read; -import org.simantics.fmu.FMUJNIException; import org.simantics.simulation.experiment.ExperimentState; import org.simantics.sysdyn.SysdynResource; import org.simantics.sysdyn.solver.ISolver; @@ -46,7 +45,7 @@ abstract public class SysdynGameExperimentBase extends OldSysdynExperiment { public HashMap subscriptionIndexes; protected double[] currentValues; // Current values from FMU. Updated with updateSubscriptions - TDoubleArrayList[] results; + protected TDoubleArrayList[] results; public String[] subscription; @@ -117,7 +116,7 @@ abstract public class SysdynGameExperimentBase extends OldSysdynExperiment { return null; } - public void setSubscribedResults(IProgressMonitor monitor, double time) throws FMUJNIException { + public void setSubscribedResults(IProgressMonitor monitor, double time) throws Exception { monitor.subTask("Get results (time = " + time + ")"); currentValues = getSolver().getSubscribedResults(currentValues); @@ -230,7 +229,7 @@ abstract public class SysdynGameExperimentBase extends OldSysdynExperiment { protected void onPublishResults() { try { setSubscribedResults(new NullProgressMonitor(), getSolver().getTime()); - } catch (FMUJNIException e) { + } catch (Exception e) { Logger.defaultLogError(e); } ((MemoryResult)getCurrentResult()).setResult(new GameResult(this, this.results, this.subscription)); diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynModel.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynModel.java index fedac97a..d4879b71 100644 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynModel.java +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/manager/SysdynModel.java @@ -12,8 +12,6 @@ *******************************************************************************/ package org.simantics.sysdyn.manager; -import gnu.trove.set.hash.THashSet; - import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -71,6 +69,9 @@ import org.simantics.sysdyn.representation.expressions.ParameterExpression; import org.simantics.sysdyn.representation.expressions.StockExpression; import org.simantics.sysdyn.solver.SolverSettings; import org.simantics.sysdyn.solver.SolverSettings.SolverType; +import org.simantics.sysdyn.solver.Solvers; + +import gnu.trove.set.hash.THashSet; /** * Maintains a Java representation of system dynamic model. @@ -435,12 +436,13 @@ public class SysdynModel implements IModel, IMappingListener, VariableSubscripti if(g.isInstanceOf(experiment, sr.PlaybackExperiment)) { exp = new SysdynPlaybackExperiment(experiment, modelResource); } else if(g.isInstanceOf(experiment, sr.GameExperiment)) { - if (SolverType.INTERNAL.equals(SolverSettings.getSelectedSolverType())) { - exp = new SysdynGameExperimentInternal(experiment, modelResource); - } - else { - exp = new SysdynGameExperiment(experiment, modelResource); - } + exp = Solvers.instantiateGameExperiment(SolverSettings.getSelectedSolverType(), experiment, modelResource); +// if (SolverType.INTERNAL.equals()) { +// exp = new SysdynGameExperimentInternal(experiment, modelResource); +// } +// else { +// exp = new SysdynGameExperiment(experiment, modelResource); +// } } else if(g.isInstanceOf(experiment, sr.SensitivityAnalysisExperiment)) { exp = new SysdynSensitivityAnalysisExperiment(experiment, modelResource); } else if(g.isInstanceOf(experiment, sr.BasicExperiment)) { diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/solver/ModelicaSolver.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/solver/ModelicaSolver.java deleted file mode 100644 index 25380681..00000000 --- a/org.simantics.sysdyn/src/org/simantics/sysdyn/solver/ModelicaSolver.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.simantics.sysdyn.solver; - -import org.simantics.fmu.FMUJNIException; -import org.simantics.sysdyn.manager.SysdynGameExperiment; -import org.simantics.sysdyn.solver.SolverSettings.SolverType; - -public class ModelicaSolver implements ISolver { - - SysdynGameExperiment exp; - - public ModelicaSolver(SysdynGameExperiment exp) { - this.exp = exp; - } - - @Override - public void initialize() throws Exception { - // TODO Auto-generated method stub - - } - - @Override - public void buildModel() throws Exception { - // TODO Auto-generated method stub - - } - - @Override - public void runSolver() throws Exception { - // TODO Auto-generated method stub - - } - - @Override - public void updateResults() throws Exception { - // TODO Auto-generated method stub - - } - - @Override - public SolverType getType() { - // TODO Auto-generated method stub - return null; - } - - @Override - public double[] getSubscribedResults(double[] array) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void prepareToStep() throws Exception { - - // initialize if not initialized - if(!exp.control.isInitialized()) { - exp.control.setTime(exp.startTime); - exp.control.initializeSimulation(); - exp.clearResults(); - // getInitialResultValues(); - } - - exp.control.setStepLength(exp.stepLength); // Set step length each time in case there has been changes - - } - - @Override - public void simulateStep() throws Exception { - exp.control.simulateStep(); - } - - @Override - public void setStepLength(double length) throws Exception { - exp.control.setStepLength(length); - } - - @Override - public double getTime() { - if(exp.control != null) { - try { - return exp.control.getTime(); - } catch (FMUJNIException e) { - } - } - return 0.0; - } - - @Override - public void setRealValue(String name, double value) throws Exception { - exp.control.setRealValue(name, value); - } - - -} diff --git a/org.simantics.sysdyn/src/org/simantics/sysdyn/solver/Solvers.java b/org.simantics.sysdyn/src/org/simantics/sysdyn/solver/Solvers.java new file mode 100644 index 00000000..4a73479b --- /dev/null +++ b/org.simantics.sysdyn/src/org/simantics/sysdyn/solver/Solvers.java @@ -0,0 +1,52 @@ +package org.simantics.sysdyn.solver; + +import java.util.HashMap; +import java.util.Map; + +import org.simantics.db.Resource; +import org.simantics.sysdyn.manager.SysdynExperiment; +import org.simantics.sysdyn.manager.SysdynExperimentFactory; + +public class Solvers { + + private Map gameExperimentFactories = new HashMap<>(); + + private static Solvers INSTANCE; + + private Solvers() { + + } + + public static synchronized Solvers getInstance() { + + if(INSTANCE == null) { + INSTANCE = new Solvers(); + } + return INSTANCE; + + } + + public static synchronized SysdynExperiment instantiateGameExperiment(SolverSettings.SolverType solver, Resource experiment, Resource model) throws Exception { + + Solvers s = getInstance(); + SysdynExperimentFactory factory = s.gameExperimentFactories.get(solver); + if(factory == null) throw new Exception("No game experiment factory registered as " + solver); + return factory.create(experiment, model); + + } + + public static synchronized void registerGameExperimentFactory(SolverSettings.SolverType solver, SysdynExperimentFactory factory) { + + Solvers s = getInstance(); + s.gameExperimentFactories.put(solver, factory); + + } + + public static synchronized void unregisterGameExperimentFactory(SolverSettings.SolverType solver) { + + Solvers s = getInstance(); + s.gameExperimentFactories.remove(solver); + + } + +} -- 2.47.1