Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Anisotropic materials #80

Open
ledezmaluism opened this issue Aug 21, 2023 · 13 comments
Open

Anisotropic materials #80

ledezmaluism opened this issue Aug 21, 2023 · 13 comments
Labels
enhancement New feature or request

Comments

@ledezmaluism
Copy link

Are anisotropic materials supported?
I couldn't find anything in the documentation or the examples.

@HelgeGehring
Copy link
Owner

Not yet, but it would be great to add that!

I'd guess first of all we need some examples to reproduce to test what we'll implement.

I found this paper https://doi.org/10.1109/JLT.2008.923643

Would you have another example? The simpler the better.

@DorisReiter it wouldn't be much of a change to take care of this in the docs, right?

@ledezmaluism
Copy link
Author

What about comparing with a commercial tool?
I have access to a commercial software that I have been using but I want to move to open source.
So, I could create a simple example and simulate it with and without anisotropy, and then use that data to compare against the results from femwell.
The example I propose would be a photonic waveguide in thin-film lithium niobate.
Would that work?

@HelgeGehring
Copy link
Owner

That would be the second step - but a great second step! thanks for doing that :)

I usually want to reproduce a paper, as it's peer-reviewed and accessible online.

Up to now i didn't need to do a calculation using anisotropic materials, would a tensor like
image
be enough?
Or do we want to put in a full 3x3 matrix?

@ledezmaluism
Copy link
Author

Yes, that tensor is more than enough!

In photonics, typically the direction of propagation is orthogonal to one of the principal axes of the crystal. This is guaranteed in photonic integrated circuits since the surface of the chip is normal to one of the principal axes.

Furthermore, most of the time people place their waveguides along another of the principal axes of the crystal, so the matrix becomes diagonal ($\epsilon_{xy}=0$). I've been simulating these for years and have only ever needed diagonal matrices, so even that would be enough for most applications!

@HelgeGehring
Copy link
Owner

Hmm, that was a little to late, I've implemented now the whole matrix :D
But I'm not yet sure about the four elements which are zero in the matrix above 🤔
Is there no way they could be useful?

I'd guess it's good to have the two off-diagonal in case you use a bent modulator?

Are you using the python or the julia version? I've now implemented it in the julia version, currently in CICD-checking

@DorisReiter
Copy link
Contributor

great to have the full isotropic matrix onboard. I need to update the documentation soon.

@HelgeGehring
Copy link
Owner

There's now an example online in https://helgegehring.github.io/femwell/julia/waveguide_anisotropic.html
It doesn't match exactly the numbers in the paper, but they used finite-difference with a rather corse grid, so I think it's fine that only the first digits match, we're probably more accurate :)

@ledezmaluism could you doublecheck that?

Yes, that tensor is more than enough!

In photonics, typically the direction of propagation is orthogonal to one of the principal axes of the crystal. This is guaranteed in photonic integrated circuits since the surface of the chip is normal to one of the principal axes.

Furthermore, most of the time people place their waveguides along another of the principal axes of the crystal, so the matrix becomes diagonal (ϵxy=0). I've been simulating these for years and have only ever needed diagonal matrices, so even that would be enough for most applications!

@ledezmaluism could you add a bit about that to the docs? Would be amazing to explain a bit why a tensor is useful :)

@DorisReiter yay, thanks :)

@Localidol
Copy link

This is awesome!
Just two quick questions: Is there any chance there will be a Python version of the current example? And can this code be combined with other features, such as the Coulomb solver?

@HelgeGehring
Copy link
Owner

HelgeGehring commented Aug 24, 2023

Yay, thanks for the feedback, happy to hear that :)

Right now I don't see yet a clear way to integrate this in the python version, as I don't see a way to provide epsilon as a matrix using the ElementTriP0/P1. I'll have a closer look.

On the other hand, extending the current example to use the coulomb solver isn't a big deal :)

@Localidol, would you have a paper we can reproduce which uses the anisotropic indices with the coulomb solver?

@Localidol
Copy link

Localidol commented Aug 25, 2023

Understood. I will then implement Julia in my workflow, waiting for a possible Python implementation. :)

@HelgeGehring You could use the example of the Lithium Niobate you used previously.

EDIT: I see I'm already too late. Thank you. This is awesome!

@HelgeGehring
Copy link
Owner

Always happy to help :)

@Localidol would be amazing if you could report how it compares to previous simulations you did / experiments.

Also, it would be just great to have a bit more explanations in that example. Could you maybe add a bit, I think you're that deep in that topic, that it would be super easy for you to explain it a bit :)

It would also be great to add something that actually uses the anisotropic mode solver. Do I already need it in this example? Or would we have to adjust the experiment we simulate?

@HelgeGehring HelgeGehring added the enhancement New feature or request label Aug 25, 2023
@bernwo
Copy link

bernwo commented Jun 6, 2024

Hi, has there been any progress on the anisotropic epsilon implementation for Python?

@HelgeGehring
Copy link
Owner

Not yet, I'm happy to review a pull request and give some tips how to implement it :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants