{'fraction_non_alphanumeric': 0.02099737532808399, 'fraction_numerical': 0.0006561679790026247, 'mean_word_length': 4.754716981132075, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
The Fargo Method for Keplerian Advection: Error Analysis and Correction

The Fargo method alleviates the time-step constraint due to Keplerian advection by shifting flow quantities an integer number of grid intervals in the azimuthal direction. We point out that the implied change of the azimuthal coordinate means that all radial derivatives must carry an extra operator, , which is not present in current implementations and therefore implies an error. Here, t0 is time at the beginning of a time step, is the rotation rate in the coordinate transformation, and ϕ is the azimuthal coordinate. If the quantity were smooth, the factor would imply that the error is first-order in time. However, integerization in the original Fargo scheme means that is a δ-function wherever suffers a jump, so the error becomes unbounded (but more localized) in a finite-difference or finite-volume setting as the radial grid size . Numerical tests showed that the original Fargo method produces noticeable errors where has a jump. These errors are advected by the flow into the rest of the domain. Even if integerization were not employed, the Fargo code is second-order in time and evaluates transport terms at therefore, the extra operator still cannot be neglected. The correction proposed here is to perform a continuous-in-r shift at the end of each time step using a fast Fourier transform and to include the additional operator. Simulation tests including cpu times are provided for a scheme that is fourth-order in space and time.