Closed elizaleung830 closed 7 months ago
I'd guess you just need to make the cladding/air larger - at >=3µm I cannot really imagine that the field is already decayed at the boundaries as those are just a wavelength away. (The wavelengths in the plots seem to be off by 1000 :D )
Would be amazing if you could start another example for the docs :) (Or even better just replace the current dispersion example as we don´t have data to match it to) (and add yourself to the contributors list https://github.com/HelgeGehring/femwell/blob/main/README.md :smiley:)
Thanks and I more than happy to add this to the example! However, seems like the size of cladding and air are not the main problem,I have adjusted the mesh to this:
width = 6 # um
height = 0.8 # um
n2 = 2.5e-19 # m^2/W n2 is the nonlinear refractive index at the center
Alpha = 0.7 # loss (dB/cm)
wavelength_range = [310, 5100]
wavelegnth_step = 70 # steps
n_core = n_Si3N4
n_lower_cladding = lambda w: n_MgF2(w, ray="o") # TODO: check effect of this line
n_air = n_Air
# Construct waveguide geometry
core = shapely.geometry.box(-width / 2, 0, +width / 2, height)
lower_cladding = shapely.geometry.box(-18, -18, 18, 0)
air = shapely.geometry.box(-18, 0, 18, 18)
polygons = OrderedDict(
core=core,
lower_cladding=lower_cladding,
air= air
)
# Define material property and resolution of waveguide
resolutions = dict(core={"resolution": 0.04, "distance": 0.1},
lower_cladding={"resolution": 0.3, "distance": 0.2},
air={"resolution": 0.3, "distance": 0.2})
but the resulting GVD curve remains the same as before. I have also tried with a higher resolution mesh, still run into the same problems.
Yay, sounds great 🥳
Hmm, okay, what else could remain?
Could you post a picture of a mode at ~5um, I'm wondering if it looks still like a nice mode or if it touches some of the boundaries 🤔 (even through I wouldn't expect that as changing the size of the domain didn't change anything)
What are you using for the refractive indices? Are you sure that those are still correct at those wavelengths? Might be that you have a fit which is just valid for a certain range? (But your comment already says Todo check that :D )
Thanks for the quick response! This is the picture of mode in current mesh at 5000nm, but seems like it hasn't touch boundary of the mesh yet? In regard for the refractive indices, i have used the same sellmeier equation as mentioned in the paper. I have also tried using extraordinary and ordinary refractive index for cladding, but ordiary seems to give a better fit for GVD curve.
Hmm, okay, then the mesh should be fine :) Are you sure your sellmeier equations are correct? (without them I cannot run the example) https://refractiveindex.info/?shelf=main&book=Si3N4&page=Luke https://refractiveindex.info/?shelf=main&book=MgF2&page=Dodge-o these should be the ones, right? they even have an option to download the python code :)
The sellmier equation of silcon nitride is same as what i use, but for the magnesium fluroide i use the following function which is dervied from a textbook :
def n_MgF2(wavelength, ray="o"):
"""
valid for (0.2–7)um
:param wavelength: in um
:return: linear refractive index of MgF2
"""
if ray == "o":
return math.sqrt(0.48755108*wavelength**2/(wavelength**2 - 0.04338408**2) + 0.39875031 * wavelength**2 / (wavelength**2 - 0.09461442**2) + 2.3120353 * wavelength**2 /(wavelength**2 - 23.793604**2) + 1)
elif ray == "e":
return math.sqrt(1+ 0.41344023*wavelength**2 /(wavelength**2 - 0.03684262**2) + 0.50497499*wavelength**2/(wavelength**2-0.09076162**2)+2.4904862*wavelength**2/(wavelength**2-23.771995**2))
Many thanks!
Compare the numbers, it's the same sellmeier equation ;)
I did a very quick check with another tool and got exactly the same results femwell produced.
So maybe we're using wrong sellmeier equations? Or we understood something wrong about their geometry (maybe a limited MgF2 thickness?) (Maybe there's also an error on their side?)
Would you have an idea what else could be different from the paper?
The sellmeier equation should be correct ,as they are the one referenced by the paper. They didnt mention about a limited MgF2 thickness, but from the mode profile (Figure 2b): They are at least using thickness >= 3um for $\lambda$ = 4um, and the mode seems to just touched the boundary at this point, so i guess it shouldn't be the main reason GVD differ before $\lambda$ = 4um?
One thing could be different is that they are using a mesh with 500 000 first order triangular element, but our mesh only has about 40 000 elements. However, It causes memeory error for me when the mesh resolution is too high, so i can't verify this.
Anyway, I have also reproduced GVD curve from another paper using femwell recently, just need to add some documentation before i add it to the example. :)
Thanks for the reproduced GVD curve from the other paper, that looks really good :)
What do we do with this one? As I reproduced femwell results with another tool, it seems to me that the numerics is not the problem.
I'm wondering if there's a problem on their side? Maybe they had a too small domain?
I don't have other ideas what could be wrong :/ Should we close this issue or go on hunting for possible things we have different from them? @elizaleung830 what do you think?
It might be a problem from their side or maybe some assumptions are not specified in their paper. But since it's not a problem from Femwell, I am happy to close this issue. Thanks a lot for helping! :)
Hi,
I was trying to recreate figure 3b(W = 6 um, H = 0.8 um) from this paper. Strangely, GVD is doest not match when wavelength is greater than 3100nm. This happen when i am trying to recreate other curves in figure 3b as well. I wonder if i missed any parameters for the solver. Any help would be appreciate!
Here is my code: