MOOSE Support in ICE
- 1 Introduction
- 2 MOOSE Perspective
- 3 Connecting to VisIt
- 4 The MOOSE Workflow Item
- 4.1 Creating a new MOOSE Workflow Item
- 4.2 Importing an Existing MOOSE Workflow Item
- 4.3 Updates to the MOOSE Tree
- 4.4 Viewing the Mesh
- 4.5 Launching the Application
- 4.6 Real-time Updating for Postprocessor Values
The Multi-physics Object Oriented Simulation Environment (MOOSE) is a parallel, finite-element framework developed at Idaho National Laboratory (INL). ICE has always provided strong support for MOOSE input generation, simulation execution, and data visualization as a core part of the ICE platform. To learn more about MOOSE, please check out MOOSE Framework.
Support for MOOSE within ICE was expanded further in the summer of 2015 to incorporate changes based on feedback from MOOSE's internal development team and MOOSE application developers. The latest version of ICE now provides a unified interface for interacting with the MOOSE framework alongside tools for embedded visualizations of problem meshes, simulation output, and post processor XY plotting. Additionally, ICE now has improved MOOSE tooling that facilitates real-time updating—via web sockets—from a running MOOSE simulation back to ICE. Users can now specify a list of post processor values relevant to their job, launch their simulation, and see the specified post processor plots update in real time.
The following tutorial will describe these new updates and provide a walkthrough for using MOOSE in the ICE development environment. The tutorial will also detail ICE installation, MOOSE input generation, existing MOOSE input file loading, simulation launch, and post-simulation data visualization using an existing (user-provided) MOOSE application.
Note that ICE now supports MOOSE application development. Check out Developing MOOSE Applications with ICE for more information.
To install ICE, please check out the Getting ICE tutorial.
To use the MOOSE support in ICE, the user will need to have MOOSE installed on their system along with any MOOSE-based application that the user would like to run. The user can simply use "moose_test" as the project name if no other application is available.
Please note that installing MOOSE requires the user to add several packages (prerequisites) to their system. For more information on how to install MOOSE and the prerequisites for doing so, please check out the MOOSE Getting Started guide.
For Mac OS X users, ICE developers also recommend installing the Homebrew package manager to ensure all required packages and their dependencies are available to the user.
To install MOOSE and create a MOOSE-based application from scratch (or clone an existing application) from within ICE itself, users should check out the Developing MOOSE Applications with ICE article.
ICE comes bundled with a 'MOOSE Perspective' that organizes the various views and windows that a MOOSE user or developer would need to efficiently work with MOOSE in ICE. The updated MOOSE Perspective shows the Item Viewer, Resources View, Project Explorer, MOOSE Data Tree View, and Properties tab to enable the user to have an efficient interaction with the framework.
To access the MOOSE Perspective, use the the ICE toolbar at the top and navigate to:
Window > Open Perspective > Other...
Select MOOSE in the window that pops up and click OK.
Alternatively, the user can also access the same pop-up menu by clicking the Open Perspective button in the upper right-hand corner of the ICE workbench (as shown in the image below).
Once the MOOSE Perspective opens, the workbench now contains fewer UI components and resembles something like this:
Connecting to VisIt
If the user would like to view embedded visualizations within the ICE MOOSE tools, then they will need to first specify a connection to VisIt. To do this, simply open the Preferences menu item in the top toolbar.
For Mac OS: Eclipse ICE > Preferences
For Linux: Window > Preferences
In the preferences wizard, navigate to the Visualization Preference node in the left tree view, open it, and select the VisIt node.
Preferences > Visualization > VisIt
In that preferences view, a user can add a connection to VisIt by clicking the add button (stylized as a +) and specifying the path to the VisIt executable.
The MOOSE Workflow Item
Previously, ICE had two separate interfaces from which the user could choose, depending on the desired task: the MOOSE Model Builder and the MOOSE Launcher. The ICE team has since merged the functionality of these workspaces together and now allows users to construct a MOOSE Workflow Item, which presents a unified interface for MOOSE simulation development.
Now let's take a look at the use of the MOOSE Workflow Item in each of these two cases, starting with the creation of a new MOOSE Workflow Item.
Creating a new MOOSE Workflow Item
To create a new MOOSE Workflow Item, simply click the green + button in the 'Item Viewer,' located on the left-hand side of the ICE workbench and MOOSE Perspective.
This will prompt a window to pop up; from there, select the MOOSE Workflow item, and click Finish.
When a user selects the MOOSE Workflow Item for the first time, they will be presented with the following form:
To begin using the MOOSE Workflow Item, the user will need to specify a MOOSE-based application. As shown in the screenshot above, since this is the first time the MOOSE Workflow Item has been used, there are no available applications to select, and ICE is indicating that the user must import one.
Import MOOSE Application
To import an application, click the Browse button.
Importing a Local Application
Local will be selected for this first example. Upon selection, a file dialog will appear from which the user can search for the desired MOOSE application.
Once the appropriate MOOSE application is selected, click Open to import the application.
Note that the location of the selected application is saved for future use (i.e., the value persists between ICE executions so that the user can reuse the same application over and over again).
Importing a Remote Application
As mentioned above, ICE also lets MOOSE users point to remotely-hosted MOOSE applications. To import a remotely-hosted application, simply select Remote on the 'Local or Remote Application' dialog.
This will prompt the remote connection dialog, shown below.
Fill out the 'New Connection' wizard with the information needed to connect to the remote host and click Finish.
Upon correct completion of this form, a remote file browser will appear from which the user can search for the desired MOOSE application on the remote server or host.
Once the appropriate MOOSE application is selected, click OK to import the application.
With the application (local or remote) now imported, the path to the application will populate the Browse field.
The next step is to save the current MOOSE Workflow Item to trigger the generation of the MOOSE input tree for that application.
Select File > Save from the ICE main menu.
Once saved, the MOOSE input tree will be displayed, as shown below.
From this tree, the user can begin constructing a MOOSE input file. The user can add children to the tree nodes, delete children, and set properties for each block in the Properties View.
Importing an Existing MOOSE Workflow Item
Alternatively, if the user would like to import an existing *.i input file to modify, they can click the yellow Item Import Arrow located at the top of the ICE workbench.
A wizard will then prompt the user to specify two things: (1) the *.i file to be imported and (2) the type of Item the file should be imported into.
Browse the file system to locate the file to be imported and then select MOOSE Workflow from the list.
When the user has found the desired MOOSE Workflow Item, select Finish.
With the existing MOOSE Workflow Item now imported, the workflow variables will appear in the main form editor area in the MOOSE Perspective. The tree view will also be populated with the contents of the file.
Next, just as the user would when creating a new MOOSE Workflow Item, the user must select the corresponding application for the imported MOOSE Workflow Item (local or remote) and select File > Save to generate the tree.
This will merge the current tree that corresponds to the input file with the application's YAML tree, resulting in a view like this:
Updates to the MOOSE Tree
The MOOSE tree has been improved and made more intuitive. Blocks that require a variable to be specified (e.g., the Kernels block) now show only the available selections, which originate from entries created in the Variables block.
Simply add new variables to the Variables block and the new variable(s) will be available for any block that requires a variable to be specified.
Additionally, all file entries in the MOOSE tree will dynamically show up in the Output File Parameters data component on the MOOSE Workflow form.
Viewing the Mesh
ICE now supports embedded visualizations, and the MOOSE support in ICE enables users to view their mesh for a given application run.
To view the mesh for a given MOOSE Workflow Item and input tree, first ensure that a valid VisIT connection is established.
Then look in the Resources tab in the MOOSE Perspective workflow, pictured below.
Select the desired mesh file and double click it.
The mesh will then open in an embedded view in the MOOSE Workflow Item's Mesh and Output Files tab.
The mesh is completely interactive, and the user can rotate the view and zoom in and out to get a good look at the mesh that is in use for the current MOOSE application launch.
Launching the Application
Launching the MOOSE-based application is simple. If the user selected a remotely-hosted application, then ICE handles the appropriate remote launch semantics (file uploads/downloads, remote invocation, etc). If the user selected a local application, then ICE handles the local execution of the application in the user's jobs folder.
MOOSE users can also specify the number of MPI processes and Intel TBB threads to use in the simulation execution, shown below.
To launch the application, simply click the Go button for the 'Launch the Job' action in the top right of the MOOSE Workflow Item.
This will execute the simulation and pipe the output to the 'Console' view.
When the simulation completes, the 'Resources' pane is populated with a list of files generated by the simulation, including all post processor CSV files and the simulation output Exodus file.
To view these files as embedded visualization(s), simply double click on the desired file in the 'Resources' pane.
For the output Exodus file, the user can right click on the plot to toggle a context menu that contains a selection of different plots. Simply select the desired plot type to display it on the mesh, as shown below.
Real-time Updating for Postprocessor Values
ICE and MOOSE can now communicate over web sockets in real time during a simulation. This allows MOOSE to communicate things like Postprocessor values in a way that enables ICE to display a dynamically-updating plot of the Postprocessor during simulation execution.
When the user selects the 'Launch the Job' process, ICE adds an 'ICEUpdater' block to the 'Outputs' block within the MOOSE tree that directs MOOSE to communicate with ICE over a web connection during the actual simulation execution.
This means that, as the simulation is running, the user can double click a Postprocessor CSV file in the 'Resources' pane and watch it populate in real time.
Or, if the user would like plots to open immediately, they can select the desired plot in the 'Show Postprocessors' component on the MOOSE form.
If these Postprocessors are enabled, ICE will immediately open the Postprocessor plot when a simulation is executed.