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.

Adding Refractive Index

Please login with a confirmed email address before reporting spam

Hi

I m a beginner in COMSOL. I m working on GaAs-Air interface. I want to know how to add refractive index to GaAs manually from material properties. I searched in material properties but couldn't find. Can anybody help me in this ?

10 Replies Last Post Apr 12, 2015, 3:04 a.m. EDT

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Nov 13, 2013, 1:44 p.m. EST
Vasanthan:

Just to clarify: do you have a data file that has your n/k values? If so, the way I do it is by creating an interpolation under Model 1-->Definitions-->Functions.

I generally use a .txt file for input, and so the "Data format" is "Spreadsheet". For a three column data set that looks like | wavelength/frequency | n | k |, your "Number of arguments" is "1", and your "Functions" (say n_GaAs and k_GaAs) are going to be in positions 1 and 2, respectively (COMSOL assumes your spectral "x-data" is in the first column, so position 1 and 2 are really your 2nd/3rd columns)

Under "Units", your "Arguments" unit is whatever unit the spectral term took--I generally use frequency for the spectral term, so I use "Hz". Since n/k are unitless, the "Function" unit is "1". Once you import the data you can verify through the plot that it looks proper.

But this is half of the process. Now that you have an interpolated function for your index, you must include it in the material. If the material does not have a "Refractive Index" property, select the material and under "Material Properties"-->"Electromagnetic Models" you can right-click and add to the material. Under "Model Inputs", I choose to add frequency, and so under "Output Properties" the expressions I would input are n_GaAs(freq) and k_GaAs(freq).

And there you have it. You may want to combine steps 1 and 2 by right-clicking on the
"Refractive Index" property and creating the function from there, but I like to keep all my functions under "Definitions".

-Ado
Vasanthan: Just to clarify: do you have a data file that has your n/k values? If so, the way I do it is by creating an interpolation under Model 1-->Definitions-->Functions. I generally use a .txt file for input, and so the "Data format" is "Spreadsheet". For a three column data set that looks like | wavelength/frequency | n | k |, your "Number of arguments" is "1", and your "Functions" (say n_GaAs and k_GaAs) are going to be in positions 1 and 2, respectively (COMSOL assumes your spectral "x-data" is in the first column, so position 1 and 2 are really your 2nd/3rd columns) Under "Units", your "Arguments" unit is whatever unit the spectral term took--I generally use frequency for the spectral term, so I use "Hz". Since n/k are unitless, the "Function" unit is "1". Once you import the data you can verify through the plot that it looks proper. But this is half of the process. Now that you have an interpolated function for your index, you must include it in the material. If the material does not have a "Refractive Index" property, select the material and under "Material Properties"-->"Electromagnetic Models" you can right-click and add to the material. Under "Model Inputs", I choose to add frequency, and so under "Output Properties" the expressions I would input are n_GaAs(freq) and k_GaAs(freq). And there you have it. You may want to combine steps 1 and 2 by right-clicking on the "Refractive Index" property and creating the function from there, but I like to keep all my functions under "Definitions". -Ado

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Nov 13, 2013, 8:44 p.m. EST
Dear Bryan Adomanis

Actually Now I had imported Refractive index values via interpolation. I had converted n and k values to Relative permitivity say GaAs_real and GaAs_imag.

Previously in Parameters I had defined Lambda = 1000 and frequency = c_const/Lambda[nm]. I had used nm in Lambda since imported (ex. GaAs_real) wavelength values as say 800 ..... without nm.

In GaAs Material properties I had defined Relative permittivity as = GaAs_real(Lambda)-j*GaAs_imag(Lambda). I think this is correct definition.

So In Parametric sweep now I can do Lambda dependent.

(I had attached the concept of my simulation as picture where you can understand my idea)

