The maximum CCE precision in both the standard and regularity-preserving formulations is limited by expressions involving values near unity and values small during the CCE evolution, for instance 1 - sqrt(1 - j j_bar), where j is small. Note that the result here is also small, but the precision is limited by the form of the expression. Note that for a typical run j~10^{-4}, so the loss of precision here is not a dire problem
There are two possible routes to fix these computations and achieve better precision, both involving reformulation:
perform equation manipulation to multiply numerators and denominators by sqrt(1 + j j_bar) or sqrt(1 - j j_bar) (or other expressions for formulas that have analogous problems), followed by further simplifications to eliminate the problematic differences.
re-express the equations in terms of a scaled j value. Much of the smallness of the variables in CCE comes from the 1/r falloff of radiative quantities, so the quantity j * r should approach a constant at scri+ and will have a value closer to unity throughout the domain. Note that this route is only available to the regularity-preserving CCE, as the traditional CCE formulation is not in an asymptotically flat gauge.
I think you meant multiply by 1 + sqrt(1-j jbar) in numerator and denominator.
As a matter of technique, it's probably a good idea to always code things this way cf. roots of a quadratic.
Feature request:
The maximum CCE precision in both the standard and regularity-preserving formulations is limited by expressions involving values near unity and values small during the CCE evolution, for instance
1 - sqrt(1 - j j_bar)
, where j is small. Note that the result here is also small, but the precision is limited by the form of the expression. Note that for a typical run j~10^{-4}, so the loss of precision here is not a dire problemThere are two possible routes to fix these computations and achieve better precision, both involving reformulation: