diff --git a/examples/helmholtz/comparisonORAS/OO2Configs.h b/examples/helmholtz/comparisonORAS/OO2Configs.h index 288bdd0fd206f6da89a14678c5b4a819e86b9acc..683d46fcfcb19a75e56f24dded22e7da0a943e28 100644 --- a/examples/helmholtz/comparisonORAS/OO2Configs.h +++ b/examples/helmholtz/comparisonORAS/OO2Configs.h @@ -85,11 +85,36 @@ class TaylorOrderTwo : public AbstractOO2Config OO2 coefs(gmshfem::function::ScalarFunction<PetscScalar> k) const override { + // For operator a + b*laplacian, not b grad grad return {im * k * cos(_alpha / 2), im / (2.0 * k) * PetscScalar(cos(_alpha / 2), +sin(-_alpha / 2))}; } }; +class TaylorOrderTwoFlipped : public AbstractOO2Config +{ + public: + double _alpha = 0; + std::string _name; + + TaylorOrderTwoFlipped(std::string name, double alpha) : + _alpha(alpha), _name(name) + { + } + + std::string name() const override + { + return _name; + } + + OO2 coefs(gmshfem::function::ScalarFunction<PetscScalar> k) const override + { + // Flipped in ORAS + return {im * k * cos(_alpha / 2), + -im / (2.0 * k) * PetscScalar(cos(_alpha / 2), +sin(-_alpha / 2))}; + } +}; + class SommerfeldSecondOrderDamping : public AbstractOO2Config { public: