blob: 66d915cc5b4aad3516f9cc847666dc695c55a44a [file] [log] [blame]
// IntegrationLabel
package org.eclipse.stem.core.graph;
/*******************************************************************************
* Copyright (c) 2009 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
import org.eclipse.emf.ecore.EObject;
import org.eclipse.stem.core.model.Decorator;
import org.eclipse.stem.core.model.STEMTime;
/**
* The interface is implemented by any label that is able to switch between
* current and next value optionally using an integration technique, for instance
* the Runge Kutta numerical ODE solver.
*/
public interface IntegrationLabel extends EObject {
/**
* @return The current value at this simulation cycle
* @model volatile="true" changeable="false" resolveProxies="false"
*/
LabelValue getCurrentValue();
/**
* @return The next value at next simulation cycle
* @model volatile="true" changeable="false" resolveProxies="false"
*/
LabelValue getNextValue();
/**
* @return The delta value that when added to the current value provides the next value
* @model volatile="true" changeable="false" resolveProxies="false"
*/
LabelValue getDeltaValue();
// The rest of the label values are for the Runge Kutta solver
/**
* @return The temporary value used when the integrating solver advances to the next step
* @model volatile="true" changeable="false" resolveProxies="false"
*/
LabelValue getTempValue();
/**
* @return The value to probe and calculate delta. This is the label value any disease model should use
* @model volatile="true" changeable="false" resolveProxies="false"
*/
LabelValue getProbeValue();
/**
* @return The scale used to scale the error calculated by the integrating solver
* @model volatile="true" changeable="false" resolveProxies="false"
*/
LabelValue getErrorScale();
// This label value is used for population model decorators to restore the original
// population value to the correct number at the beginning of a simulation
/**
* @return The original value
* @model volatile="true" changeable="false" resolveProxies="false"
*/
LabelValue getOriginalValue();
/**
* Return the decorator
*
*@return Decorator
*/
Decorator getDecorator();
/**
* setNextValueValud
*
* @param value true if valid
*/
public void setNextValueValid(boolean value);
/**
* Get the identifier, e.g. population identifier
*
*@return String The identifier
*/
public String getIdentifier();
/**
* reset. Reset the label using the
* stem time
*
* @param time STEM time
*/
public void reset(STEMTime time);
}