MPIAMRVAC
3.1
The MPI  Adaptive Mesh Refinement  Versatile Advection Code (development version)

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. Most TVD limiters in mod_limiter.t could be found in Yee (1989).
In the current version, limiters can be chosen from the following list.
Limiter Type  Limiter  Order  Ghost cells  Reference 

TVD  'minmod'  2  2  e.g., Roe (1985), Yee (1989), LeVeque (2002), Toro (2009) 
TVD  'superbee'  2  2  Sweby (1984), Roe(1985) 
TVD  'vanleer'  2  2  van Leer (1974) 
TVD  'woodward'  2  2  van Leer (1977), Woodward et al. (1984) 
TVD  'mcbeta'  2  2  van Leer (1977) 
TVD  'albada'  2  2  van Albada et al. (1974) 
TVD  'koren'  3  2  Koren (1993) 
TVD  'ppm'  3  3  Colella and Woodward (1984) 
beyond TVD  'cada'  2  2  Cada et al. (2009) 
beyond TVD  'cada3'  3  2  Cada et al. (2009) 
beyond TVD  'schmid1'  3  2  Schmidtmann et al. (2016) 
beyond TVD  'schmid2'  3  2  Schmidtmann et al. (2016) 
beyond TVD  'venk'  2  2  Venkatakrishnan (1995) 
ENObased  'weno3'  3  2  Jiang et al. (1996) 
ENObased  'wenoyc3'  3  2  Yamaleev et al. (2009), Arandiga et al. (2014) 
ENObased  'weno5'  5  3  Jiang et al. (1996), Shu (2009) 
ENObased  'wenoz5'  5  3  Borges et al. (2008) 
ENObased  'wenozp5'  5  3  Acker et al. (2016) 
ENObased  'weno5nm'  5  3  Huang et al. (2018) 
ENObased  'wenoz5nm'  5  3  Huang et al. (2018) 
ENObased  'wenozp5nm'  5  3  Huang et al. (2018) 
ENObased  'teno5ad'  5  3  Peng et al. (2021) 
ENObased  'weno5cu6'  6  3  Huang et al. (2018) 
ENObased  'weno7'  7  4  Balsara et al. (2000) 
ENObased  'mpweno7'  7  4  Balsara et al. (2000) 
'minmod', 'superbee': Both are classic secondorder symmetric TVD limiters. They are found in most textbooks or review papers. as listed in the table above. 'minmod', a.k.a. minbee or mina, might be the most diffusive (nonlinear) limiter and thus suitable for testing codes or modules. While 'superbee', or sometimes known as supera, is sharper compared with other secondorder limiters. It was designed by Roe (1985), devised by the "discontinuitysharpning" suggestion from Colella (1984). But it first appear in Sweby (1984) already. The name of A or B (or nickname bee) comes from the Afunction or Bfunction used in the early literatures to quantify the slope.
'vanleer': A classic and widely used secondorder symmetric TVD limiter named after Prof. van Leer. It is robust and less diffusive than 'minmod'. Recommended when using secondorder limiters.
'woodward': a.k.a. double minmod limiter or monotonized central (MC) limiter, is also a secondorder symmetric TVD limiter. Should behave better than 'minmod' and 'superbee' and similar with 'vanleer', also works well in practical simulations.
'mcbeta': 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.
'albada': Also a classic secondorder symmetric TVD limiter. Similar with the 'vanleer' limiter but smoother. 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 the 'venkatakrishnan' limiter or 'wenoyc3' limiter.
'koren': A thirdorder asymmetric TVD limiter. Uses less resources than 'cada3' but is more diffusive as a thirdorder limiter. Maybe as robust as 'wenoyc3'.
'ppm': A threepoint centered stencil thirdorder TVD limiter, the acronym stands for the Piecewise Parabolic Method (Colella and Woodward 1984). See also the references in mod_ppm.t for the implementation of this method.
'cada', 'cada3': Secondorder and thirdorder asymmetric limiter, a.k.a. LIMO or LIMO3. They are designed to simplify the complex TVD limiter created by Artebrant et al. (2005). However, the simplication makes it not strictly TVD any more. As a thirdorder limiter, 'cada3' performs better than 'koren' limiter. 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. 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 Schmidtmann (2016), 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 'venkatakrishnan' limiter is popular in unstructured meshes. It is a little bit similar with the 'van albada' limiter. 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.
'mp5': MP5 is a high order (fifthorder) fivepoint Monotonicity Preserving limiter, which preserves the socalled MP property. 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 Suresh et al. (1997). 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 Liu et al. (1994) for the original idea of WENO scheme. The socalled classic WENO or WENOJS scheme is from Jiang et al. (1996), 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 Shu (2009), 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 (Del Zanna et al. 2007). Check mod_weno.t if it is necessary 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 oscillations, 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. 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 Borges et al. (2008), we still set it to be 2 so that it works in a similar way with 'weno5' and 'wenozp5'. Change it in mod_weno.t if necessary. Apart from the widely used value 2, values from 1 to 6 could also be found in previous papers.
'wenoyc3': It could be considered as a thridorder version of 'wenoz5', see Yamaleev et al. (2009). But the version installed in the code is actually from Arandiga et al. (2014).
'wenozp5': Fifthorder WENOZ+ scheme. 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.
'mpweno7': Seventhorder MPWENO scheme. 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. Huang et al. (2018) gives sucn an example to construct sixthorder scheme based on the idea above. In our tests, however, the robustness of this 'weno5cu6' 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 Peng et al. (2021), where AD here means adaptive dissipation. However, in the current stage, TENOtype schemes are still sort of in experiment, tends to crash in many practical applications.
References