From e10e8b085a16a4878c3f2dba9c0e65894901ad13 Mon Sep 17 00:00:00 2001 From: Gabriel Gerez Date: Mon, 20 Nov 2023 16:42:16 +0100 Subject: [PATCH] Remove use for `flipFunction` in Permittivity --- src/environment/Permittivity.cpp | 3 +-- src/environment/Permittivity.h | 5 ----- src/environment/SCRF.cpp | 6 ++---- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/environment/Permittivity.cpp b/src/environment/Permittivity.cpp index a645a27ee..2a6868d58 100644 --- a/src/environment/Permittivity.cpp +++ b/src/environment/Permittivity.cpp @@ -35,8 +35,7 @@ Permittivity::Permittivity(std::shared_ptr cavity, double epsilo double Permittivity::evalf(const mrcpp::Coord<3> &r) const { auto c_pin = this->cavity; - auto epsilon = this->in * std::exp(std::log(this->out / this->in) * (1 - c_pin->evalf(r))); - return (this->inverse) ? 1.0 / epsilon : epsilon; + return this->in * std::exp(std::log(this->out / this->in) * (1 - c_pin->evalf(r))); } void Permittivity::printHeader() const { diff --git a/src/environment/Permittivity.h b/src/environment/Permittivity.h index e83e1c5d5..6d80e45dc 100644 --- a/src/environment/Permittivity.h +++ b/src/environment/Permittivity.h @@ -65,15 +65,10 @@ class Permittivity final : public StepFunction { */ double evalf(const mrcpp::Coord<3> &r) const override; - void flipFunction(bool is_inverse) { this->inverse = is_inverse; } - auto isInverse() const { return this->inverse; } - void printHeader() const override; private: std::string formulation = "exponential"; - bool inverse = false; //!< State of #evalf. When this is false, evalf returns the standard value, but when it is true, - //!< evalf returns 1/epsilon. }; } // namespace mrchem diff --git a/src/environment/SCRF.cpp b/src/environment/SCRF.cpp index 8150bc58a..8aaa1eff2 100644 --- a/src/environment/SCRF.cpp +++ b/src/environment/SCRF.cpp @@ -119,13 +119,11 @@ mrcpp::ComplexFunction SCRF::solvePoissonEquation(const mrcpp::ComplexFunction & mrcpp::ComplexFunction Vr_np1; Vr_np1.alloc(NUMBER::Real); - this->epsilon.flipFunction(true); - + auto eps_inv_func = mrcpp::AnalyticFunction<3>([this](const mrcpp::Coord<3> &r) { return 1.0 / this->epsilon.evalf(r); }); Density rho_tot(false); computeDensities(Phi, rho_tot); - mrcpp::cplxfunc::multiply(first_term, rho_tot, this->epsilon, this->apply_prec); - this->epsilon.flipFunction(false); + mrcpp::cplxfunc::multiply(first_term, rho_tot, eps_inv_func, this->apply_prec); mrcpp::cplxfunc::add(rho_eff, 1.0, first_term, -1.0, rho_tot, -1.0); rho_tot.free(NUMBER::Real);