Replies: 1 comment
-
|
Thanks for using BPM-Matlab! It's true that the mode overlaps calculated during a simulation are always relative to the set of modes in the slice in which findModes() was most recently called, typically just the initial slice. The practical reason for this is that the mode solver findModes() is not very fast and calling it in every slice would slow the simulation to a crawl. What you could do if you want to know the mode overlap at various points is to divide the simulation into smaller segments and recalculate the mode distribution at every segment using findModes(), and extract the first calculated set of mode overlaps in the next simulation segment. You can also calculate the mode overlap yourself based on the E fields found by findModes(). |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Dear Anders,
First, let me thank you for the great job and perfectly looking Matlab code.
Please consider the following proof example: tapering of step index radially symmetrical fiber.
Initial core/clad 18/125 um, dn=2.2e-3, tapering ratio 0.5, taper length 10 mm.
P.calcModeOverlaps = true;
P = findModes(P,20);
modeIdx1 = getLabeledModeIndex(P,'LP01');
P.E = P.modes(modeIdx1);
P = FD_BPM(P);
found 6 modes.
Total power is preserved, calculation domain is large enough.
At the input we have pure LP01 mode.
Strange is that overlap integral is decreasing for LP01 mode and increasing for LP02 mode.
Moreover, resulting sum of overlaps at the end is not 1, i.e. some power is somewhere else, but not is the found modes.
Evenmore, if one reduce dn t 2.0 e-3 to get rid of LP02 mode, the overlap of LP01 will still decrease without exitation of other modes.
Result does not depend on the taper length and only on the tapering ratio, which also does not have a physical meaning.
Here, in FD_BPM.m you do the overlap like
P.modeOverlaps(iMode,1) = abs(sum(E(:).*conj(P.modes(iMode).field(:)))).^2/powerFraction; % The overlap integral calculation
So overlap between current E field and initial untapered mode field. Should not it be overlap between E and actual field of the given mode at this particular slice? Simple rescaling does not help, because the mode changes its shape by tapering. Also there is a problem to track that the mode remained LP01, for example, at this particular slice.
Calculation results are now identical when using 2D (P.taperScaling=0.5) or 3D (tapering internally done along Z) refractive index profiles.
Beta Was this translation helpful? Give feedback.
All reactions