Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Developing MOOSE Applications with ICE"

(Introduction)
(Adding a New Kernel)
Line 41: Line 41:
 
== Adding a New Kernel ==  
 
== Adding a New Kernel ==  
  
COMING SOON
+
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.
 +
 
 +
[[File:new_kernel.png]]
 +
 
 +
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.
 +
 
 +
[[File:kernel_source.png]]
  
 
== Building your MOOSE App ==  
 
== Building your MOOSE App ==  

Revision as of 10:11, 24 April 2015

Introduction

This article is designed to walk MOOSE developers 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 software development tools and technologies for developing scientific software can be integrated into the ICE platform. Version control, code editing, code completion, code building, and code generation are just a few of the various technologies now available to MOOSE-based application developers using ICE. Additionally, after developing your custom MOOSE application, the usual MOOSELauncher and MOOSEModel Items and the ICE Visualization perspective are still at your disposal for constructing input files, launching jobs, and visualizing results.

Cloning MOOSE

To clone MOOSE, simply switch to the Git Perspective in the top right corner of ICE. You will be presented with the following view.

GitView.png

Now click the 'Clone a Git Repository' button in the toolbar of the 'Git Repository' view (or the hyperlink in the middle of the view if you have not repositories). You will be presented with the following wizard.

Clone wizard.png Clone wizard2.png Clone wizard3.png

Enter https://github.com/idaholab/moose into the URI entry and select next. This will present you with the branch selection wizard page. Select which branches you'd like to import in this clone and click Next. The last page will let you specify the clone location on your local filesystem. If you'd like this to be in your local ICE workspace entry /home/username/ICEFiles in the entry and click Finish.

To import MOOSE into your ICE Project Explorer, simply right click the created moose repository in the Git Repository view and select 'Import Projects'. On the first wizard page, select 'Import as New Project' and click finish. This will present you with the ICE New Project wizard. In this wizard, open the C/C++ tree node and select 'Makefile project with Existing Code'. Provide a valid project name and toolchain and click finish. You should see MOOSE in your Project Explorer.

Import git proj.png

Building MOOSE

To build MOOSE/Libmesh within ICE, open the Make Target view by going to Window > Show View > Other and search and select Make Target. With MOOSE imported into your Project Explorer, you should see the MOOSE project in the Make Target view. Right click on that project and select New. A dialog will pop up prompting you for the Make Target name, target name, and build command. Set the name as 'Build Libmesh', uncheck 'Same as target name' and leave the Make target blank, uncheck 'Use builder settings' and set the command as 'sh scripts/update_and_rebuild_libmesh.sh', then click 'Ok'. Now you should see a 'Build Libmesh' target, which upon double-clicking will execute the update_and_rebuild_libmesh.sh script with the output streaming in the Console view.

Once that is done, you can create another Make Target in the same manner, this time setting the target as all, but setting the build command (assuming you have CMake installed on your system) as 'cmake -E chdir framework make' (feel free to add -j N to this command, where N is the number of make threads). If you do not have CMake installed, you can right click on the MOOSE project in the Project Explorer and select Properties. In this Properties dialog, select C/C++ Build and append to the Build directory entry 'framework'. Now, double-clicking this make target will execute the MOOSE build, and you should see the output streaming in the Console.

Forking the Stork

The internal MOOSE development team provides another GitHub repository called stork at https://github.com/idaholab/stork that represents the base structure needed to create a new MOOSE application. So 'Forking the Stork' implies forking this repository, changing its name to whatever you've decided to call your MOOSE application, and cloning that locally to begin work. The MOOSE team calls this 'Forking the Stork' and provides a link to the repository at mooseframework.org/create-an-app.

ICE now provides this functionality in an easy-to-use toolbar button using the tools provided by the Eclipse EGit plugins. To 'Fork the Stork' in ICE, simply click the 'MOOSE Fork the Stork' button in the toolbar.

Fork button.png Fork dialog.png

This will present a new dialog asking for the name of your new MOOSE application, as well as your GitHub username and password. Upon providing this information and clicking 'Ok', ICE will fork the https://github.com/idaholab/stork repository for you, rename it to your provided application name, clone it to ~/ICEFiles, and import it into ICE as a new C++ project in the C/C++ perspective's Project Explorer view.

Additionally, the import generates a fully configured Make Target in the Make Target view, and sets up the C++ Indexer to point to your ICE MOOSE project's include files. This is essential for providing code completion and MOOSE code search while your developing your MOOSE application. To look at a MOOSE class that you've referenced in one of your application's source files, simply click the class name or the header file and click F3. ICE will take you directly to the declaration for that MOOSE class so that you can peruse and look up its method definitions.

New app.png Make target.png

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.

New kernel.png

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.

Kernel source.png

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.

Git commit.png

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.

Back to the top