My Goal is to get PL spectra (may be Transmission ) vs wavelength. I had placed Point in GaAs and used that as Dipole source. My target is to achieve Transmission spectra coming out from GaAs vs wavelength (say 800-1200nm). I m really confused here how-to-do. For obtaining transmission spectra do I need to use port condition or what ?
Dear Bryan Adomanis Actually Now I had imported Refractive index values via interpolation. I had converted n and k values to Relative permitivity say GaAs_real and GaAs_imag. Previously in Parameters I had defined Lambda = 1000 and frequency = c_const/Lambda[nm]. I had used nm in Lambda since imported (ex. GaAs_real) wavelength values as say 800 ..... without nm. In GaAs Material properties I had defined Relative permittivity as = GaAs_real(Lambda)-j*GaAs_imag(Lambda). I think this is correct definition. So In Parametric sweep now I can do Lambda dependent. (I had attached the concept of my simulation as picture where you can understand my idea) My Goal is to get PL spectra (may be Transmission ) vs wavelength. I had placed Point in GaAs and used that as Dipole source. My target is to achieve Transmission spectra coming out from GaAs vs wavelength (say 800-1200nm). I m really confused here how-to-do. For obtaining transmission spectra do I need to use port condition or what ?


Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Nov 14, 2013, 4:17 p.m. EST
I do not know your geometry scale for this problem, but there is a concern about trying to extract a transmission within a short working distance.

Certainly, you could put a boundary probe on the top air boundary to record the transmitted field, but there are several questions to determine. It is far enough away from the GaAs/Au structure to form a uniform field appropriate for retrieval? How do you determine the baseline "incident" power from a point dipole inside a small structure (i.e. in the near field)?

I've set up a short example that is probably not very accurate, but at least demonstrates the challenges of trying to do what you have requested. I set up a boundary probe on both the air and the GaAs/Air interfaces, as well as a point domain probe placed near the dipole. The results of the normalized and averaged power transmittances are shown in the global 1D plots, and show the discrepancies between using the GaAs/air boundary and the point probe.

Keep in mind I am working in "freq" terms, but either you can switch it around for "lamb", or you can just edit my "Parameteric 1" component to sweep what wavelengths you want.
I do not know your geometry scale for this problem, but there is a concern about trying to extract a transmission within a short working distance. Certainly, you could put a boundary probe on the top air boundary to record the transmitted field, but there are several questions to determine. It is far enough away from the GaAs/Au structure to form a uniform field appropriate for retrieval? How do you determine the baseline "incident" power from a point dipole inside a small structure (i.e. in the near field)? I've set up a short example that is probably not very accurate, but at least demonstrates the challenges of trying to do what you have requested. I set up a boundary probe on both the air and the GaAs/Air interfaces, as well as a point domain probe placed near the dipole. The results of the normalized and averaged power transmittances are shown in the global 1D plots, and show the discrepancies between using the GaAs/air boundary and the point probe. Keep in mind I am working in "freq" terms, but either you can switch it around for "lamb", or you can just edit my "Parameteric 1" component to sweep what wavelengths you want.


Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Nov 15, 2013, 5:09 a.m. EST
Hi Bryan Adomanis

First of all thanks for your model and try. Its really helpful since I m just beginner in COMSOL. I had attached the geometry of my structure . Previously i used Scattering BC, but now changed to PML as per your ex.

For obtaining transmission(hereafter T or PL) spectra, i think we can adjust the height of transmission monitor to get the best from GaAs top surface.

Coming to your 2nd point - //How do you determine the baseline "incident" power from a point dipole inside a small structure (i.e. in the near field)?// I couldn't understand this ? Why we have to determine the baseline incident power ?

I understood that you used Boundary probes for obtaining T. In Relative permittivity it should be square of refractive index right ?

