[waveugide_cyl] adjust radius calculation
This commit is contained in:
parent
bb4322ded9
commit
c249e78cd9
1 changed files with 19 additions and 4 deletions
|
|
@ -321,12 +321,20 @@ def linear_wavenumbers(
|
||||||
|
|
||||||
shape2d = (len(dxes[0][0]), len(dxes[0][1]))
|
shape2d = (len(dxes[0][0]), len(dxes[0][1]))
|
||||||
epsilon2d = unvec(epsilon, shape2d)[:2]
|
epsilon2d = unvec(epsilon, shape2d)[:2]
|
||||||
grid_radii = rmin + numpy.cumsum(dxes[0][0])
|
ra = rmin + numpy.cumsum(dxes[0][0])
|
||||||
|
rb = rmin + dxes[0][0] / 2.0 + numpy.concatenate((
|
||||||
|
numpy.zeros(1, dtype=dxes[1][0].dtype),
|
||||||
|
numpy.cumsum(dxes[1][0][:-1]),
|
||||||
|
))
|
||||||
for ii in range(angular_wavenumbers.size):
|
for ii in range(angular_wavenumbers.size):
|
||||||
efield = unvec(e_xys[ii], shape2d, 2)
|
efield = unvec(e_xys[ii], shape2d, 2)
|
||||||
energy = numpy.real((efield * efield.conj()) * epsilon2d)
|
energy = numpy.real((efield * efield.conj()) * epsilon2d)
|
||||||
energy_vs_x = energy.sum(axis=(0, 2))
|
er_energy_vs_r = energy[0].sum(axis=1)
|
||||||
mode_radii[ii] = (grid_radii * energy_vs_x).sum() / energy_vs_x.sum()
|
ey_energy_vs_r = energy[1].sum(axis=1)
|
||||||
|
energy_vs_r = er_energy_vs_r + ey_energy_vs_r
|
||||||
|
mode_radii[ii] = (
|
||||||
|
(rb * er_energy_vs_r).sum() + (ra * ey_energy_vs_r).sum()
|
||||||
|
) / energy_vs_r.sum()
|
||||||
|
|
||||||
logger.info(f'{mode_radii=}')
|
logger.info(f'{mode_radii=}')
|
||||||
lin_wavenumbers = angular_wavenumbers / mode_radii
|
lin_wavenumbers = angular_wavenumbers / mode_radii
|
||||||
|
|
@ -474,7 +482,14 @@ def dxes2T(
|
||||||
Sparse diagonal matrices `(T_a, T_b)`.
|
Sparse diagonal matrices `(T_a, T_b)`.
|
||||||
"""
|
"""
|
||||||
ra = rmin + numpy.cumsum(dxes[0][0]) # Radius at Ey points
|
ra = rmin + numpy.cumsum(dxes[0][0]) # Radius at Ey points
|
||||||
rb = rmin + dxes[0][0] / 2.0 + numpy.cumsum(dxes[1][0]) # Radius at Ex points
|
rb = (
|
||||||
|
rmin
|
||||||
|
+ dxes[0][0] / 2.0
|
||||||
|
+ numpy.concatenate((
|
||||||
|
numpy.zeros(1, dtype=dxes[1][0].dtype),
|
||||||
|
numpy.cumsum(dxes[1][0][:-1]),
|
||||||
|
))
|
||||||
|
) # Radius at Er points
|
||||||
ta = ra / rmin
|
ta = ra / rmin
|
||||||
tb = rb / rmin
|
tb = rb / rmin
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue