diff --git a/src/Fields.jl b/src/Fields.jl index c0d6a27d..95136e5d 100644 --- a/src/Fields.jl +++ b/src/Fields.jl @@ -2,7 +2,7 @@ module Fields import Luna: Grid, Maths, PhysData, Modes import Luna.PhysData: wlfreq, ε_0, μ_0 import StaticArrays: SVector -import Cubature: hcubature +import HCubature: hcubature import NumericalIntegration: integrate, SimpsonEven import Random: AbstractRNG, GLOBAL_RNG import Statistics: mean @@ -428,13 +428,10 @@ end function int2D(field1, field2, lowerlim, upperlim) Ifunc(xs) = 0.5*sqrt(ε_0/μ_0)*dot(field1(xs), field2(xs))*xs[1] - rval, _ = hcubature(lowerlim, upperlim) do xs + val, _ = hcubature(lowerlim, upperlim) do xs real(Ifunc(xs)) end - ival, _ = hcubature(lowerlim, upperlim) do xs - imag(Ifunc(xs)) - end - abs(rval + 1im*ival) + val end function normalised_field(fieldfunc, rmax) diff --git a/src/Modes.jl b/src/Modes.jl index fce4a2c8..78e1ae88 100644 --- a/src/Modes.jl +++ b/src/Modes.jl @@ -1,6 +1,6 @@ module Modes import Roots: find_zero, Order2 -import Cubature: hcubature, hquadrature +import HCubature: hcubature, hquadrature import LinearAlgebra: dot, norm import NumericalIntegration: integrate, Trapezoidal import Luna: Maths, Grid @@ -322,13 +322,10 @@ coordinates `xs = (r,θ)`. """ function overlap(m::AbstractMode, E) dl = dimlimits(m) - rval, _ = hcubature(dl[2], dl[3]; maxevals=1000) do xs - real(0.5*sqrt(ε_0/μ_0)*dot(Exy(m, xs), E(xs))*xs[1]) + val, _ = hcubature(dl[2], dl[3]; maxevals=1000) do xs + 0.5*sqrt(ε_0/μ_0)*dot(Exy(m, xs), E(xs))*xs[1] end - ival, _ = hcubature(dl[2], dl[3]; maxevals=1000) do xs - imag(0.5*sqrt(ε_0/μ_0)*dot(Exy(m, xs), E(xs))*xs[1]) - end - rval + 1im*ival + val end """