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.
Eigenvalue Calculations In RF Module With Perfectly Matched Layers: Radiation Q factors
Posted Feb 3, 2012, 3:45 p.m. EST RF & Microwave Engineering 15 Replies
Please login with a confirmed email address before reporting spam
I have one part general info that maybe others will find helpful, and one part question. Here goes:
I've been trying to compute the eigenvalues of dielectric GaAs disk structures (embedded in air or some other dielectric cladding) in the RF module.
In particular, I wanted to find the Q-factor (due to radiation alone) of whispering gallery modes in these structures. The type of mode isn't important, just that I wanted Q-factor for a dielectric structure that can radiate, so the Q factor is not infinity even though all materials are lossless.
For some reasons specific to my problem, I can't do this in the 2D axi-symmetry approach as you'll find in some of the comsol related papers on whispering gallery modes in aix-symmetry.
I'm forced to do 3D. Anyway, I had assumed that simply using perfectly matched layers (PMLs) of one wavelength thickness would do the trick and allow any radiation associated with the eigenmode to be absorbed w/o reflection and just die in the PMLs.
I've had lots of success with comsol default PMLs in say, steady state (frequency domain, stationary) analysis. So I was really puzzled why the choice of the size of my cladding layer before PMLs affected DRAMATICALLY the Q factor reported by comsol. The resonant frequency (and consequently, wavelength) were relatively unaffected by how big a domain I drew around my (nm to micron sized) disk.
Turns out, comsol drops a scaling factor in the "coordinate stretching in the complex plane" that is equal to the wavelength. This means (and I worked through the math here, given comsol's definition of the PML stretching) that effectively my physically 1 wavelength (~1200 nm) long PML "looks" like it's 1 METER long after PML stretching. This is no good--especially when you only have 5 elements in that 1 wavelength long PML. It means that it is TERRIBLY undermeshed. This normally just leads to "Singular Matrix" for most cases, but in the off chance you DO get a solution, the Q factor is nonsense, but yet the wavelength is in the ballpark.
The fix:
Set the scaling factor, F, as it appears in the PML subnode equal to 1 wavelength (of the mode you're interested in, so you kinda have to take a guess, just like you do at where to search for eigenmodes, you can tune later once comsol reports a wavelength from a first run...remember, the wavelengths [frequencies] I think are trustworthy regardless of PML choice).
This worked like a charm for me, and I believe is a general approach for getting Comsol to report Quality factors truthfully. I compared my results for a disk that's 2 microns long made out of GaAs (easy to find in literature--it's all over a google search for "whispering gallery modes + comsol"), and got decent agreement with the Q factor they report from axi-symmetry analysis.
Anyway, I hope the above may help others, since I've struggled for a month now before I read the fine print in comsol and found they drop the "lambda" term in their coordinate stretching in eigenvalue calculations so as to avoid nonlinear dependence (b/c wavelength and frequency are connected, the stretching would be eigenvalue dependent otherwise)...
I do have one question, if anyone can help. Comsol reports 1 Q-factor from taking the imaginary part of the eigenvalue and dividing by twice the real part of that same eigenvalue calculation. If it were REALLY REALLY correct,then I should be able to go into post processing mode and do the following:
1. Know Q =(defined)=omega_0*(Time_Avg_Energy_at_resonance)/(Time_avg_power_disssipated_at_resonance)
2. Extract omega_0, the resonant ANGULAR frequency, from the imaginary part of the eigenvalue
3. [3D Volume] Integrate energy density over entire model space (all domains) to get the numerator
4. [3D Volume] Integrate resistive losses (or power dissipation density in V4.2, they're the same) to get the denominator.
I do this and I get the computed quality factor from (1) to be EXACTLY 2 times that which comsol reports.
Anybody have any ideas on where this is coming from. I'm happy knowing ONE of the answers is correct and that only a factor of 2x separates me from truth, but I'd very much appreciate it if someone could tell me what one is the right one. I'm inclined to believe the computed answer from number (1) above, because it agrees better with numbers I find in the literature for my test case...But even comsol's direct answer isn't too far off those values either (well, a factor of 2....but maybe comsol IS right).
Thanks!
--Matt
Please login with a confirmed email address before reporting spam
could it be linked with the factor 2 one uses (mostly) beteen Quality factor and Damping ration ? This is notation/convention dependent and COMSOL uses one (not sure which one ;)
HAve you cheked the chain of equations in the sub node equation view for each contributive node ?
--
Good luck
Ivar
Please login with a confirmed email address before reporting spam
This might be a bit too primitive, but it took me a long time to figure it out. I really enjoyed this post, and since it was a related topic, I decided to post it here.
Apparently, PMLs don't work if the loss of a material is set to 0 . COMSOL will return a singular matrix error without any comments about the source of the problem. In such cases, just set the value to a very small number, ie: 1E-15.
Hope this will save others some time..
Arash
Please login with a confirmed email address before reporting spam
interseting, ... by the way use rapter eps or 10* eps ... as "small number" then you are sure it wil lreally exist.
Check "eps" in the doc
--
Good luck
Ivar
Please login with a confirmed email address before reporting spam
thank you, Matt, for sharing your experience.
I am trying to analyze a silicon waveguide by COMSOL 3.5. I want to find effective index, but my simulations do not have good precision.
At first, I thought that my geometry does not need PML because of its high confinement, but now I think that the problem may come from this. So, I want to use PML, but there are some questions for me:
1.How do I choose width of PML region in the geometry?
2.Should I change width of PML region for different wavelength in the geometry?
3.Is adjusting of width in x-direction and y-direction necessary in subdomain setting window? And how do I do this?
Thanks for your help.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
Are you doing a 3D model? What I was talking about in the post above was for a 3D eigenmode.
If you're talking about "effective index" for a waveguide, typically you only need to model a 2D cross-section of the core and cladding.
So, you draw a "box" for your core, then you draw another box around core. Typically I made the "cladding box" ~5 free space wavelengths larger than the cladding (i.e. you'd go 5 FS wavelengths from any edge of the core until you encountered the end of the cladding box).
Then, you set your material parameters and perform boundary mode analysis (for the whole 2D core-inside-of-cladding-system). I forget the option or module exactly that solves that problem in comsol 3.5 since it's been so long since I used it.
If your cladding is large enough for the type of confinement expected in your waveguide, then the exterior boundary conditions of the "cladding box" shouldn't matter. You could choose PEC or PMC and get the same answer (that's a handy check Comsol suggests to assure you set it up correctly).
Ok, I hope that helps...I'm also certain there's a 2D boundary mode analysis tutorial/example in the .mph help files.
Good luck!
--matt
Please login with a confirmed email address before reporting spam
I use 2D mode analyses, actually I want to calculate dispersion, and need to calculate second order differentiation, So I need high precision. When I calculate dispersion and compare it with reported result, my result have some differences. For example, I find maximum dispersion -13ps/nm/km, but in the paper it is 20 ps/nm/km! Or I find ZDW=1553nm, but it is 1550nm in the paper,while the overall shape of both figures are similar. I think precision of effective index even in the range of e-14 affects the dispersion profile. So, I decided to use PML.
Would you please answer the first and the second question (that I had asked) generally?
Thanks for your help.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
Ok. What I'm about to say are just rules of thumb, but they've worked well for me, and are inherently based on what physics comosl says it's using. In only say this, because the answers below might not be true ALL the time:
1. Comsol says chooose 1 wavelength THICK PMLS for the material that the PMLs are made of. So, if your cladding is, say, SiO2, then at 800 nm your wavelength is 800/1.5 ( n_sio2 ~ 1.5) or ~530 nm thick for PML regions.
2. Yes. I think I actually explained that in (1). Whatever frequency you're operating at, figure out the wavlength in the cladding material,and make your PML that thick. However, honestly, sometimes you can get away with one thickness for several wavelengths (e.g. I might not bother to change the PML thickness between 800 nm and 810 nm since it's only 10 nm change). NOTE this is the ACTUAL thickness you draw in the geometry, NOT the "effective" thickenss in subdomain setting.
3. Yes if I remember correctly it's in the subdomain setting window. I don't have 3.5 anymore, but I do remember it being on a tab called "PML". That's what you might tinker with to get good absorption in eigenvalue analysis. In V4+ you get an option for "scaling factor of PML", so maybe look for equivalent of that in 3.5.
Good luck again!
--matt
Hello;
thank you, Matt, for sharing your experience.
I am trying to analyze a silicon waveguide by COMSOL 3.5. I want to find effective index, but my simulations do not have good precision.
At first, I thought that my geometry does not need PML because of its high confinement, but now I think that the problem may come from this. So, I want to use PML, but there are some questions for me:
1.How do I choose width of PML region in the geometry?
2.Should I change width of PML region for different wavelength in the geometry?
3.Is adjusting of width in x-direction and y-direction necessary in subdomain setting window? And how do I do this?
Thanks for your help.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
Thank you very much, your answers are very useful for me.
I have another question, and I think it is the last one : there are two boxes for width in x-direction and y-direction in subdomain setting, PML tab that filled by predefined values: Sdx_guess_rfwv and Sdy_guess_rfwv, I do not know whether I should change these boxes or no?
Do you adjust "scaling factor of PML" in COMSOL 4+, on the bases of what?
Thanks for your help again.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
First, I change F, the scaling factor, to 1 wavelength in the material. This is because the normal expression for PMLs does a scaling that has a factor in it that makes the coordinate stretching proportional to the wavelength. For numeric reasons, comsol drops this lambda factor in eigenvalue analysis (otherwise the "effective thickness" of the PML is dependent on the wavelength, but that's what you're trying to solve for!!). By setting F = lambda_material we restore this factor to make the stretching work again. However, you'll note that you have to have a good idea of what the eigenfrequency, and thus the FS wavelength will be BEFORE you solve the problem. So there's some educated guessing here...
Anyway, now for my guess: I would multiply BOTH the x and y components by 1 over the wavlelength (1/wavelength). So if your eigenanalysis is set at a frequency of, say 300 THz, then your FS wavlength is 1000 nm. Thus, I'd shoot for scaling both those by 1/1000e-9. Example: Sdx_guess_rfwv * 1/1000e-9.
The above paragraph is my best guess as to what you might try (or maybe I have it upside down and in fact you do Sdx_guess_rfwv TIMES 1000e-9?). You could try both I guess.
Also I'm not 100% certain you want to do it to both Sdx_guess_rfwv and Sdy_guess_rfwv. But, again, I explained what I'd try to start.
Two other hints come to mind:
1. If you have the users manual, look up PML and look for the EXACT equation they use for scaling, then you might see what i'm talking about for the lambda and F factors...
2. I'm not sure if 3.5 allows "circular" PMLs, but you could imagine that your cladding and outermost PMLs could be circular in their geometry. IF that is allowed, then I'd expect only one variable to scale--something like SdR_guess_rfwv, where R is the radial coordinate (as opposed to x or y components in cartesian).
You have me curious now, so let me know if you ever get this to work out. Offically I never did this in 2D (only did it in 3D), but I'm curious to see what the consequences are in 2D for your case.
Good luck again!
--matt
Hi Matt,
Thank you very much, your answers are very useful for me.
I have another question, and I think it is the last one : there are two boxes for width in x-direction and y-direction in subdomain setting, PML tab that filled by predefined values: Sdx_guess_rfwv and Sdy_guess_rfwv, I do not know whether I should change these boxes or no?
Do you adjust "scaling factor of PML" in COMSOL 4+, on the bases of what?
Thanks for your help again.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
Thank you very much. Let me examine your advices; I will announce you.
Thank you again.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
I examined your advices and now I want to share the results with you.
finding effective index by hybrid mode analysis in RF module was the aim. The Free space wavelength is 2000nm, and the width of PML region has the same value in all below conditions.
At first, I used Cartesian PML by these setting and results:
width in x direction: Sdx_guess_rfwv
width in y direction: Sdy_guess_rfwv
Neff= 1.717728741193909
Then:
width in x direction: (1/lamba0_rfwv)*Sdx_guess_rfwv
width in y direction: (1/lamba0_rfwv)*Sdy_guess_rfwv
Neff= 1.717728741194003
The interesting point in this case was: variation in the effective index in every run (changing in range of e-13 )
Then:
width in x direction: lamba0_rfwv*Sdx_guess_rfwv
width in y direction: lamba0_rfwv*Sdy_guess_rfwv
Neff= 1.717728741194029
again,the interesting point in this case was: variation in the effective index in every run (changing in range of e-13 )
Also, implementing circular PMLs is possible in 2D mode analysis.
For comparison, I bring below coordinate transform in COMSOL 3.4 and 4+:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
V3.4:
t'=(t/dt)*(1-i)*lambda>>>> t=the coordinate , dt= width of PML region, lambda= wavelength
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
V4+:
t'=(t/dt)^n*(1-i)*lambda*F>>>> t=the coordinate , dt= width of PML region, lambda= wavelength, n=PML order , F= scaling factor.(when F=n=1, the case is simmilar to V3.4)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
I my self think the number multiplied by Sdx_guess and Sdy_guess equals with F, and when it is one; the results are more accurate , but when it is more than one, the results are less accurate because of scaling of meshes in the PML regions. Finally I think it is not necessary changing F or the multiplied number, if the PML width equals with the wavelength (it is my my understanding that likely is wrong!)
Now, some questions:
1. I did not understand the first paragheraph of your advices compeletly, is it related two my problem? I don't think.
2.I saw somewhere on the internet, it is said that PML does not work in V3.4, do you agree? what about V3.5?
3. what is your opinion about above results?
4. I think F should be more than 1, not less than 1. is it true?
5. In one of the posts in this topic, it is said that loss of materials in PML regions should not be 0, and should have a little value, what is your opinion?
Thanks for your valueable guidance.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
So here's my thoughts:
1. I think my first paragraph is a bit related to your problem. It's my understanding that when comsol does eigenvalue analysis the original coordinate stretching:
t'=(t/dt)*(1-i)*lambda
becomes
t'=(t/dt)*(1-i)
in EIGENVALUE analysis only. So, you could see you'd want to multiply by a number related to the wavelength since comsol dropped it. However, I can't verify it works this way with boundary mode eigenanalysis. I only know that to be true for 3D cavity eigenmodes. Maybe it doesn't, because in boundary mode analysis you pick the frequency, and so you'd also set the FS wavelength.
2. I never tried PML in 3.4, only in 3.5a. When I used it in 3.5a I was doing wave propagation down a waveguide where the mode had to be absorbed without reflection. It worked very well for me, so I'd say it's definitely OK in 3.5a, but maybe you should be more skeptical about 3.4.
3/4. Well, If you mean the F from V4+, I'm just about certain it should be less than 1. Again, comsol does this:
It takes the original expression for stretching:
t'=(t/dt)*(1-i)*lambda*F (Eq. 1)
and turns it into
t'=(t/dt)*(1-i)*F (Eq. 2)
for eigenanalysis.
Thus, I think it should be less than one if lambda<1. Because here's what I do
F=lambda
so
t'=(t/dt)*(1-i)*F from Eq. 2
becomes
t'=(t/dt)*(1-i)*lambda
Just like when we weren't doing eigenanalysis, or also when F=1.
So, anyway, that's my thinking. I guess, in your case, I just don't know if comsol is dropping the lambda in the first place to give Eq. 2 when it solves. If it's doing Eq. 1, then no F factor would be necessary at all.
5. I saw that too. I'm not exactly sure. I know in the problems I solved that this wasn't necessary. If you look at what the coordinate stretching does when a wave encounters it, well, it makes it look like it's a lossy material (but impedance matched to domain inside PML). However, just because it didn't matter in my case, it might not be the same in your case. So, maybe give that a try. I think above in this message thread, someone said that there's even a built in variable for "small" numbers called eps0 (or something). I'd probably give it a try, I'm always surprised by how much I figure out about Comsol just by trial and error ;)
Ok then, good luck again! Hope that helps!
--matt
Hi Matt,
I examined your advices and now I want to share the results with you.
finding effective index by hybrid mode analysis in RF module was the aim. The Free space wavelength is 2000nm, and the width of PML region has the same value in all below conditions.
At first, I used Cartesian PML by these setting and results:
width in x direction: Sdx_guess_rfwv
width in y direction: Sdy_guess_rfwv
Neff= 1.717728741193909
Then:
width in x direction: (1/lamba0_rfwv)*Sdx_guess_rfwv
width in y direction: (1/lamba0_rfwv)*Sdy_guess_rfwv
Neff= 1.717728741194003
The interesting point in this case was: variation in the effective index in every run (changing in range of e-13 )
Then:
width in x direction: lamba0_rfwv*Sdx_guess_rfwv
width in y direction: lamba0_rfwv*Sdy_guess_rfwv
Neff= 1.717728741194029
again,the interesting point in this case was: variation in the effective index in every run (changing in range of e-13 )
Also, implementing circular PMLs is possible in 2D mode analysis.
For comparison, I bring below coordinate transform in COMSOL 3.4 and 4+:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
V3.4:
t'=(t/dt)*(1-i)*lambda>>>> t=the coordinate , dt= width of PML region, lambda= wavelength
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
V4+:
t'=(t/dt)^n*(1-i)*lambda*F>>>> t=the coordinate , dt= width of PML region, lambda= wavelength, n=PML order , F= scaling factor.(when F=n=1, the case is simmilar to V3.4)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
I my self think the number multiplied by Sdx_guess and Sdy_guess equals with F, and when it is one; the results are more accurate , but when it is more than one, the results are less accurate because of scaling of meshes in the PML regions. Finally I think it is not necessary changing F or the multiplied number, if the PML width equals with the wavelength (it is my my understanding that likely is wrong!)
Now, some questions:
1. I did not understand the first paragheraph of your advices compeletly, is it related two my problem? I don't think.
2.I saw somewhere on the internet, it is said that PML does not work in V3.4, do you agree? what about V3.5?
3. what is your opinion about above results?
4. I think F should be more than 1, not less than 1. is it true?
5. In one of the posts in this topic, it is said that loss of materials in PML regions should not be 0, and should have a little value, what is your opinion?
Thanks for your valueable guidance.
Sincerely,
Uldouz
Please login with a confirmed email address before reporting spam
Thank you very much, your advices are really useful.
In my case, COMSOL is not dropping lambda, so as you say F is not necessary.
I'm agree that setting loss of material to a nonzero value is not necessary, because by using PMLs, complex coordinate is an equivalent for lossy materials and for decaying fields.
Thank you again.
Best regards,
Uldouz
Please login with a confirmed email address before reporting spam
Please login with a confirmed email address before reporting spam
I am a freshman on using the Comsol. Maybe you have found your solution. I suggest checking in the "solve parameters". We should ensure the "search for eigenfrequencies around" matches the "eigenvalue linearization point" (with a factor -2pi*i). And setting them with nonzero values.
--
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.
Suggested Content
- KNOWLEDGE BASE LDAP configuration for a Model Manager server using Apache Directory Studio
- FORUM Perfectly matched layers
- KNOWLEDGE BASE COMSOL 6.3 macOS Apple Silicon Native Support
- KNOWLEDGE BASE Resolving Gaps and Intersections in Imported CAD Assemblies
- BLOG Mode Analysis for Electromagnetic Waveguides in COMSOL®