Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Developing MOOSE Applications with ICE"
(→Building MOOSE) |
(→Cloning MOOSE) |
||
Line 22: | Line 22: | ||
This step will automatically connect to the MOOSE GitHub repository, create a local clone on the user's disk, and import the MOOSE into the 'Project Explorer.' | This step will automatically connect to the MOOSE GitHub repository, create a local clone on the user's disk, and import the MOOSE into the 'Project Explorer.' | ||
+ | |||
+ | Cloning also creates two required 'Build Targets' used to build MOOSE and its required libraries. | ||
[[File:Moose_project_explorer_stc.png]] | [[File:Moose_project_explorer_stc.png]] |
Revision as of 11:33, 11 November 2016
Contents
Introduction
This article is designed to guide users through a typical workflow for developing MOOSE-based applications in ICE. Since ICE is built on top of the Eclipse platform, a large variety of sophisticated tools and technologies for developing scientific software can be leveraged for developing MOOSE applications.
Version control, code editing, code completion, code building, and code generation are just a few of the technologies available to MOOSE-based application developers using ICE. Additionally, after the user develops a custom MOOSE application, the usual MOOSELauncher and MOOSEModel items—along with the ICE Visualization perspective—are still at their disposal for constructing input files, launching jobs, and visualizing results.
Prerequisites
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" 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, check out the MOOSE Getting Started guide.
For Mac OS X users, ICE developers also recommend installing the Homebrew package manager.
To install MOOSE and create a MOOSE-based application from scratch (or clone an existing application) from within ICE itself, check out the Developing MOOSE Applications with ICE article.
Cloning MOOSE
The latest version of ICE makes cloning MOOSE very simple.
In the main ICE window, click Developer > Framework > MOOSE > Clone Moose.
This step will automatically connect to the MOOSE GitHub repository, create a local clone on the user's disk, and import the MOOSE into the 'Project Explorer.'
Cloning also creates two required 'Build Targets' used to build MOOSE and its required libraries.
Building MOOSE
To build MOOSE/Libmesh within ICE, the user must build Libmesh and then MOOSE itself.
Building Libmesh
Open the 'Make Target' view pane by going to Window > Show View > Other.
This will prompt the 'Show View' dialog box. From there select Build Target and click OK.
The MOOSE project is now visible in the 'Build Target' pane. Right click on MOOSE and select New.
This will prompt the 'Create Build Target' dialog, shown below.
Set the 'Target name' as Build Libmesh.
For Build Target: uncheck 'Same as Target name' and leave the 'Build target' field blank.
For Build Command: uncheck 'Use builder settings' and set the command as sh scripts/update_and_rebuild_libmesh.sh.
Click OK.
'Build Libmesh' should now appear as a target, which upon double-clicking will execute the update_and_rebuild_libmesh.sh script with the output streaming in the 'Console' view pane.
Make All
Once this step completes, the user can create another 'Build Target' in the same manner, this time setting the 'Build target' field as Make All and setting the Build command as make -C framework.
Run Make All
Double clicking the new 'Make All' Build target will execute the MOOSE build, and the output should stream in the 'Console' view pane.
Forking the Stork
The MOOSE development team provides a GitHub repository called 'stork' (located at https://github.com/idaholab/stork) that includes the base structure needed to create a new MOOSE application. So, 'Forking the Stork'—as the MOOSE team coined it—implies forking this repository, changing its name to the name of the user's new MOOSE application, and cloning the contents of the repository to the user's local disk.
ICE provides this functionality through a simple interface, allowing an ICE user to 'Fork the Stork' in a few short steps.
First, in the main ICE menu, select Developer > Framework > MOOSE > Fork the Stork.
The resulting dialog will prompt the user for the name of their new MOOSE application ("animal" in this case), as well as their GitHub username and password.
Once the user has provided this information and clicked Finish, ICE will fork the https://github.com/idaholab/stork repository, rename it to the provided application name, clone it to ~/ICEFiles on the user's local disk, and import it into ICE as a new C++ project in the C/C++ perspective's 'Project Explorer' view pane.
Additionally, the import generates a fully configured 'Build Target' in the 'Build Target' view pane and sets up the C++ Indexer to point to the new ICE/MOOSE project's include files. This is essential for facilitating code completion and MOOSE code search MOOSE application development.
To look at a MOOSE class referenced in one of the new MOOSE application's source files, simply click the class name or the header file and click F3. ICE will take the user directly to the declaration for that MOOSE class so they can peruse and look up its method definitions.
Adding a New Kernel
Once you've cloned and built MOOSE, and Forked the Stork to produce a new MOOSE application ready for development, you can easily create custom Kernels with ICE. To create a new Kernel, right click on your new MOOSE-based application project and select New > MOOSE Object > Kernel.
This action will display an input prompt asking for the name of your new Kernel subclass. Simply enter the name and push 'Ok'. Then ICE will automatically generate a new include and source file in include/kernel and source/kernel, respectively. The new files are the stubbed out, base implementation of a subclassed Kernel that you can then add to and modify.
Building your MOOSE App
Building your MOOSE application is simple because the 'Fork the Stork' action produced a Make Target for you. Simply double-click that make target and you application will build, producing the application executable.
Pushing Changes Back to GitHub
To push changes to the remote GitHub repository at https://github.com/username/animal, switch back to the Git perspective and click your applications git repository in the Git Repositories view. On the bottom right of the screen, you should see another set of tabbed views, one of them being the Git Staging view.
Click the Git Staging View and drag any Unstaged Changes to the Staged Changes section. Now provide a brief commit message and click 'Commit and Push', enter your GitHub credentials, and watch as your files are committed to the remote repository!
Executing Built MOOSE Application
Now that you've developed a new MOOSE application you need to develop input files for it and execute it to see your desired results. This is simple with ICE: just use the built in MOOSE Model Builder and MOOSE Launcher Items. Detailed instructions can be found at Using MOOSE with ICE.