Discussion Closed This discussion was created more than 6 months ago and has been closed. To start a new discussion with a link back to this one, click here.

How to evaluate overlap integrals between two eigenmodes?

Please login with a confirmed email address before reporting spam

Issue: I am calculating the eigenmodes of some electromagnetic structure. Afterwards, I want to evaluate an overlap integral between the fields of two different eigenmodes over some domain within the structure. How can I do that?

Approach so far:

  1. I have created a 3D model of my structure (using Electromagnetic Waves, Frequency Domain) and set up an Eigenfrequency study.
  2. Under definitions, I have defined an integral operator intop1 that integrates over the requested domain.
  3. Under results, I have created a global evaluation and put in the expression intop1( conj( emw.Ex)*emw.Ex )
  4. Now I execute my study and then the press evaluate button of the global evaluation. Since my system has several Eigenmodes, the evaluation gives me a list of values (one for each Eigenmode).

This works perfectly; however, it is not what I actually want. Instead of calculating the olverlap of an eigenmode with itself (as currently defined in step 3.) , I want to calculate an overlap intop1( conj(emw.Ex1)*emw.Ex2 ), where emw.Ex1 is the electric field of mode 1 and emw.Ex2 is the electric field of mode 2. Is this possible?


1 Reply Last Post May 4, 2020, 10:26 a.m. EDT
Henrik Sönnerlind COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 4 years ago May 4, 2020, 10:26 a.m. EDT
Updated: 4 years ago May 4, 2020, 10:28 a.m. EDT

You can use the withsol operator to pick out the eigenmodes. Something like:

intop1((withsol('sol1', conj(emw.Ex),setind(lambda,1))*withsol('sol1',emw.Ex,setind(lambda,2)))

For more info, consult the documentation for withsol.

-------------------
Henrik Sönnerlind
COMSOL
You can use the **withsol** operator to pick out the eigenmodes. Something like: intop1((withsol('sol1', conj(emw.Ex),setind(lambda,1))\*withsol('sol1',emw.Ex,setind(lambda,2))) For more info, consult the documentation for withsol.

Note that while COMSOL employees may participate in the discussion forum, COMSOL® software users who are on-subscription should submit their questions via the Support Center for a more comprehensive response from the Technical Support team.