And in Dipole, you had chosen Dipole moment . How about choosing Magnitude and direction and is it possible for getting T??
Hi Bryan Adomanis First of all thanks for your model and try. Its really helpful since I m just beginner in COMSOL. I had attached the geometry of my structure . Previously i used Scattering BC, but now changed to PML as per your ex. For obtaining transmission(hereafter T or PL) spectra, i think we can adjust the height of transmission monitor to get the best from GaAs top surface. Coming to your 2nd point - //How do you determine the baseline "incident" power from a point dipole inside a small structure (i.e. in the near field)?// I couldn't understand this ? Why we have to determine the baseline incident power ? I understood that you used Boundary probes for obtaining T. In Relative permittivity it should be square of refractive index right ? And in Dipole, you had chosen Dipole moment . How about choosing Magnitude and direction and is it possible for getting T??


Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Nov 15, 2013, 12:00 p.m. EST
The PML would be necessary for the air boundaries, but not the Au boundaries--it was just easier to implement using PML all around.

I'd like to address first that you have n/k data, but you keep reverting to permittivity. I would not suggest this. I have looked extensively into the different "Electric displacement field" models, and it will generally be best to use n/k data and solve for index if you have good n/k data on your materials. Look at the equations for "refractive index": eps_r = (n-ik)^2, and sigma = 0. The loss is accounted for in the k term, so it is permissive for sigma to be zero. But when solving for "relative permittivity", defining eps_r = (n-ik)^2 in your material properties and setting sigma = 0 is the SAME MODEL as the index model. It appears that the best use for the perimittivity model is when the eps_r term is expected to be a real component, and the sigma term is expected to be the DC conductivity, and the material loss is encompassed in this conductivity term. Now, either eps_r or sigma MAY be complex, such as utilizing an optical conductivity, but if both term are complex, it seems from the equations that the loss would be double counted--this was confirmed by a COMSOL tech.

From a test of several different displacement field models, I have found that for gold or aluminum in the optical regime, the only way to accurately match n/k data is to use the Drude-Lorentz model (out to five oscillators), defining eps_infinity as 1-(f0*omega_p^2)/((2*pi*freq)^2-i*(gamma_p*2*pi*freq)), with f0 the high frequency oscillator strength, and omega_p and gamma_p the plasma and damping frequencies, respectively. I've attached a graph of using three different models and measuring the well-known reflection of aluminum in the optical regime. The n/k and Drude-Lorentz models match well, but the relative permittivity model, using a real eps_r and a DC sigma, do not, because it does not account for the optical transitions. I will upload the model so you can play around with different methods, too.

For your other questions, I think I will post to your other discussion, as this would be getting off the original subject.


The PML would be necessary for the air boundaries, but not the Au boundaries--it was just easier to implement using PML all around. I'd like to address first that you have n/k data, but you keep reverting to permittivity. I would not suggest this. I have looked extensively into the different "Electric displacement field" models, and it will generally be best to use n/k data and solve for index if you have good n/k data on your materials. Look at the equations for "refractive index": eps_r = (n-ik)^2, and sigma = 0. The loss is accounted for in the k term, so it is permissive for sigma to be zero. But when solving for "relative permittivity", defining eps_r = (n-ik)^2 in your material properties and setting sigma = 0 is the SAME MODEL as the index model. It appears that the best use for the perimittivity model is when the eps_r term is expected to be a real component, and the sigma term is expected to be the DC conductivity, and the material loss is encompassed in this conductivity term. Now, either eps_r or sigma MAY be complex, such as utilizing an optical conductivity, but if both term are complex, it seems from the equations that the loss would be double counted--this was confirmed by a COMSOL tech. From a test of several different displacement field models, I have found that for gold or aluminum in the optical regime, the only way to accurately match n/k data is to use the Drude-Lorentz model (out to five oscillators), defining eps_infinity as 1-(f0*omega_p^2)/((2*pi*freq)^2-i*(gamma_p*2*pi*freq)), with f0 the high frequency oscillator strength, and omega_p and gamma_p the plasma and damping frequencies, respectively. I've attached a graph of using three different models and measuring the well-known reflection of aluminum in the optical regime. The n/k and Drude-Lorentz models match well, but the relative permittivity model, using a real eps_r and a DC sigma, do not, because it does not account for the optical transitions. I will upload the model so you can play around with different methods, too. For your other questions, I think I will post to your other discussion, as this would be getting off the original subject.


