Would you be interested to develop the EMTL library on top of MTL4/OpenKL? We are looking for application developers that want to explore running their codes on multi-core, GPGPU, and DMM clusters.

Looking forward to your reply,

Sincerely,

Dr. Theodore Omtzigt
CEO and Founder
Stillwater Supercomputing, Inc.

deinega, 2012/01/23 00:05

Sorry, right now we don't have time for this…

Lu Jia, 2012/06/28 16:23

Dear Sir/Madam:

Are there any suggestion for antireflective coatings calculation? I failed to calculate the reflectance of grating surface by changing the example file of test_plate, and the grating surface application is almost the same as that of antireflective coatings.
Looking forward to your reply.

deinega, 2012/07/03 09:15

Dear Lu Jia. I answered directly to your email.

Lu Jia, 2012/07/03 15:28

Thanks for your kindly help!

Simon Huskier, 2012/08/25 19:02

Dear Deinega,

When can we see the source code of EMTL and the documentation too? I am exciting to try it.

Best regards,

Simon

deinega, 2012/08/30 07:13

Dear Simon,

I would be happy to give you information about source code, but unfortunately it does not depend on me only. Can you please write an email to fdtd@kintechlab.com with your request

Best, Alexei Deinega

Simon, 2012/08/31 05:30

Thanks, Deinega.

Simon

Gennadiy, 2013/08/24 18:05

Dear Deinega,

while compilation of the test_mie.cpp in VC++2010 express I have met the error:

c:\users\user\documents\visual studio 2010\projects\test_mie\test_mie\emdefs.h(16): fatal error C1083: Cannot open include file: 'vector_3.h': No such file or directory

