Class EvoLudoGWT
- All Implemented Interfaces:
MersenneTwister.Chronometer, CLOProvider
- Author:
- Christoph Hauert
-
Nested Class Summary
Nested classes/interfaces inherited from class EvoLudo
EvoLudo.Directive -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleantruewhile hidden chunk updates are scheduled or in progress.private doubleThe update milestone at which the current visible step is complete.private doubleThe original report interval while scheduled, chunked updates are in progress.final CLOptionCommand line option to request that the EvoLudo model signals the completion of of the layouting procedure for taking snapshots, e.g.private final DurationCreate timer to measure execution times since instantiation.private booleantrueafter a fatal execution error has disabled the lab.(package private) ElementThe reference to the fullscreen element.(package private) EvoLudoWebThe reference to the GUI.private static final intTarget number of microscopic IBS updates processed in one hidden GWT chunk.private static final doubleTolerance for floating point comparisons of update milestones.(package private) EvoLudo.DirectiveThe field to store the command to execute after parsing the command line options.private static final intTarget number of ODE/SDE integration increments processed in one hidden GWT chunk.private doubleHidden chunk size in model time used for the currently scheduled relaxation.private booleantruewhile a one-off scheduled calculation is in progress and should drive the busy spinner even though the model is not in running mode.(package private) TimerTimer for running models.Fields inherited from class EvoLudo
activeModel, activeModule, changeListeners, clo, cloController, cloRun, cloSeed, COPYRIGHT, DELAY_INCR, DELAY_INIT, DELAY_MAX, DELAY_MIN, ID, isRunning, isSuspended, lifecycleController, logger, modules, pendingAction, resetRequested, rng, runController, sampleListeners, snapLayoutTimeout, stateEncoder -
Constructor Summary
ConstructorsConstructorDescriptionEvoLudoGWT(EvoLudoWeb gui) Construct EvoLudo controller for GWT applications (web or ePub). -
Method Summary
Modifier and TypeMethodDescriptionvoidStop all execution paths after a fatal error, without reporting it again.voidcollectCLO(CLOParser prsr) All providers of command line options must implement this method to collect their options.createNetwork2D(AbstractGeometry geometry) Generate 2D network.createNetwork3D(AbstractGeometry geometry) Generate 3D network.intCalculate elapsed time since instantiation in milliseconds.voidexecute(EvoLudo.Directive directive) Executedirectivein JRE or GWT environments.voidExport the current state of the engine using the appropriate means available in the current environment (GWT/JRE).private voidfinishChunkedStep(boolean cont) Complete the current hidden chunked step and forward the visible-step result.private voidfinishScheduledRelaxation(boolean interrupted, boolean quiet) Complete or abort a scheduled relaxation.voidCalled whenever the model starts its calculations.voidCalled after the population has reached an absorbing state (or has converged to an equilibrium state).voidCalled whenever a new model has finished loading.voidCalled whenever the current module has finished unloading.private static doublegetChunkStep(Model model) Determine the hidden chunk step formodel.getGit()Gets current git version of code base.Gets the compilation date of the current git version.private doubleCalculate the next regular report boundary for the active chunked model.voidguiReady()Called when the GUI has finished loading and the dimensions of all elements are known.private voidhandleFatalExecutionError(String context, Throwable error) Disable further execution after a fatal error and notify the GUI.booleanCheck whether the current scheduled busy phase is a chunked initial relaxation.voidNotification from GUI that layout process has finished.voidlogProgress(String msg) GWT uses the config channel of the logger to report progressbooleanmodelRelax(boolean quiet) Relax model bytimeRelaxsteps and notify all listeners if requested.voidnext()Advances the EvoLudo model by a single step.intparseCLO(EvoLudo.Directive command) Parse command line options and set thecommandto execute after parsing completed.protected String[]preprocessCLO(String[] cloarray) Pre-process array of command line arguments.private voidReset temporary state used for hidden chunking.private voidReset temporary state used for scheduled initial relaxation.booleanRestore state of EvoLudo model from saved plist, which encodes engine state.voidrun()Start the EvoLudo model and calculate the dynamics one step at a time.private booleanrunGuarded(String context, Scheduler.RepeatingCommand action) Execute a scheduled command behind a fatal error boundary.private voidrunGuarded(String context, Runnable action) Execute work behind a fatal error boundary.private voidscheduleChunkedStep(double chunkStep) Schedule a visible report step as a sequence of hidden substeps.private voidscheduleModelRelaxation(boolean quiet) Schedule chunked relaxation of the initial model state.private voidSchedule the next sample.private voidSchedule the next step.voidsetDelay(int delay) Set delay between subsequent updates.voidsetFullscreen(boolean fullscreen) Enter or exit fullscreen mode.voidsetFullscreenElement(Element element) Set the fullscreen element.private voidsetScheduledBusy(boolean busy) Track whether one-off scheduled calculations are in progress.voidshowHelp()Show help on command line options.Methods inherited from class EvoLudo
addChangeListener, addCLOProvider, addLifecycleListener, addModule, addRunListener, addSampleListener, createModel, debug, decreaseDelay, encodeState, fatal, fireModelChanged, fireModelInit, fireModelLoaded, fireModelRelaxed, fireModelReset, fireModelSample, fireModuleLoaded, fireModuleRestored, fireSettingsChanged, getCLO, getCLOHelp, getCloModuleOption, getDelay, getJavaVersion, getLogger, getModel, getModule, getRNG, getSnapLayoutTimeout, getSplitCLO, getVersion, increaseDelay, isRunning, isSuspended, loadModel, loadModule, loadModules, logError, logMessage, logWarning, modelCheck, modelInit, modelInit, modelNext, modelNextDone, modelRelax, modelReset, modelReset, paramsDidChange, parseCLO, parseCLO, prev, processPendingAction, removeChangeListener, removeCLOProvider, removeLifecycleListener, removeRunListener, removeSampleListener, requestAction, requestAction, requestParseCLO, requiresReset, restoreState, setCLO, setSuspended, simulation, startStop, stop, unloadModel, unloadModel, unloadModule, writeFooter, writeHeaderMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface CLOProvider
adjustCLO
-
Field Details
-
IBS_CHUNK_TARGET
private static final int IBS_CHUNK_TARGETTarget number of microscopic IBS updates processed in one hidden GWT chunk.- See Also:
-
OSDE_CHUNK_TARGET
private static final int OSDE_CHUNK_TARGETTarget number of ODE/SDE integration increments processed in one hidden GWT chunk.- See Also:
-
IBS_EPS
private static final double IBS_EPSTolerance for floating point comparisons of update milestones.- See Also:
-
elapsedTime
Create timer to measure execution times since instantiation. -
gui
EvoLudoWeb guiThe reference to the GUI. -
scheduledBusy
private boolean scheduledBusytruewhile a one-off scheduled calculation is in progress and should drive the busy spinner even though the model is not in running mode. -
relaxationChunkStep
private double relaxationChunkStepHidden chunk size in model time used for the currently scheduled relaxation. Positive values mark a relaxation as scheduled or in progress. -
fatalExecutionError
private boolean fatalExecutionErrortrueafter a fatal execution error has disabled the lab. -
notifyGUI
EvoLudo.Directive notifyGUIThe field to store the command to execute after parsing the command line options. -
timer
Timer timerTimer for running models. -
chunkedStepScheduled
private boolean chunkedStepScheduledtruewhile hidden chunk updates are scheduled or in progress. -
chunkTimeStepOrig
private double chunkTimeStepOrigThe original report interval while scheduled, chunked updates are in progress. -
chunkTargetUpdates
private double chunkTargetUpdatesThe update milestone at which the current visible step is complete. -
fullscreenElement
Element fullscreenElementThe reference to the fullscreen element. -
cloSnap
Command line option to request that the EvoLudo model signals the completion of of the layouting procedure for taking snapshots, e.g. withcapture-website.- See Also:
-
-
Constructor Details
-
EvoLudoGWT
Construct EvoLudo controller for GWT applications (web or ePub).- Parameters:
gui- the reference to the GUI
-
-
Method Details
-
logProgress
GWT uses the config channel of the logger to report progress- Specified by:
logProgressin classEvoLudo- Parameters:
msg- progress message
-
execute
Description copied from class:EvoLudoExecutedirectivein JRE or GWT environments. -
parseCLO
Parse command line options and set thecommandto execute after parsing completed.- Parameters:
command- the command to execute after parsing- Returns:
- the number of issues that have occurred durin parsing
-
showHelp
-
guiReady
public void guiReady()Called when the GUI has finished loading and the dimensions of all elements are known. -
layoutComplete
public void layoutComplete()Description copied from class:EvoLudoNotification from GUI that layout process has finished. Opportunity for taking snapshots.- Overrides:
layoutCompletein classEvoLudo
-
setScheduledBusy
private void setScheduledBusy(boolean busy) Track whether one-off scheduled calculations are in progress.- Parameters:
busy-truewhile deferred work is scheduled or running
-
isRelaxationScheduled
public boolean isRelaxationScheduled()Check whether the current scheduled busy phase is a chunked initial relaxation.- Returns:
trueif a chunked relaxation is pending or in progress
-
modelRelax
public boolean modelRelax(boolean quiet) Description copied from class:EvoLudoRelax model bytimeRelaxsteps and notify all listeners if requested. Runtime-specific subclasses may override this method to perform relaxation asynchronously.- Overrides:
modelRelaxin classEvoLudo- Parameters:
quiet- set totrueto skip notifying listeners- Returns:
trueif converged- See Also:
-
scheduleModelRelaxation
private void scheduleModelRelaxation(boolean quiet) Schedule chunked relaxation of the initial model state.- Parameters:
quiet- set totrueto suppress relaxed/stopped notifications
-
finishScheduledRelaxation
private void finishScheduledRelaxation(boolean interrupted, boolean quiet) Complete or abort a scheduled relaxation.- Parameters:
interrupted-trueif the relaxation ended because another action interrupted itquiet- set totrueto suppress relaxed/stopped notifications
-
resetScheduledRelaxation
private void resetScheduledRelaxation()Reset temporary state used for scheduled initial relaxation. -
runGuarded
-
runGuarded
Execute a scheduled command behind a fatal error boundary.- Parameters:
context- the description of the operationaction- the action to execute- Returns:
falseif execution should stop
-
handleFatalExecutionError
-
abortFatalExecution
public void abortFatalExecution()Stop all execution paths after a fatal error, without reporting it again. -
run
-
next
-
scheduleSample
private void scheduleSample()Schedule the next sample. -
scheduleStep
private void scheduleStep()Schedule the next step. -
getChunkStep
Determine the hidden chunk step formodel.- Parameters:
model- the model to inspect- Returns:
- the hidden chunk step in generations, or
0if no chunking should be used
-
scheduleChunkedStep
private void scheduleChunkedStep(double chunkStep) Schedule a visible report step as a sequence of hidden substeps.- Parameters:
chunkStep- the maximum model-time increment per hidden substep
-
getNextChunkedReport
private double getNextChunkedReport()Calculate the next regular report boundary for the active chunked model.- Returns:
- the update milestone for the next visible step
-
finishChunkedStep
private void finishChunkedStep(boolean cont) Complete the current hidden chunked step and forward the visible-step result.- Parameters:
cont-trueif the model should continue after this step
-
resetChunking
private void resetChunking()Reset temporary state used for hidden chunking. -
fireModelRunning
public void fireModelRunning()Description copied from class:EvoLudoCalled whenever the model starts its calculations. Fires only when starting to run. Notifies all registeredRunListeners.- Overrides:
fireModelRunningin classEvoLudo
-
fireModelUnloaded
public void fireModelUnloaded()Description copied from class:EvoLudoCalled whenever a new model has finished loading. Notifies all registeredLifecycleListeners.- Overrides:
fireModelUnloadedin classEvoLudo
-
fireModuleUnloaded
public void fireModuleUnloaded()Description copied from class:EvoLudoCalled whenever the current module has finished unloading. Notifies all registeredLifecycleListeners.- Overrides:
fireModuleUnloadedin classEvoLudo
-
fireModelStopped
public void fireModelStopped()Description copied from class:EvoLudoCalled after the population has reached an absorbing state (or has converged to an equilibrium state). Notifies all registeredRunListeners.- Overrides:
fireModelStoppedin classEvoLudo
-
preprocessCLO
Pre-process array of command line arguments. Some arguments need priority treatment. Examples include the options--module,--verboseor--restore.--module- load module and remove option
--verbose- set verbosity level effective immediately. This ensures that issues when parsing the remaining command line options are already properly reported
The command line arguments stored in a typical
.plistfile -- in particular when generated by the--exportoption -- includes this very option. Since JavaScript (GWT) contracts do not permit access to the users file system without explicit user interaction the--exportdoes not make sense. However, it would still be useful to be able to restore the state of such a file in the browser through drag'n'drop. Here we simply check if--exportwas provided on the command line and discard it if found.- Overrides:
preprocessCLOin classEvoLudo- Parameters:
cloarray- array of command line arguments- Returns:
- pre-processed array of command line options
- See Also:
-
elapsedTimeMsec
public int elapsedTimeMsec()Calculate elapsed time since instantiation in milliseconds.GWT implementation for measuring execution time.
- Returns:
- time in milliseconds
- See Also:
-
createNetwork2D
Description copied from class:EvoLudoGenerate 2D network. This is the factory method to provide different implementations for GWT and JRE. More specifically, the layouting process in GWT uses scheduled execution on the browser event loop to prevent the GUI from stalling, while JRE implementations take advantage of worker threads for significantly faster execution through parallelization.- Specified by:
createNetwork2Din classEvoLudo- Parameters:
geometry- the geometry backing the 2D network- Returns:
- new instance of a 2D network
-
createNetwork3D
Description copied from class:EvoLudoGenerate 3D network. This is the factory method to provide different implementations for GWT and JRE. More specifically, the layouting process in GWT uses scheduled execution on the browser event loop to prevent the GUI from stalling, while JRE implementations take advantage of worker threads for significantly faster execution through parallelization.Note: The
java3dpackage is obsolete. At present no 3D implementation for java exists.- Specified by:
createNetwork3Din classEvoLudo- Parameters:
geometry- the geometry backing the 3D network- Returns:
- new instance of a 3D network
-
getGit
-
getGitDate
Description copied from class:EvoLudoGets the compilation date of the current git version.- Specified by:
getGitDatein classEvoLudo- Returns:
- the git compilation date as a string
-
setDelay
-
setFullscreenElement
Set the fullscreen element.- Parameters:
element- the element to set as fullscreen
-
setFullscreen
public void setFullscreen(boolean fullscreen) Enter or exit fullscreen mode.- Parameters:
fullscreen-trueto enter fullscreen
-
restoreFromFile
public boolean restoreFromFile()Restore state of EvoLudo model from saved plist, which encodes engine state.Called by
Restore...context menu inAbstractView.- Specified by:
restoreFromFilein classEvoLudo- Returns:
trueon successfully restoring state- See Also:
-
exportState
public void exportState()Export the current state of the engine using the appropriate means available in the current environment (GWT/JRE).Note: nudges web browser to download the current state and save it in a file named "evoludo.plist". Export (context menu) suppressed in ePubs.
- Specified by:
exportStatein classEvoLudo- See Also:
-
collectCLO
Description copied from class:EvoLudoAll providers of command line options must implement this method to collect their options.Each command line option is (uniquely) identified by it's name (see
CLOption.getName()), which corresponds to the long version of the option. If an attempt is made to add an option with a name that already exists, theparserissues a warning and ignores the option. Thus, in general, implementing subclasses should first register their options and callsuper.collectCLO(CLOParser)at the end such that subclasses are able to override command line options specified in a parental class.Override this method in subclasses to add further command line options. Subclasses must make sure that they include a call to super.
Note: In contrast to other providers of command line options, the EvoLudo class delegates collection to the controller which maintains the shared parser.
- Specified by:
collectCLOin interfaceCLOProvider- Overrides:
collectCLOin classEvoLudo- Parameters:
prsr- the reference to parser that manages command line options- See Also:
-