Please login with a confirmed email address before reporting spam

Posted: 9 years ago Apr 9, 2015, 10:27 p.m. EDT
Dear Ado,

now i am learnining the both RF, waveoptics modules. I am new to the comsol so i got a small doubt while following the procedure.
this page is really helpful to me. thanks for your simple and nice explanation towards the topic.

I-step :
You said after importing the data of n/k values we must put 'n' values in first and 'k' values in second postion. To do so, do we need to insert individually the 'n' and 'k' values ??

I mean, (I cannot attach n/k data file). As you know that we will have generally the n/k values in same sheet with wavelength. So, do we need to seperate them and insert as two files or simply we need to name (in function name postion) them differently in 1,2 positions for the same file which we already imported. ??

II-step :
Also, I defined wavelength as "wl" in global parameters, also frequency as "f0 = c_const/wl". And I used "Hz" in arguments. Is that ok ?? And does it enough to add this sheet data to material properties or as vasanthan said again we need to define the epsilon in material properties. Actually this process is a bit confusing me. please explain me stepwise (simply putting like this arrow marks --> or in convenient way).

Hope my question is good enough to make you use of your time. thank you in advance.
Dear Ado, now i am learnining the both RF, waveoptics modules. I am new to the comsol so i got a small doubt while following the procedure. this page is really helpful to me. thanks for your simple and nice explanation towards the topic. I-step : You said after importing the data of n/k values we must put 'n' values in first and 'k' values in second postion. To do so, do we need to insert individually the 'n' and 'k' values ?? I mean, (I cannot attach n/k data file). As you know that we will have generally the n/k values in same sheet with wavelength. So, do we need to seperate them and insert as two files or simply we need to name (in function name postion) them differently in 1,2 positions for the same file which we already imported. ?? II-step : Also, I defined wavelength as "wl" in global parameters, also frequency as "f0 = c_const/wl". And I used "Hz" in arguments. Is that ok ?? And does it enough to add this sheet data to material properties or as vasanthan said again we need to define the epsilon in material properties. Actually this process is a bit confusing me. please explain me stepwise (simply putting like this arrow marks --> or in convenient way). Hope my question is good enough to make you use of your time. thank you in advance.

Please login with a confirmed email address before reporting spam

Posted: 9 years ago Apr 9, 2015, 10:41 p.m. EDT
Surabi

Coming to refractive index file (Which has both n k values), you can import the file and mention n and k positions. By default comsol understands first column (position 0 in default) as wavelength. So you need to mention n (position 1) and k (position 2). Another option will be having n & k values separately for wavelength. This will be much useful when you want to see the fitting clearly for n or k vs wavelength.

COMSOL simulates by frequency. COMSOL has inbuilt formula conversion from lambda to frequency. For example "frequency = c_const/lambda" By this way you can deal with both. And further more you have to define the permittivity properties of material so that only you can get correct results.
Surabi Coming to refractive index file (Which has both n k values), you can import the file and mention n and k positions. By default comsol understands first column (position 0 in default) as wavelength. So you need to mention n (position 1) and k (position 2). Another option will be having n & k values separately for wavelength. This will be much useful when you want to see the fitting clearly for n or k vs wavelength. COMSOL simulates by frequency. COMSOL has inbuilt formula conversion from lambda to frequency. For example "frequency = c_const/lambda" By this way you can deal with both. And further more you have to define the permittivity properties of material so that only you can get correct results.

Please login with a confirmed email address before reporting spam

Posted: 9 years ago Apr 10, 2015, 1:33 a.m. EDT
thank you vasanthan.
thank you vasanthan.

Please login with a confirmed email address before reporting spam