[#include “vector_3.h” in emdefs.h]

Please let me know what is wrong?

Thank you,
Gennadiy

Gennadiy, 2013/09/01 17:58

Dear Alexei,

After careful reading the instruction how to install I understood where I was wrong. Now the program works as expected in Net.2010 VC++ (32). It allows some extension: I easily added interactivity to the code with the use of the inputBox and messageBox facilities. After that I executed all examples from a simple menu (inputbox) without recompilations. My recommendations are to add the libraries *.lib, *.dll for 64 bit system, and also for the use them in VS .Net-2012. Thanks to authors for good job!

-Gennadiy

deinega, 2013/09/07 07:48

Hi Gennadiy, we are currently modifying the code to make it combilable for 64bit.

shyonto, 2014/01/24 22:37

sir, would u please tell me how you calculated tex:\varepsilon_{\infty} in your fitting program written in matlab ? And how you determined the multiplying factors of deps,Wo, gamma & gamma'?

deinega, 2014/02/18 04:33

Range of \varepsilon_{\infty} values is specified in matlab script (you can change it). Matlab sript finds the fitting with the optimal value for \varepsilon_{\infty}.
As for multiplying factors, I didn't understand the question

Helmut Maeckel, 2014/04/18 15:02

Dear Alexei,

I would like to use your code to simulate reflectance at isotextured silicon and silicon textured with random pyramids. As an input I want to use height maps measured with a laser scanning microscope or a synthetic map build from over 1000 overlapping, randomly distributed pyramids. In the geometry, I found that you can build pyramids, but it would be very combersome to do so for so many pyramids. Do you have any possibility to read a height map or a 3D mesh?

Best regards,

Helmut

Dr. Helmut Mäckel

Department of Solar Energy Research

Institute of Condensed Matter Physics

Leibniz University Hanover, Germany

deinega, 2014/06/20 05:36

We already answered by email …

Nikhil Deep Gupta, 2014/07/11 13:56

Sir, I am trying to run the test_mie I have downloaded from your site but do not able to build solution and again getting error LNK2019 and LNK2001 followed by fatal error LNK1120 like error LNK2019: unresolved external symbol “public: virtual __thiscall uiExperiment::~uiExperiment(void)” (??1uiExperiment@@UAE@XZ) referenced in function _main. Do you have any suggestions?

Chenyang Shen, 2014/11/12 05:44

Dear Sir/Madame:

How can I set the FDTD unit of length in the EMTL?

Looking forward to your reply,

Sincerely

deinega, 2014/11/27 06:47

You don't need to set it, since Maxwell equations are scalable

Chenyang Shen, 2014/12/01 16:24

Dear Sir/Madame:
In the tutorial,there is an example.

#include “uiexp.h”
int main(int argc,char **argv){
emInit(argc,argv);
uiExperiment task;
task.SetInternalSpace(0,Vector_3(1,1,3));
task.SetResolution(.025);
task.SetBC(BC_PER,BC_PER,BC_PML);
valtype theta=45*M_PI/180.; angle of incidence, radians. theta=0 corresponds to normal incidence
Vector_3 k(0,sin(theta),cos(theta));
Vector_3 E(1,0,0); s polarization
Vector_3 E(0,cos(theta),-sin(theta)); p polarization
task.AddTFSFPlane(INF,INF,.5);
task.SetPlaneWave(k,E);
task.SetOblique(100,1);
task.AddObject(emMedium(4,2),new Sphere(.375,Vector_3(.5,.5,1.5)));
task.AddDetectorSet(“h”,Vector_3(.5,.5,0.25),Vector_3(.5,.5,2.75),iVector_3(1,1,2));
task.AddRTASet(“flux”,2,0.25,2.75);
task.CalculateN(2000);
task.Analyze();
return 0;
}

1.What is the length of the FDTD unit in this example?
2.If I want to change the material of the sphere into gold, how can I set the length of the FDTD unit as 10nm?

deinega, 2015/01/10 03:09

1. In this example length of the FDTD unit is arbitrary.
2. taskAddObject(getAu(.01), new Sphere(…));
0.01 means that we assume that FDTD unit length us 0.01 microns.

Chenyang Shen, 2015/03/15 06:09

In this example, in order to observe more data about frequency range from 1.25 to 2.5 in the output file (flux.d), it requires that frequency intervals must be made smaller. When I change task.CalculateN(2000) into task.Calculate(250) to make frequency intervals from 0.04 to 0.004, the obtained transmittance spectrum curve shape becomes very smooth. But when the material of the ball becomes gold( task.AddObject(getAu(1),newSphere(.375,…..)) instead of task.AddObject(emMedium(4,2),new Sphere(.375,…..)) and the computing time is still set to task.Calculate (250), the obtained data becomes very very big in the output file (flux.d). I think it may be a mistake.Why does it appear this kind of circumstance? Which setting is wrong? How can I make the transmittance spectrum curve shape more smooth in 400nm~800nm when calculating the golden sphere.

Looking forward to your reply,
Sincerely

deinega, 2015/03/18 02:03

Turn off subpixel smoothing, if you are using it… It can be a problem

Chenyang Shen, 2015/04/01 13:04

I feel really sorry to trouble you again. My tutor requires me that I learn related functions of EMTL on oblique incident. When I repeated your article“Implementation of the iterative finite-difference time-domain technique for simulation of periodic structures at oblique incidence”，I encountered some trouble. One example of the paper is about calculating reflectance from a thin gold film (width d = 50 nm) between air and glass (n = 1.5) semi-infinite interfaces. The period a is 0.4μm and the angle of incidence θ is 45°. But the results obtained are quite different from yours. It is unable to read the plasma excitation. My program is listed as follows. Would you please help find what has been wrong with my program.
#include “uiexp.h”

valtype theta=45*M_PI/180.; angle of incidence, radians. theta=0 corresponds to normal incidence
Vector_3 k(0,sin(theta),cos(theta));
Vector_3 E(0,cos(theta),-sin(theta)); p polarization

By reading the literature of “PHYSICAL REVIEW A 89, 022501 (2014)”,i know this website.My name is Wu er heng,a graduatestudent in Shang Hai University.My major reseach is the phsical phenomenon of the ultralshort pulse light-matter interaction.
In order to aviod nonphisical reflection, appropriate boundary conditions is necessary when solving Maxwell-Bloh equations.In this website, your group adopte the PML absorbing boundary,what is more,the C++ language which is the same with me.
So,i hope that i can get the souce code of the EMTL about the simulation of Maxwell-bloh eqations.
If I get the right to use the code, I would be much grateful,I will abide by the requirements of this web site,and will refer the EMTL in my future publications
Wuerheng
2015.08.31

deinega, 2015/12/03 05:00

Please email at fdtd@kintechlab.com

Renaud Vallée, 2015/11/27 20:01

Dear Alexei,

Thank you for sharing with people this nice peace of work which is EMTL.

Having started with it very recently, I am puzzled with the way the function GetPrism and GetPyramid are defined.

/ O is center of the in the base, top is top of the pyramid,
/ x and y are axis directions, will be created relatively to these axis,

/ base is , confinment is polyhedron which confines pyramid (if it is absent then pyramid is infinite in one direction)
Polyhedron_3 *GetPyramida(const Vector_3 &O, const Vector_3 &top, const Vector_3 &x, const Vector_3 &y, Polygon_2 *base);
/\en @returns regular ,

/ center is center, d is distance from center to vertex, n is number of vertices
Polygon_2 *GetRegularPolygon(const Vector_2 ¢er, vec_type d, int n);
So, the descriptions of the parameters are not very clear to me. I tried the following command
task.AddObject(emMedium(1.77),GetPrism(Vector_3(0,0,-1.0*t),Vector_3(0,0,1.0*t),Vector_3(1,0,0),Vector_3(0,1,0),GetRegularPolygon(Vector_2(0,0),0.577*l,3)));
to create a triangular prism having a base to the xy-plane (and centered on 0,0 in this plane) and a height equal to 2t. While the GetRegularPolygon gives exactly what is required, the height of the generated prism is not 2t but the whole cell. Why is it like this? Furthermore, I do not understand what are exactly the x and y axis directions? In the above case, if changing Vector_3(1,0,0) and Vector_3(0,1,0) to Vector_3(2,0,0) and Vector_3(0,1,0) changes obviously the size of the sides of the triangle. changing Vector_3(1,0,0) to Vector_3(1,0,1)

does not change anything.

Could you please help me with this matter?

Thank you in advance for your help, bests regards

Renaud

deinega, 2015/12/03 05:01

Dear Renaud,

Thank you for your email,

You question can be answered by KintechLab team which can be reached by fdtd@kintechlab.com or valuev@kintechlab.com.

Alex

Smithc231, 2016/06/06 15:56

Very energetic blog, I enjoyed that a lot. Perhaps there is a part 2? fcfbkdebfbdgeegd

Frank, 2018/01/19 16:34

Dear Alexei,

first of all I would like to thank you for sharing such a wonderful library.
I found it much more convenient than meep.

There is one thing I was unable to find in the source-code:

Is there a possibility to run the simulation for say, 200 steps, then pause, change some material properties,and continue again?

best regards,
frank.

deinega, 2019/01/11 02:26

Dear Frank,

Thank you for your email,

You question can be answered by KintechLab team which can be reached by fdtd@kintechlab.com or valuev@kintechlab.com.

## Discussion

Dear Sir/Madame:

Looking forward to your reply,

Sincerely,

Dr. Theodore Omtzigt CEO and Founder Stillwater Supercomputing, Inc.

Sorry, right now we don't have time for this…

Dear Sir/Madam:

Dear Lu Jia. I answered directly to your email.

Thanks for your kindly help!

Dear Deinega,

When can we see the source code of EMTL and the documentation too? I am exciting to try it.

Best regards,

Simon

Dear Simon,

I would be happy to give you information about source code, but unfortunately it does not depend on me only. Can you please write an email to fdtd@kintechlab.com with your request

Best, Alexei Deinega

Thanks, Deinega.

Simon

Dear Deinega,

while compilation of the test_mie.cpp in VC++2010 express I have met the error:

[#include “vector_3.h” in emdefs.h]

Please let me know what is wrong?

Thank you, Gennadiy

Dear Alexei,

After careful reading the instruction how to install I understood where I was wrong. Now the program works as expected in Net.2010 VC++ (32). It allows some extension: I easily added interactivity to the code with the use of the inputBox and messageBox facilities. After that I executed all examples from a simple menu (inputbox) without recompilations. My recommendations are to add the libraries *.lib, *.dll for 64 bit system, and also for the use them in VS .Net-2012. Thanks to authors for good job!

-Gennadiy

Hi Gennadiy, we are currently modifying the code to make it combilable for 64bit.

sir, would u please tell me how you calculated tex:\varepsilon_{\infty} in your fitting program written in matlab ? And how you determined the multiplying factors of deps,Wo, gamma & gamma'?

Range of \varepsilon_{\infty} values is specified in matlab script (you can change it). Matlab sript finds the fitting with the optimal value for \varepsilon_{\infty}. As for multiplying factors, I didn't understand the question

Dear Alexei,

I would like to use your code to simulate reflectance at isotextured silicon and silicon textured with random pyramids. As an input I want to use height maps measured with a laser scanning microscope or a synthetic map build from over 1000 overlapping, randomly distributed pyramids. In the geometry, I found that you can build pyramids, but it would be very combersome to do so for so many pyramids. Do you have any possibility to read a height map or a 3D mesh?

Best regards,

Helmut

Dr. Helmut Mäckel

Department of Solar Energy Research

Institute of Condensed Matter Physics

Leibniz University Hanover, Germany

We already answered by email …

Sir, I am trying to run the test_mie I have downloaded from your site but do not able to build solution and again getting error LNK2019 and LNK2001 followed by fatal error LNK1120 like error LNK2019: unresolved external symbol “public: virtual __thiscall uiExperiment::~uiExperiment(void)” (??1uiExperiment@@UAE@XZ) referenced in function _main. Do you have any suggestions?

Dear Sir/Madame:

How can I set the FDTD unit of length in the EMTL?

Looking forward to your reply,

Sincerely

You don't need to set it, since Maxwell equations are scalable

Dear Sir/Madame: In the tutorial,there is an example.

#include “uiexp.h” int main(int argc,char **argv){ emInit(argc,argv); uiExperiment task; task.SetInternalSpace(0,Vector_3(1,1,3)); task.SetResolution(.025); task.SetBC(BC_PER,BC_PER,BC_PML); valtype theta=45*M_PI/180.;

angle of incidence, radians. theta=0 corresponds to normal incidence Vector_3 k(0,sin(theta),cos(theta)); Vector_3 E(1,0,0);s polarizationVector_3 E(0,cos(theta),-sin(theta));p polarization task.AddTFSFPlane(INF,INF,.5); task.SetPlaneWave(k,E); task.SetOblique(100,1); task.AddObject(emMedium(4,2),new Sphere(.375,Vector_3(.5,.5,1.5))); task.AddDetectorSet(“h”,Vector_3(.5,.5,0.25),Vector_3(.5,.5,2.75),iVector_3(1,1,2)); task.AddRTASet(“flux”,2,0.25,2.75); task.CalculateN(2000); task.Analyze(); return 0; }1.What is the length of the FDTD unit in this example? 2.If I want to change the material of the sphere into gold, how can I set the length of the FDTD unit as 10nm?

1. In this example length of the FDTD unit is arbitrary. 2. taskAddObject(getAu(.01), new Sphere(…)); 0.01 means that we assume that FDTD unit length us 0.01 microns.

In this example, in order to observe more data about frequency range from 1.25 to 2.5 in the output file (flux.d), it requires that frequency intervals must be made smaller. When I change task.CalculateN(2000) into task.Calculate(250) to make frequency intervals from 0.04 to 0.004, the obtained transmittance spectrum curve shape becomes very smooth. But when the material of the ball becomes gold( task.AddObject(getAu(1),newSphere(.375,…..)) instead of task.AddObject(emMedium(4,2),new Sphere(.375,…..)) and the computing time is still set to task.Calculate (250), the obtained data becomes very very big in the output file (flux.d). I think it may be a mistake.Why does it appear this kind of circumstance? Which setting is wrong? How can I make the transmittance spectrum curve shape more smooth in 400nm~800nm when calculating the golden sphere.

Looking forward to your reply, Sincerely

Turn off subpixel smoothing, if you are using it… It can be a problem

I feel really sorry to trouble you again. My tutor requires me that I learn related functions of EMTL on oblique incident. When I repeated your article“Implementation of the iterative finite-difference time-domain technique for simulation of periodic structures at oblique incidence”，I encountered some trouble. One example of the paper is about calculating reflectance from a thin gold film (width d = 50 nm) between air and glass (n = 1.5) semi-infinite interfaces. The period a is 0.4μm and the angle of incidence θ is 45°. But the results obtained are quite different from yours. It is unable to read the plasma excitation. My program is listed as follows. Would you please help find what has been wrong with my program. #include “uiexp.h”

int main(int argc,char **argv){

emInit(argc,argv);

uiExperiment task; task.SetInternalSpace(Vector_3(0,0,0),Vector_3(0,40,15)); task.SetResolution(0.5); task.SetSmoothing(1); task.SetBC(BC_PER,BC_PER,BC_PML);

valtype theta=45*M_PI/180.;

angle of incidence, radians. theta=0 corresponds to normal incidence Vector_3 k(0,sin(theta),cos(theta)); Vector_3 E(0,cos(theta),-sin(theta));p polarizationtask.AddTFSFPlane(INF,INF,2.5); task.SetPlaneWave(k,E); task.SetOblique(300,1);

task.AddObject(emMedium(1.5*1.5),GetHalfSpace(Vector_3(0,0,-1), Vector_3(0,0,5))); task.AddObject(getAu(.01),GetPlate(Vector_3(0,0,1),Vector_3(0,0,5),5)); task.AddObject(emMedium(1),GetHalfSpace(Vector_3(0,0,1), Vector_3(0,0,10)));

task.AddRTASet(“flux”,2,1.25,13.75); task.Calculate(100); task.Analyze(); return 0; }

Dear Alexei

Please email at fdtd@kintechlab.com

Dear Alexei,

Thank you for sharing with people this nice peace of work which is EMTL.

Having started with it very recently, I am puzzled with the way the function GetPrism and GetPyramid are defined.

In the header files, it appears that

/\en returns polyhedron - prism Polyhedron_3 *GetPrism(const Vector_3 &O, const Vector_3 &top, const Vector_3 &x, const Vector_3 &y, Polygon_2 *base);/\en returns polyhedron - pyramid/ O is center of the in the base, top is top of the pyramid,/ x and y are axis directions, will be created relatively to these axis,/ base is , confinment is polyhedron which confines pyramid (if it is absent then pyramid is infinite in one direction) Polyhedron_3 *GetPyramida(const Vector_3 &O, const Vector_3 &top, const Vector_3 &x, const Vector_3 &y, Polygon_2 *base);/\en @returns regular ,/ center is center, d is distance from center to vertex, n is number of vertices Polygon_2 *GetRegularPolygon(const Vector_2 ¢er, vec_type d, int n); So, the descriptions of the parameters are not very clear to me. I tried the following command task.AddObject(emMedium(1.77),GetPrism(Vector_3(0,0,-1.0*t),Vector_3(0,0,1.0*t),Vector_3(1,0,0),Vector_3(0,1,0),GetRegularPolygon(Vector_2(0,0),0.577*l,3))); to create a triangular prism having a baseto the xy-plane (and centered on 0,0 in this plane) and a height equal to 2t. While the GetRegularPolygon gives exactly what is required, the height of the generated prism is not 2t but the whole cell. Why is it like this? Furthermore, I do not understand what are exactly the x and y axis directions? In the above case, if changing Vector_3(1,0,0) and Vector_3(0,1,0) to Vector_3(2,0,0) and Vector_3(0,1,0) changes obviously the size of the sides of the triangle. changing Vector_3(1,0,0) to Vector_3(1,0,1)does not change anything.

Could you please help me with this matter?

Thank you in advance for your help, bests regards

Renaud

Dear Renaud,

Thank you for your email,

You question can be answered by KintechLab team which can be reached by fdtd@kintechlab.com or valuev@kintechlab.com.

Alex

Very energetic blog, I enjoyed that a lot. Perhaps there is a part 2? fcfbkdebfbdgeegd

Dear Alexei,

first of all I would like to thank you for sharing such a wonderful library. I found it much more convenient than meep.

There is one thing I was unable to find in the source-code:

Is there a possibility to run the simulation for say, 200 steps, then pause, change some material properties,and continue again?

best regards, frank.

Dear Frank,

Thank you for your email,

You question can be answered by KintechLab team which can be reached by fdtd@kintechlab.com or valuev@kintechlab.com.

Alex

www.google.com