use of org.vcell.util.document.SimulationVersion in project vcell by virtualcell.
the class XmlReader method getSimulation.
/**
* This method returns a Simulation object from a XML element.
* Creation date: (4/26/2001 12:14:30 PM)
* @return cbit.vcell.solver.Simulation
* @param param org.jdom.Element
* @exception cbit.vcell.xml.XmlParseException The exception description.
*/
Simulation getSimulation(Element param, MathDescription mathDesc) throws XmlParseException {
// retrive metadata (if any)
SimulationVersion simulationVersion = getSimulationVersion(param.getChild(XMLTags.VersionTag, vcNamespace));
// create new simulation
Simulation simulation = null;
if (simulationVersion != null) {
simulation = new Simulation(simulationVersion, mathDesc);
} else {
simulation = new Simulation(mathDesc);
}
// set attributes
String name = unMangle(param.getAttributeValue(XMLTags.NameAttrTag));
try {
simulation.setName(name);
// String annotation = param.getAttributeValue(XMLTags.AnnotationAttrTag);
// if (annotation!=null) {
// simulation.setDescription(unMangle(annotation));
// }
// Add Annotation
String annotationText = param.getChildText(XMLTags.AnnotationTag, vcNamespace);
if (annotationText != null && annotationText.length() > 0) {
simulation.setDescription(unMangle(annotationText));
}
} catch (java.beans.PropertyVetoException e) {
throw new XmlParseException(e);
}
// Retrieve MathOverrides
simulation.setMathOverrides(getMathOverrides(param.getChild(XMLTags.MathOverridesTag, vcNamespace), simulation));
// Retrieve SolverTaskDescription
try {
simulation.setSolverTaskDescription(getSolverTaskDescription(param.getChild(XMLTags.SolverTaskDescriptionTag, vcNamespace), simulation));
} catch (java.beans.PropertyVetoException e) {
e.printStackTrace();
throw new XmlParseException("A PropertyVetoException was fired when setting the SolverTaskDescroiption object to the Simulation object " + name, e);
}
Element dataProcessingInstructionsElement = param.getChild(XMLTags.DataProcessingInstructionsTag, vcNamespace);
if (dataProcessingInstructionsElement != null) {
String scriptName = dataProcessingInstructionsElement.getAttributeValue(XMLTags.DataProcessingScriptNameAttrTag);
String scriptInput = dataProcessingInstructionsElement.getText();
simulation.setDataProcessingInstructions(new DataProcessingInstructions(scriptName, scriptInput));
}
// Retrieve MeshEspecification (if any)
Element tempElement = param.getChild(XMLTags.MeshSpecTag, vcNamespace);
if (tempElement != null) {
try {
simulation.setMeshSpecification(getMeshSpecification(tempElement, mathDesc.getGeometry()));
} catch (java.beans.PropertyVetoException e) {
e.printStackTrace();
throw new XmlParseException("A ProperyVetoException was fired when setting the MeshSpecification to a new Simulation!", e);
}
}
return simulation;
}
use of org.vcell.util.document.SimulationVersion in project vcell by virtualcell.
the class XmlReader method getSimulationVersion.
/**
* This method returns a Version object from an XML representation.
* Creation date: (3/16/2001 3:41:24 PM)
* @return cbit.sql.Version
* @param param org.jdom.Element
*/
private SimulationVersion getSimulationVersion(Element xmlVersion) throws XmlParseException {
if (xmlVersion == null) {
return null;
}
// determine if it should be processed using the 'fromVersionable'
if (xmlVersion.getAttributeValue(XMLTags.FromVersionableTag) == null || Boolean.valueOf(xmlVersion.getAttributeValue(XMLTags.FromVersionableTag)).booleanValue() || this.readKeysFlag == false) {
// this came from a versionable object, so skip! Or it should not explicitly import the information inside the Version
return null;
}
// Read all the attributes
// *name
String name = unMangle(xmlVersion.getAttributeValue(XMLTags.NameAttrTag));
// *key
String temp = xmlVersion.getAttributeValue(XMLTags.KeyValueAttrTag);
KeyValue key = new KeyValue(temp);
// *owner
Element tempElement = xmlVersion.getChild(XMLTags.OwnerTag, vcNamespace);
User owner = new User(unMangle(tempElement.getAttributeValue(XMLTags.NameAttrTag)), new KeyValue(tempElement.getAttributeValue(XMLTags.IdentifierAttrTag)));
// *access
GroupAccess groupAccess = getGroupAccess(xmlVersion.getChild(XMLTags.GroupAccessTag, vcNamespace));
// *Branchpointref
temp = xmlVersion.getAttributeValue(XMLTags.BranchPointRefTag);
KeyValue branchpointref = null;
if (temp != null) {
branchpointref = new KeyValue(temp);
}
// *BranchID
java.math.BigDecimal branchId = new java.math.BigDecimal(xmlVersion.getAttributeValue(XMLTags.BranchIdAttrTag));
// *Flag
temp = xmlVersion.getAttributeValue(XMLTags.FlagAttrTag);
VersionFlag flag = VersionFlag.fromInt(Integer.parseInt(temp));
// *Date
java.util.Date date = null;
temp = xmlVersion.getAttributeValue(XMLTags.DateAttrTag);
if (temp != null) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(BeanUtils.vcDateFormat, Locale.US);
date = simpleDateFormat.parse(temp);
} catch (java.text.ParseException e) {
e.printStackTrace();
throw new XmlParseException("Invalid date:" + temp, e);
}
}
// *DataSimulationRef
KeyValue parentSimRefKey = null;
tempElement = xmlVersion.getChild(XMLTags.ParentSimRefTag, vcNamespace);
if (tempElement != null) {
parentSimRefKey = new KeyValue(tempElement.getAttributeValue(XMLTags.KeyValueAttrTag));
}
// *Annotation
String annotation = null;
String annotationText = xmlVersion.getChildText(XMLTags.AnnotationTag, vcNamespace);
if (annotationText != null && annotationText.length() > 0) {
annotation = unMangle(annotationText);
}
// Create and return the version object
return new SimulationVersion(key, name, owner, groupAccess, branchpointref, branchId, date, flag, annotation, parentSimRefKey);
}
use of org.vcell.util.document.SimulationVersion in project vcell by virtualcell.
the class ParameterEstimationTaskSimulatorIDA method getRowColumnRestultSetByBestEstimations.
public RowColumnResultSet getRowColumnRestultSetByBestEstimations(ParameterEstimationTask parameterEstimationTask, String[] paramNames, double[] paramValues) throws Exception {
// create a temp simulation based on math description
KeyValue key = new KeyValue("" + Math.abs(new Random().nextLong()));
SimulationVersion dummyVersion = new SimulationVersion(key, "name", new User("temp", new KeyValue("1")), null, null, null, null, null, null, null);
Simulation simulation = new Simulation(dummyVersion, parameterEstimationTask.getSimulationContext().getMathDescription());
ReferenceData refData = parameterEstimationTask.getModelOptimizationSpec().getReferenceData();
double[] times = refData.getDataByColumn(0);
double endTime = times[times.length - 1];
ExplicitOutputTimeSpec exTimeSpec = new ExplicitOutputTimeSpec(times);
// set simulation ending time and output interval
simulation.getSolverTaskDescription().setTimeBounds(new TimeBounds(0, endTime));
simulation.getSolverTaskDescription().setOutputTimeSpec(exTimeSpec);
// set parameters as math overrides
MathOverrides mathOverrides = simulation.getMathOverrides();
for (int i = 0; i < paramNames.length; i++) {
mathOverrides.putConstant(new Constant(paramNames[i], new Expression(paramValues[i])));
}
SimulationTask simTask = new SimulationTask(new SimulationJob(simulation, 0, null), 0);
IDASolverStandalone idaSolver = new IDASolverStandalone(simTask, ResourceUtil.getLocalSimDir("temp"), false);
// startSolver();
idaSolver.runSolver();
Thread.sleep(1000);
long startTimeMS = System.currentTimeMillis();
while (idaSolver.getSolverStatus().isRunning() && System.currentTimeMillis() < (startTimeMS + 10000L)) {
Thread.sleep(500);
}
ODESolverResultSet resultset = idaSolver.getODESolverResultSet();
return resultset;
}
use of org.vcell.util.document.SimulationVersion in project vcell by virtualcell.
the class FRAPStudy method createNewRefBioModel.
public static BioModel createNewRefBioModel(FRAPStudy sourceFrapStudy, String baseDiffusionRate, TimeStep tStep, KeyValue simKey, User owner, FieldDataIdentifierSpec psfFDIS, int startingIndexForRecovery) throws Exception {
if (owner == null) {
throw new Exception("Owner is not defined");
}
ROI cellROI_2D = sourceFrapStudy.getFrapData().getRoi(FRAPData.VFRAP_ROI_ENUM.ROI_CELL.name());
Extent extent = sourceFrapStudy.getFrapData().getImageDataset().getExtent();
TimeBounds timeBounds = FRAPOptData.getEstimatedRefTimeBound(sourceFrapStudy);
double timeStepVal = FRAPOptData.REFERENCE_DIFF_DELTAT;
int numX = cellROI_2D.getRoiImages()[0].getNumX();
int numY = cellROI_2D.getRoiImages()[0].getNumY();
int numZ = cellROI_2D.getRoiImages().length;
short[] shortPixels = cellROI_2D.getRoiImages()[0].getPixels();
byte[] bytePixels = new byte[numX * numY * numZ];
final byte EXTRACELLULAR_PIXVAL = 0;
final byte CYTOSOL_PIXVAL = 1;
for (int i = 0; i < bytePixels.length; i++) {
if (shortPixels[i] != 0) {
bytePixels[i] = CYTOSOL_PIXVAL;
}
}
VCImage maskImage;
try {
maskImage = new VCImageUncompressed(null, bytePixels, extent, numX, numY, numZ);
} catch (ImageException e) {
e.printStackTrace();
throw new RuntimeException("failed to create mask image for geometry");
}
Geometry geometry = new Geometry("geometry", maskImage);
if (geometry.getGeometrySpec().getNumSubVolumes() != 2) {
throw new Exception("Cell ROI has no ExtraCellular.");
}
int subVolume0PixVal = ((ImageSubVolume) geometry.getGeometrySpec().getSubVolume(0)).getPixelValue();
geometry.getGeometrySpec().getSubVolume(0).setName((subVolume0PixVal == EXTRACELLULAR_PIXVAL ? EXTRACELLULAR_NAME : CYTOSOL_NAME));
int subVolume1PixVal = ((ImageSubVolume) geometry.getGeometrySpec().getSubVolume(1)).getPixelValue();
geometry.getGeometrySpec().getSubVolume(1).setName((subVolume1PixVal == CYTOSOL_PIXVAL ? CYTOSOL_NAME : EXTRACELLULAR_NAME));
geometry.getGeometrySurfaceDescription().updateAll();
BioModel bioModel = new BioModel(null);
bioModel.setName("unnamed");
Model model = new Model("model");
bioModel.setModel(model);
Feature extracellular = model.addFeature(EXTRACELLULAR_NAME);
Feature cytosol = model.addFeature(CYTOSOL_NAME);
Membrane plasmaMembrane = model.addMembrane(PLASMAMEMBRANE_NAME);
String roiDataName = FRAPStudy.ROI_EXTDATA_NAME;
final int ONE_DIFFUSION_SPECIES_COUNT = 1;
final int MOBILE_SPECIES_INDEX = 0;
Expression[] diffusionConstants = new Expression[ONE_DIFFUSION_SPECIES_COUNT];
Species[] species = new Species[ONE_DIFFUSION_SPECIES_COUNT];
SpeciesContext[] speciesContexts = new SpeciesContext[ONE_DIFFUSION_SPECIES_COUNT];
Expression[] initialConditions = new Expression[ONE_DIFFUSION_SPECIES_COUNT];
// Mobile Species
diffusionConstants[MOBILE_SPECIES_INDEX] = new Expression(baseDiffusionRate);
species[MOBILE_SPECIES_INDEX] = new Species(SPECIES_NAME_PREFIX_MOBILE, "Mobile bleachable species");
speciesContexts[MOBILE_SPECIES_INDEX] = new SpeciesContext(null, species[MOBILE_SPECIES_INDEX].getCommonName(), species[MOBILE_SPECIES_INDEX], cytosol);
FieldFunctionArguments postBleach_first = new FieldFunctionArguments(roiDataName, "postbleach_first", new Expression(0), VariableType.VOLUME);
FieldFunctionArguments prebleach_avg = new FieldFunctionArguments(roiDataName, "prebleach_avg", new Expression(0), VariableType.VOLUME);
Expression expPostBleach_first = new Expression(postBleach_first.infix());
Expression expPreBleach_avg = new Expression(prebleach_avg.infix());
initialConditions[MOBILE_SPECIES_INDEX] = Expression.div(expPostBleach_first, expPreBleach_avg);
SimulationContext simContext = new SimulationContext(bioModel.getModel(), geometry);
bioModel.addSimulationContext(simContext);
FeatureMapping cytosolFeatureMapping = (FeatureMapping) simContext.getGeometryContext().getStructureMapping(cytosol);
FeatureMapping extracellularFeatureMapping = (FeatureMapping) simContext.getGeometryContext().getStructureMapping(extracellular);
MembraneMapping plasmaMembraneMapping = (MembraneMapping) simContext.getGeometryContext().getStructureMapping(plasmaMembrane);
SubVolume cytSubVolume = geometry.getGeometrySpec().getSubVolume(CYTOSOL_NAME);
SubVolume exSubVolume = geometry.getGeometrySpec().getSubVolume(EXTRACELLULAR_NAME);
SurfaceClass pmSurfaceClass = geometry.getGeometrySurfaceDescription().getSurfaceClass(exSubVolume, cytSubVolume);
cytosolFeatureMapping.setGeometryClass(cytSubVolume);
extracellularFeatureMapping.setGeometryClass(exSubVolume);
plasmaMembraneMapping.setGeometryClass(pmSurfaceClass);
cytosolFeatureMapping.getUnitSizeParameter().setExpression(new Expression(1.0));
extracellularFeatureMapping.getUnitSizeParameter().setExpression(new Expression(1.0));
plasmaMembraneMapping.getUnitSizeParameter().setExpression(new Expression(1.0));
for (int i = 0; i < initialConditions.length; i++) {
model.addSpecies(species[i]);
model.addSpeciesContext(speciesContexts[i]);
}
for (int i = 0; i < speciesContexts.length; i++) {
SpeciesContextSpec scs = simContext.getReactionContext().getSpeciesContextSpec(speciesContexts[i]);
scs.getInitialConditionParameter().setExpression(initialConditions[i]);
scs.getDiffusionParameter().setExpression(diffusionConstants[i]);
}
MathMapping mathMapping = simContext.createNewMathMapping();
MathDescription mathDesc = mathMapping.getMathDescription();
// Add PSF function
mathDesc.addVariable(new Function(Simulation.PSF_FUNCTION_NAME, new Expression(psfFDIS.getFieldFuncArgs().infix()), null));
simContext.setMathDescription(mathDesc);
SimulationVersion simVersion = new SimulationVersion(simKey, "sim1", owner, new GroupAccessNone(), new KeyValue("0"), new BigDecimal(0), new Date(), VersionFlag.Current, "", null);
Simulation newSimulation = new Simulation(simVersion, simContext.getMathDescription());
newSimulation.getSolverTaskDescription().setSolverDescription(SolverDescription.FiniteVolumeStandalone);
simContext.addSimulation(newSimulation);
newSimulation.getSolverTaskDescription().setTimeBounds(timeBounds);
newSimulation.getSolverTaskDescription().setOutputTimeSpec(new UniformOutputTimeSpec(timeStepVal));
newSimulation.getMeshSpecification().setSamplingSize(cellROI_2D.getISize());
newSimulation.getSolverTaskDescription().setTimeStep(new TimeStep(timeStepVal, timeStepVal, timeStepVal));
return bioModel;
}
use of org.vcell.util.document.SimulationVersion in project vcell by virtualcell.
the class Generate2DExpModelOpAbstract method generateModel.
public final GeneratedModelResults generateModel(double deltaX, double bleachRadius, double cellRadius, double bleachDuration, double bleachRate, double postbleachDelay, double postbleachDuration, double psfSigma, double outputTimeStep, double primaryDiffusionRate, double primaryFraction, double bleachMonitorRate, double secondaryDiffusionRate, double secondaryFraction, String extracellularName, String cytosolName, Context context) throws PropertyVetoException, ExpressionException, GeometryException, ImageException, ModelException, MappingException, MathException, MatrixException {
double domainSize = 2.2 * cellRadius;
Extent extent = new Extent(domainSize, domainSize, 1.0);
Origin origin = new Origin(-extent.getX() / 2.0, -extent.getY() / 2.0, -extent.getZ() / 2.0);
String EXTRACELLULAR_NAME = extracellularName;
String CYTOSOL_NAME = cytosolName;
AnalyticSubVolume cytosolSubVolume = new AnalyticSubVolume(CYTOSOL_NAME, new Expression("pow(x,2)+pow(y,2)<pow(" + cellRadius + ",2)"));
AnalyticSubVolume extracellularSubVolume = new AnalyticSubVolume(EXTRACELLULAR_NAME, new Expression(1.0));
Geometry geometry = new Geometry("geometry", 2);
geometry.getGeometrySpec().setExtent(extent);
geometry.getGeometrySpec().setOrigin(origin);
geometry.getGeometrySpec().addSubVolume(extracellularSubVolume);
geometry.getGeometrySpec().addSubVolume(cytosolSubVolume, true);
geometry.getGeometrySurfaceDescription().updateAll();
BioModel bioModel = new BioModel(null);
bioModel.setName("unnamed");
Model model = new Model("model");
bioModel.setModel(model);
model.addFeature(EXTRACELLULAR_NAME);
Feature extracellular = (Feature) model.getStructure(EXTRACELLULAR_NAME);
model.addFeature(CYTOSOL_NAME);
Feature cytosol = (Feature) model.getStructure(CYTOSOL_NAME);
SpeciesContext immobileSC = model.createSpeciesContext(cytosol);
SpeciesContext primarySC = model.createSpeciesContext(cytosol);
SpeciesContext secondarySC = model.createSpeciesContext(cytosol);
//
// common bleaching rate for all species
//
double bleachStart = 10 * outputTimeStep - bleachDuration - postbleachDelay;
double bleachEnd = bleachStart + bleachDuration;
Expression bleachRateExp = createBleachExpression(bleachRadius, bleachRate, bleachMonitorRate, bleachStart, bleachEnd);
{
SimpleReaction immobileBWM = model.createSimpleReaction(cytosol);
GeneralKinetics immobileBWMKinetics = new GeneralKinetics(immobileBWM);
immobileBWM.setKinetics(immobileBWMKinetics);
immobileBWM.addReactant(immobileSC, 1);
immobileBWMKinetics.getReactionRateParameter().setExpression(Expression.mult(bleachRateExp, new Expression(immobileSC.getName())));
}
{
SimpleReaction primaryBWM = model.createSimpleReaction(cytosol);
GeneralKinetics primaryBWMKinetics = new GeneralKinetics(primaryBWM);
primaryBWM.setKinetics(primaryBWMKinetics);
primaryBWM.addReactant(primarySC, 1);
primaryBWMKinetics.getReactionRateParameter().setExpression(Expression.mult(bleachRateExp, new Expression(primarySC.getName())));
}
{
SimpleReaction secondaryBWM = model.createSimpleReaction(cytosol);
GeneralKinetics secondaryBWMKinetics = new GeneralKinetics(secondaryBWM);
secondaryBWM.setKinetics(secondaryBWMKinetics);
secondaryBWM.addReactant(secondarySC, 1);
secondaryBWMKinetics.getReactionRateParameter().setExpression(Expression.mult(bleachRateExp, new Expression(secondarySC.getName())));
}
// create simulation context
SimulationContext simContext = bioModel.addNewSimulationContext("simContext", SimulationContext.Application.NETWORK_DETERMINISTIC);
simContext.setGeometry(geometry);
FeatureMapping cytosolFeatureMapping = (FeatureMapping) simContext.getGeometryContext().getStructureMapping(cytosol);
FeatureMapping extracellularFeatureMapping = (FeatureMapping) simContext.getGeometryContext().getStructureMapping(extracellular);
SubVolume cytSubVolume = geometry.getGeometrySpec().getSubVolume(CYTOSOL_NAME);
SubVolume exSubVolume = geometry.getGeometrySpec().getSubVolume(EXTRACELLULAR_NAME);
// unused? SurfaceClass pmSurfaceClass = geometry.getGeometrySurfaceDescription().getSurfaceClass(exSubVolume, cytSubVolume);
cytosolFeatureMapping.setGeometryClass(cytSubVolume);
extracellularFeatureMapping.setGeometryClass(exSubVolume);
cytosolFeatureMapping.getUnitSizeParameter().setExpression(new Expression(1.0));
extracellularFeatureMapping.getUnitSizeParameter().setExpression(new Expression(1.0));
double fixedFraction = 1.0 - primaryFraction - secondaryFraction;
SpeciesContextSpec immobileSCS = simContext.getReactionContext().getSpeciesContextSpec(immobileSC);
immobileSCS.getInitialConditionParameter().setExpression(new Expression(fixedFraction));
immobileSCS.getDiffusionParameter().setExpression(new Expression(0.0));
SpeciesContextSpec primarySCS = simContext.getReactionContext().getSpeciesContextSpec(primarySC);
primarySCS.getInitialConditionParameter().setExpression(new Expression(primaryFraction));
primarySCS.getDiffusionParameter().setExpression(new Expression(primaryDiffusionRate));
SpeciesContextSpec secondarySCS = simContext.getReactionContext().getSpeciesContextSpec(secondarySC);
secondarySCS.getInitialConditionParameter().setExpression(new Expression(secondaryFraction));
secondarySCS.getDiffusionParameter().setExpression(new Expression(secondaryDiffusionRate));
simContext.getMicroscopeMeasurement().addFluorescentSpecies(immobileSC);
simContext.getMicroscopeMeasurement().addFluorescentSpecies(primarySC);
simContext.getMicroscopeMeasurement().addFluorescentSpecies(secondarySC);
simContext.getMicroscopeMeasurement().setConvolutionKernel(new GaussianConvolutionKernel(new Expression(psfSigma), new Expression(psfSigma)));
MathMapping mathMapping = simContext.createNewMathMapping();
MathDescription mathDesc = mathMapping.getMathDescription();
simContext.setMathDescription(mathDesc);
User owner = context.getDefaultOwner();
int meshSize = (int) (domainSize / deltaX);
if (meshSize % 2 == 0) {
// want an odd-sized mesh in x and y ... so centered at the origin.
meshSize = meshSize + 1;
}
TimeBounds timeBounds = new TimeBounds(0.0, postbleachDuration);
//
// simulation to use for data generation (output time steps as recorded by the microscope)
//
double bleachBlackoutBegin = bleachStart - postbleachDelay;
double bleachBlackoutEnd = bleachEnd + postbleachDelay;
// ArrayList<Double> times = new ArrayList<Double>();
// double time = 0;
// while (time<=timeBounds.getEndingTime()){
// if (time<=bleachBlackoutBegin || time>bleachBlackoutEnd){
// // postbleachDelay is the time it takes to switch the filters.
// times.add(time);
// }
// time += outputTimeStep.getData();
// }
// double[] timeArray = new double[times.size()];
// for (int i=0;i<timeArray.length;i++){
// timeArray[i] = times.get(i);
// }
// OutputTimeSpec fakeDataSimOutputTimeSpec = new ExplicitOutputTimeSpec(timeArray);
OutputTimeSpec fakeDataSimOutputTimeSpec = new UniformOutputTimeSpec(outputTimeStep);
KeyValue fakeDataSimKey = context.createNewKeyValue();
SimulationVersion fakeDataSimVersion = new SimulationVersion(fakeDataSimKey, "fakeDataSim", owner, new GroupAccessNone(), new KeyValue("0"), new BigDecimal(0), new Date(), VersionFlag.Current, "", null);
Simulation fakeDataSim = new Simulation(fakeDataSimVersion, mathDesc);
simContext.addSimulation(fakeDataSim);
fakeDataSim.getSolverTaskDescription().setTimeBounds(timeBounds);
fakeDataSim.getMeshSpecification().setSamplingSize(new ISize(meshSize, meshSize, 1));
fakeDataSim.getSolverTaskDescription().setSolverDescription(SolverDescription.SundialsPDE);
fakeDataSim.getSolverTaskDescription().setOutputTimeSpec(fakeDataSimOutputTimeSpec);
//
// simulation to use for viewing the protocol (output time steps to understand the physics)
//
KeyValue fullExperimentSimKey = context.createNewKeyValue();
SimulationVersion fullExperimentSimVersion = new SimulationVersion(fullExperimentSimKey, "fullExperiment", owner, new GroupAccessNone(), new KeyValue("0"), new BigDecimal(0), new Date(), VersionFlag.Current, "", null);
Simulation fullExperimentSim = new Simulation(fullExperimentSimVersion, mathDesc);
simContext.addSimulation(fullExperimentSim);
OutputTimeSpec fullExperimentOutputTimeSpec = new UniformOutputTimeSpec(outputTimeStep / 10.0);
fullExperimentSim.getSolverTaskDescription().setTimeBounds(timeBounds);
fullExperimentSim.getMeshSpecification().setSamplingSize(new ISize(meshSize, meshSize, 1));
fullExperimentSim.getSolverTaskDescription().setSolverDescription(SolverDescription.SundialsPDE);
fullExperimentSim.getSolverTaskDescription().setOutputTimeSpec(fullExperimentOutputTimeSpec);
GeneratedModelResults results = new GeneratedModelResults();
results.bioModel_2D = bioModel;
results.simulation_2D = fakeDataSim;
results.bleachBlackoutBeginTime = bleachBlackoutBegin;
results.bleachBlackoutEndTime = bleachBlackoutEnd;
return results;
}
Aggregations