MPIAMRVAC
3.0
The MPI  Adaptive Mesh Refinement  Versatile Advection Code

The slope limiter plays an important role in suppressing spurious numerical oscillations. They can be written in different equivalent forms and may be equivalent to the corresponding flux limiters. Most of them are derived strictly for a single nonlinear conservation equation or constant coefficient equations in 1D space. While for nonlinear conservative equations, slope limiters lack strict theoretical proof. That might be why sometimes they are not so reliable.
AMRVAC provides many limiters to reconstruct data at cell face. Most of them are applied for finite volume methods. Therefore, take care when using them in combination with finite difference schemes, especially for asymmetric ones. And, be careful when choosing limiters when you are using stretching grids because some of the limiters are only suitable for uniform grids. Most limiters in mod_limiter.t could be found in Reference [1].
In the current version, limiters can be chosen from the following list.
'minmod', 'superbee': MINMOD and SUPERBEE are both classic secondorder symmetric TVD limiters. They are found in most textbooks or review papers, for example, Reference [13]. MINMOD, a.k.a. MINBEE or MINA, might be the most diffusive limiter and thus suitable for testing codes or modules. While SUPERBEE, or sometimes known as SUPERA, is a little bit sharper compared with other secondorder limiters.
'woodward': WOODWARD, a.k.a. double MINMOD limiter or MONOTONIZED CENTRAL(MC) limiter, is also a secondorder symmetric TVD limiter which could be found in Reference [45]. Should behave better than MINMOD and SUPERBEE.
'mcbeta': MC_beta limiter is a secondorder symmetric TVD limiter with a parameter beta whose default value is 1.4. Some other usually used values could be 1.5 (see the HAMR code) or 1.9 (see the KORAL code). In principle, this beta could be changed from 1 to 2. If beta = 1, it will degenerate into the MINMOD limiter and if beta = 2, it will become the WOODWARD limiter. It is also proposed in Reference [4].
'vanleer': A classic and widely used secondorder symmetric TVD limiter named after Prof. van Leer. Its performance should be comparable with the WOODWARD limiter. First proposed in Reference [6].
'albada': Also a classic secondorder symmetric TVD limiter. Similar with the VANLEER limiter but smoother. See Reference [7] for details. Note that delta^2 is set to be 1.d12 in our code to avoid clipping smooth extrema. However, a better idea to set delta^2 is to make it proportional to (delta x)^3, as we can see in the settings of VENKATAKRISHNAN limiter or WENOYC3 limiter.
'koren': A thirdorder asymmetric TVD limiter. See Reference [8] for details. Uses less resources than CADA3 but is more diffusive as a thirdorder limiter. Maybe as robust as WENO3.
'cada', 'cada3': Secondorder and thirdorder asymmetric limiter proposed in Reference [9], a.k.a. LIMO or LIMO3. They are designed to simplify the complex TVD limiter created by Artebrant and Schroll, see Reference [10]. However, the simplication makes it not strictly TVD any more. As a thirdorder limiter, it performs better than KOREN limiter as shown in Reference [9,11]. Thus, although it has some drawbacks like being asymmetric or relying on some artificial parameters, this limiter is still recommended when choosing thirdorder limiters.
'schmid1', 'schmid2': An improved version CADA3 limiter, see Reference [12] for details. It changed some parameters of the CADA3 limiter so that it is now a symmetric limiter. Besides, it changes the criteria to switch on/off the TVD function in CADA3 from a quite artificial approach to a more reliable method. According to Reference [12], it should be related to "the max value of the second derivative of all the variables", which is calculated automatically in SCHMID1 settings. But considering the time cost of communication, SCHMID2 is recommended. The users are expected to give "the max value of the second derivative of all the variables at t=0" manually. See examples of the ShuOsher test in the hd test folder.
'venk': The famous VENKATAKRISHNAN limiter is popular in unstructured meshes. It is a little bit similar with the VANALBADA limiter, see Reference [13] for details. This limiter is claimed to keep a better balance between accuracy and oscillations, and thus can provide some more details than other secondorder limiters. The parameter K, as mentioned in their paper, is set to be 0.3. Other values like 1 or 10 are also widely used in literature.
'ppm': A fourpoint centered stencil thirdorder TVD limiter, the acronym stands for the Piecewise Parabolic Method. See Reference [14] for details and see the references in mod_ppm.t for the implementation of this method. Since 4 ghostcells are needed, it would be timeconsuming as a thirdorder limiter.
'mp5': Limiters afterwards are not TVD any more. MP5 is a high order (fifthorder) fivepoint Monotonicity Preserving limiter, which preserves the socalled MP property, see Reference [15] for details. MP5 can provide more details than other limiters provided in AMRVAC, but since this MP property cannot prevent small oscillations, even with small CFL number (0.4 or 0.2), it may crash in many cases. Note that the parameter alpha is chosen as 4, which is recommended in Reference [15]. Therefore, in principle, CFL number should be less than 1 / (1 + alpha) = 0.2. But in practice, 0.4 still yields nonoscillatory results.
'weno3', 'weno5', 'weno7': The classic WENO or Weighted Essentially Non()oscillatory Scheme, a popular variation of ENO scheme, which means that we allow some kind of oscillations that is not allowed in the TVD scheme, but these oscillations could not be too large. This idea is similar with the socalled TVB scheme, where B stands for bounded. Check Reference [16] for the original idea of WENO scheme. The socalled classic WENO or WENOJS scheme is from Reference [17], who modified it into a more practical way. Highorder WENO schemes are especially suitable for problems containing both shocks and a large number of complex smooth structures. WENO3, WENO5, WENO7 stand for thirdorder, fifthorder and seventhorder WENOJS scheme, respectively. As mentioned in Reference [18], the coefficients named 'reconstruction' are used here. And in WENO5, we also provide another set of coefficients named 'interpolation', as applied in the ECHO code (see Reference [19]). Check mod_weno.t if it is necessary for you to use this set of coefficients. The parameter delta^2, which has a similar usage with the van Albada and Venkatakrishnan limiter, is set to be 10^18 by default. Values as low as 10^40 is also possible. Change it if your grid size is very small. For the performance, although the WENO scheme will allow some oscillation, it seems to be more diffusive than other thirdorder or fifthorder schemes, and thus robust in many cases. Therefore, as a compromise between robutstness and accuracy (and maybe also efficiency), WENO3 is note so recommended compared with other thirdorder limiters while WENO5 should be a good choice when using fifthorder limiters. Notice should be taken that WENO7 perfers to using characteristic variables instead of primitive or conservative variables (actually, this is true for all the limiters, but higeorder limiters are more sensitive). Thus, in the current version of AMRVAC, WENO7 is not so robust and not recommended.
'wenoz5': Fifthorder WENOZ scheme, see Reference [20] for details. A popular variation of the classic WENO scheme which is innovated by WENOM but more efficient than WENOM. It claims to perform better at critical points than WENOJS, but is not as robust as WENOJS in some extreme cases. Although the power index is set to be 1 in Reference [18], we still set it to be 2 so that it works in a similar way with WENO5 and WENOZ+5. Change it in mod_weno.t if necessary. Apart from the widely used value 2, values from 1 to 6 could all be found in previous papers.
'wenoyc3': It could be considered as a thridorder version of WENOZ5, see Reference [21]. But the version installed in the code is actually from Reference [22].
'wenozp5': Fifthorder WENOZ+ scheme, see Reference [23] for details. An improved version of WENOZ. More precision in the sacrifice of robustness.
'weno5nm', 'wenoz5nm', 'wenozp5nm': In principle, all the limiters mentioned above are designed for uniform grids. While in stretched grids, they are not strictly correct so that it cannot be as accurate as what they claimed to be. While these NM limiters are specially designed to deal with stretched Cartesian grids. The precision will improve in the sacrifice of a little bit efficiency. See Reference [24] for details.
'mpweno7': Seventhorder MPWENO scheme, see Reference [25]. It is basically a combination of MP5 and WENO scheme to preserve the MP property in the results of especially highorder WENO schemes, e.g. seventhorder of even higher. The advantage might be that it is more stable than WENO7. However, it shows two drawbacks in the tests, one is this scheme is timecomsuming, and another is the result is more diffusive, which is a straighforward result from the design of this scheme. If WENO5 or WENO7 could already be used very well in your case, MPWENO7 is not recommeneded.
'weno5cu6': CU means centralupwind here, so actually this limiter should be called WENO6. It is based on two ideas. First, in recent desigments for WENOtype schemes, instead of the traditional way of making combination of loworder linear reconstructions, the combination of highorder and loworder linear reconstructions is preferred. Second, in the smooth region, central scheme can always give less dissipative solution than the traditional upwind schemes. Reference [26] gives sucn an example to construct sixthorder scheme based on the idea above. In our tests, however, the robustness of this WENO5CN6 is sort of disappointing.
'teno5ad': Recently, T(argeted) ENO or TENO schemes are popular in ENObased scheme designments. WENOtype schemes will always be nonlinear so that diffusive even in the smooth region. While TENOtype schemes aim to be totally linear in the regions they recognize as smooth region. Here we select a recent one in Reference [27], where AD here means adaptive dissipation. However, in the current stage, TENOtype schemes are still sort of in experiment, tend to crash in many practical applications.
References