String versionString = "NPZmachine 3.4"; String creditsString = "Neil Banas | neil@apl.washington.edu"; /* Neil Banas, jan 2011 *** See Projects.pde to control what cases are available through the GUI. *** See models_NPZDO.pde or ac_npz.pde for simple examples of ecosystem models you could use as templates for your own purposes. overview: Projects.pde contains the top-level list of cases available through the GUI. ac_* = the ASTroCAT size-spectral model and related simple examples: see Banas (2011), Ecol. Modelling, submitted. core_* = the classes that make the basic model go: state variables, fluxes, free parameters, ecosystems (built out of the former), and physical environments that ecosystems can run in. gr_* = graphics like network diagrams and "pcolors" (to use the Matlab term) gui = the controller that acts as dispatcher to models and graphical views. gui_generic = a general set of classes for buttons, sliders, toolbars, etc. models_* = miscellaneous physical and biological models. models_watercol is a general 1-D water column environment models_upwelling is a general 2-D model of coastal upwelling, i.e., a cross-shelf conveyor belt models_NPZDO is the ecosystem model described by Banas et al. (J Geophys Res, 2009), with dissolved oxygen added tc_* = the "tonicella" model, so far incomplete utils_* = utilties new: rewriting the main program, incorporating both astrocat 1.0 and tonicella 0.6. netcdf archiving now replaces text-file archiving. rewritten generic gui classes that use a central stylesheet graphics for slice models more general more extensible in lots of ways! to do: gui: redo Project and ProjectList without HashMaps, so that they can stay sequential figure out proper text wrapping for the model name and commentary make a Matrix class that knows what size it is let it optionally also know what its dimensions are named use this for statevar.initial and statevar.current, etc rewrite the Archive in terms of this also should ghost vars (of arbitrary size) be a variant on dynamic vars (size set by the Environment) or vice versa? why does the archive sometimes seem to skip timesteps? scripting: add a better script system: initialize(), takeStep(), finalize() allow scripts inside the modelsToolbar old list, maybe outdated: double precision? switch units to nM N? figure out whether an internal timestep of 0.01 is good enough replace fluxArc with a bezier */ boolean debug = true; Stylesheet masterStylesheet; String baseOutputPath = "/Users/neil/Desktop/"; boolean scripted = false; Gui gui; void setup() { size(850,600); smooth(); masterStylesheet = new Stylesheet(); masterStylesheet.loadFonts(); ProjectList PL = assembleMasterProjectList(); // *** this is place to assemble the choices available through the GUI. gui = new Gui(PL, masterStylesheet); if (scripted) { runScripts(); // *** if you want to bypass the GUI, this is the place to do it--see below. exit(); } } void draw() { gui.update(); } void mousePressed() { gui.offerMousePress(); } class Script { Script() {} void run() {} } void runScripts() { }