Posted: 9 years ago Apr 10, 2015, 10:49 a.m. EDT
I've always defined wavelength as a global variable: lamb=c_const/freq. I thought "lambda" was for use in eigenvalue solvers, only, and did not necessarily represent any particular unit-valued variable. COMSOL maybe has changed on me and I did not notice, as I had a working solution.

To add along with what Vasanthan said, you are defining epsilon through your n/k values--you do not define epsilon yourself directly, unless you choose one of the various options under the Electric Displacement Field that define epsilon explicitly. I shall give you the outlined steps for incorporating your own n/k values into your model in order to define epsilon using n/k:

>> First, under Materials-->Refractive Index, upload n/k as an Interpolation as Vasanthan described, giving the dataset a named function (such as n_Si for the real part of the index for Silicon). Make sure you click "Import", or it won't really be loaded. Typically, n_Si will be position 1 and k_Si would be position 2. Be sure to give the proper input argument (I use "um", as my wavelength input is in microns) and function units. The function unit is = 1 for indices.

>> Next, in the Refractive Index settings, insert the n and k functions into Output Property: Relative permittivity and Relative permittivity, imaginary part. This should look like n_Si(lamb) or n_Si(lambda) or n_Si(freq)--however you have the function and the variable defined. This may be the step you are missing.

>> Finally, if you have Electromagnetic Waves-->Wave Equation-->Electric Displacement Field-->EDF Model selected to "Refractive index" (the default), then your material should now have the two properties showing a green check, indicating COMSOL has all it needs to define epsilon for your material.

Happy COMSOL'ing Srivathsava

-Ado
I've always defined wavelength as a global variable: lamb=c_const/freq. I thought "lambda" was for use in eigenvalue solvers, only, and did not necessarily represent any particular unit-valued variable. COMSOL maybe has changed on me and I did not notice, as I had a working solution. To add along with what Vasanthan said, you are defining epsilon through your n/k values--you do not define epsilon yourself directly, unless you choose one of the various options under the Electric Displacement Field that define epsilon explicitly. I shall give you the outlined steps for incorporating your own n/k values into your model in order to define epsilon using n/k: >> First, under Materials-->Refractive Index, upload n/k as an Interpolation as Vasanthan described, giving the dataset a named function (such as n_Si for the real part of the index for Silicon). Make sure you click "Import", or it won't really be loaded. Typically, n_Si will be position 1 and k_Si would be position 2. Be sure to give the proper input argument (I use "um", as my wavelength input is in microns) and function units. The function unit is = 1 for indices. >> Next, in the Refractive Index settings, insert the n and k functions into Output Property: Relative permittivity and Relative permittivity, imaginary part. This should look like n_Si(lamb) or n_Si(lambda) or n_Si(freq)--however you have the function and the variable defined. This may be the step you are missing. >> Finally, if you have Electromagnetic Waves-->Wave Equation-->Electric Displacement Field-->EDF Model selected to "Refractive index" (the default), then your material should now have the two properties showing a green check, indicating COMSOL has all it needs to define epsilon for your material. Happy COMSOL'ing Srivathsava -Ado

Please login with a confirmed email address before reporting spam

Posted: 9 years ago Apr 12, 2015, 3:04 a.m. EDT
Thank you dear Ado,

the way you explained is pretty clear and very helpful to me. Your guess is right, I missed at the same step as I do not input the "freq" or "lambda" in paratheses is the first mistake I did. Next, I mixed up with the n/k values. for this yours and vasanthan's explanations are very helpful to insert the values. Now I am succeeded in inserting the data.

Thanks once again,

Regards,
Srivathsava
Thank you dear Ado, the way you explained is pretty clear and very helpful to me. Your guess is right, I missed at the same step as I do not input the "freq" or "lambda" in paratheses is the first mistake I did. Next, I mixed up with the n/k values. for this yours and vasanthan's explanations are very helpful to insert the values. Now I am succeeded in inserting the data. Thanks once again, Regards, Srivathsava

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.