In the MOOSE view of things there are three types of coupling:
MOOSE was originally created to tackle the "Fully Coupled" types of problems... but last year we added MultiApps and Transfers to enable "Loosely Coupled Systems of Fully Coupled Equations" basically adding "Loose Coupling" to MOOSE.
While doing "Tight Coupling" also known as "Picard" iteration with MOOSE has been possible for a very long time (since David Andrs rewrote the MOOSE internals way back in March 2011) it has always had quite a few restrictions (most notably you had to be utilizing the same mesh for each piece of the decoupled physics).
Now, you can easily enable "Picard" iteration while using MultiApps! Even better, it's extremely easy to do in your master App input file:
[./Executioner] type = Transient ... picard_max_its = 10 # Anything above "1" turns on Picard iteration picard_rel_tol = 1e-7 # Relative residual drop in the master for convergence picard_abs_tol = 1e-10 # Absolute residual to reach for convergence. [../]
That's all there is to it. Every time step MOOSE will now iterate between your "master" application and your "sub" apps in your MultiApps until it hits one of those three convergence criteria - then it will move on to the next time step.
Since this is brand new the best place to look for documentation is at the tests: https://github.com/idaholab/moose/tree/devel/test/tests/multiapps/picard
master input files show using the different convergence criteria. The
fully_coupled.i input file solves the same problem in the normal MOOSE way with everything fully coupled together on the same mesh (for comparison).
As usual - hit up the mailing list if something isn't making sense.
DerekShare on Twitter Share on Facebook