Difference between revisions of "Contrib/multiSolver"

From OpenFOAMWiki
(Migrated to github)
Line 1: Line 1:
'''The repo is currently down.  See [[User:Marupio|my user page]] for details and access to the code.'''
+
This project has migrated over to '''github'''.
  
'''multiSolver''' allows you to run more than one solver on the same dataset in sequence.<br>
+
'''''[http://github.com/Marupio/multiSolver/wiki Click here for the new website.]'''''
{{VersionInfo}}{{Version1.5}}{{Version1.5-dev}}{{Version1.6}}{{Version1.6-ext}}{{Version1.7.0}}{{Version1.7.1}}{{Version1.7.x}}<!--{{Version2.0.0}}{{Version2.0.1}}{{Version2.0.x}}-->
+
<br>
+
<small>Subpage contents (alphabetical)<BR>
+
> [[Contrib_multiSolver/glossary|glossary]]<BR>
+
> [[Contrib_multiSolver/installation|installation]]<BR>
+
> [[Contrib_multiSolver/multiControlDict|multiControlDict]]<BR>
+
> [[Contrib_multiSolver/parallel|parallel]]<BR>
+
> [[Contrib_multiSolver/Post processing|post processing]]<BR>
+
> [[Contrib_multiSolver/programming|programming]]<BR>
+
> [[Contrib_multiSolver/Using_multiSolver|using multiSolver]]<BR></small>
+
<BR>
+
'''Major upgrade - multiSolver''' now fully supports [[Contrib_multiSolver/parallel|parallel]] runs.
+
  
== What is it? ==
+
http://github.com/Marupio/multiSolver/wiki
'''multiSolver''' is a master control class that allows you to create a [[Contrib_multiSolver/glossary#superSolver|superSolver]] composed of multiple solvers within a [[Contrib_multiSolver/glossary#superLoop|superLoop]].  All solvers operate on the same dataset in sequence.  For example:
+
 
+
# <tt>icoFoam</tt> - runs to completion;
+
# data is handed over to <tt>scalarTransportFoam</tt>;
+
# <tt>scalarTransportFoam</tt> - runs to completion;
+
# data is handed back to <tt>icoFoam</tt>, and the [[Contrib_multiSolver/glossary#superLoop|superLoop]] repeats.
+
 
+
== Features ==
+
 
+
* '''Multiple solvers''' - multiple solvers can be used in sequence on the same data set.
+
 
+
* '''Changing boundary conditions''' - the boundary conditions can change at distinct time intervals.
+
 
+
* '''Independent time''' - each solver can operate with an independent time value, although universal time can still be used.
+
 
+
* '''Single case directory''' - the settings for all solvers are stored within a ''single'' case directory using a "[[Contrib_multiSolver/glossary#multiDict|multiDict]]" dictionary format.
+
 
+
* '''Easy data management''' - All the data output is sorted into subdirectories corresponding to the solver, and can be loaded / unloaded using the [[Contrib_multiSolver/Post processing|post processing]] utility.
+
 
+
* '''Store fields''' - To save memory and hard drive space, not all solvers have to use all the fields.  Rather, they can "store" any unneeded fields, leaving more memory and disk space.  The next solver retrieves all stored fields, and no data is lost.
+
 
+
== Why would you need this? ==
+
A fundamental assumption in the design of OpenFOAM is the existence of a universal time.  Therefore the time object is the top-level [[OpenFOAM guide/objectRegistry|objectRegistry]] (i.e. '''runTime''' hosts the database for your simulation).  This design works for nearly all simulations imaginable, except for those that require more than one time frame.  For these situations, '''multiSolver''' will come in handy.
+
 
+
== When would you need this? ==
+
The capabilities of '''multiSolver''' are useful for:
+
 
+
* multi-step processes to be modelled within a single application, e.g. fluid injection, followed by settling;
+
* modelling of a flow problem characterized by two different timescales, e.g. stirring with biochemical reactions; and
+
* changing boundary conditions mid-run.
+
 
+
Basically, if you find yourself:
+
 
+
* frequently copying data between case directories;
+
* frequently stopping and changing the simulation details, then restarting; or
+
* using <tt>runTime++</tt> more than once in your solver,
+
 
+
then '''multiSolver''' might help you.
+
 
+
== Learn more ==
+
* ''"I'm sold, let me install it!"'' - Check out the [[Contrib_multiSolver/installation|installation sub-page]].
+
* ''"I'm a user.  How do I work with a '[[Contrib_multiSolver/glossary#superSolver|superSolver]]'?"''  Check out the [[Contrib_multiSolver/Using_multiSolver|user's guide sub-page]].
+
* ''"How do I post-process a '[[Contrib_multiSolver/glossary#superSolver|superSolver]]'?"'''  Check out the [[Contrib_multiSolver/Post_processing|post processing sub-page]].
+
* ''"One processor is for losers.  How do I work with it in parallel?"'' Check out the [[Contrib_multiSolver/parallel|parellel sub-page]].
+
* ''"I'm a developper.  How do I program with '''multiSolver'''?"''  Check out the [[Contrib_multiSolver/programming|programming sub-page]].
+
 
+
== Mesh motion not fully supported yet ==
+
'''NOTE:''' At this time, '''multiSolver''' allows for mesh motion, provided the mesh returns to its original position between solvers.  This functionality is planned for the future.  I plan to do this in the late summer or fall (2011).
+
 
+
== Update info ==
+
* ''2010-07-23'': Initial import
+
* ''2011-03-29'': Minor bug fix for 1.6-ext and 1.7.1
+
* ''2011-04-05'': Major upgrade - now works for parallel simulations
+
* ''2011-06-03'': Minor bug fix - decompose nolonger omits the initial directories
+
* ''2011-07-01'': Overhauled the documentation on the wiki page (no change to the code)
+

Revision as of 21:44, 6 September 2013

This project has migrated over to github.

Click here for the new website.

http://github.com/Marupio/multiSolver/wiki