GSvit documentation

open source FDTD solver with GPU support

User Tools

Site Tools


start:first_simulation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start:first_simulation [2018/09/04 14:33]
pgrolich
start:first_simulation [2019/01/14 07:58] (current)
pgrolich
Line 1: Line 1:
 ===== Your first simulation ===== ===== Your first simulation =====
  
-<​html>​ +===== Basic FDTD algorithm operation example ​=====
-<h2>Basic FDTD algorithm operation example</h2>+
  
-<h3>Summary</h3> +===== Summary ​===== 
-<p>We will use cubic volume with centered point source, similar to a dipole located in center of computation space. ​ + 
-Outputs will be different cross-section planes to Gwyddion file and a text file (from single point).+We will use cubic volume with centered point source, similar to a dipole located in center of computation space. Outputs will be different cross-section planes to Gwyddion file and a text file (from single point).
 Calculation will be performed on CPU or on GPU and material mode selection for speedup will be tested. Calculation will be performed on CPU or on GPU and material mode selection for speedup will be tested.
-</​p>​ +
-<p>+
 What can be tested using this example: What can be tested using this example:
-<​ul>​ +  * basic performance of the software (first test to see whether it works after installation) performance of Yee algorithm with none material properties (compare with material mode calling full algorithm, resulting in different speed and memory allocation.) 
-<li>basic performance of the software (first test to see whether it works after installation) +  ​* ​GPU performance 
-<li>performance of Yee algorithm with none material properties (compare with material mode calling +  ​* ​GPU performance with none/full material properties (combine GPU and material mode checking) 
-full algorithm, resulting in different speed and memory allocation.) +  ​* ​scaling of basic calculation speed and memory requirements (varying computational volume size) 
-<li>GPU performance +  ​* ​point source properties (varying the orientation or using file input for source).
-<li>GPU performance with none/full material properties (combine GPU and material mode checking) +
-<li>scaling of basic calculation speed and memory requirements (varying computational volume size) +
-<li>point source properties (varying the orientation or using file input for source). +
-</​ul>​ +
-<p> +
-</p>+
  
-<h3>Setup all this with XSvit</h3>+===== Setup all this with XSvit =====
  
-<​p><​i>​Note that some of the screenshots might be from an older version of XSvit.</i></p>+//Note that some of the screenshots might be from an older version of XSvit.//
  
-<p>First, start the XSvit application. If haven'​t done this before, setup the location of GSvit and Gwyddion under+First, start the XSvit application. If haven'​t done this before, setup the location of GSvit and Gwyddion under
 File->​Preferences menu, so you can run the calculation from the GUI and see the results afterwards. Otherwise File->​Preferences menu, so you can run the calculation from the GUI and see the results afterwards. Otherwise
-you will be able to use GUI only for parameter file setup.</p>+you will be able to use GUI only for parameter file setup. 
 + 
 +When you start XSvit, there is already a default parameter file loaded, using computational space of size 100x100x100 voxels. We will use this computational space and we will add **point souce** and **point output**. Save default parameter file to **first-simulation.par** file using menu entry //File->Save//. In the next figure you can see how the default settings look after XSvit start (you can rotate the 3D projection by mouse, so this was done to get a better view). Note the values of discretisation step (10 nm) in the list of all the entries on the left side of the window; if we work in vacuum (which is the case in this example) we should not use source with wavelength that is smaller than this step multiplied by ten. You can alter the discretisation settings and computational volume size by double clicking on its values in the list.
  
-<​p>​When you start XSvit, there is already a default parameter file loaded, using computational space of size 100x100x100 voxels. 
-We will use this computational space and we will add point souce and point output. In the next figure you can 
-see how the default settings look after XSvit start (you can rotate the 3D projection by mouse, so this was done to get a better view). ​ 
-Note the values of discretisation step (10 nm) in the list of all the entries on the left side of the window; if we work in vacuum 
-(which is the case in this example) we should not 
-use source with wavelength that is smaller than this step multiplied by ten. You can alter the discretisation 
-settings and computational volume size by double clicking on its values in the list. </p> 
 {{:​start:​screenshots:​first-simulation-init.png?​400|}} {{:​start:​screenshots:​first-simulation-init.png?​400|}}
  
-<a href="​http:​//gsvit.net/​images_v18/​ex1_init.png"​><img src="​http:​//gsvit.net/images_v18/​ex1_init.png" width="​800"></​a>​+It is reasonable to save your parameter file at this stage using //File->Save// commandWe can do it also later, just before running computation,​ however doing it right now will set the current directory and other input/output files set later can be referred to it (instead of using absolute path). Moreover, by saving parameter file we also set default directory for temporary files (e.g. generated sources), which is also important.
  
-<p>It is reasonable to save your parameter file at this stage using <​i>​File->​Save</​i>​ command. We can do it also later, +First we will add **point source**. This can be done using menu entry //Edit parameters->​Add point source//.
-just before running computation,​ however doing it right now will set the current directory and other input/​output files +
-set later can be referred to it (instead of using absolute path). Moreover, by saving parameter file we also set default directory +
-for temporary files (e.g. generated sources), which is also important.</​p>​ +
- +
-<p>First we will add <b>point source</b>. This can be done using menu entry <i>Edit parameters->​Add point source</i>.+
 The dialogue shown below appears. We set the point source properties, i.e. its position in voxel coordinates,​ The dialogue shown below appears. We set the point source properties, i.e. its position in voxel coordinates,​
-its type (load from file or construct a temporary file for it with sine wave or sine impulse) +its type (load from file or construct a temporary file for it with sine wave or sine impulse) and orientation given for temporary file sources by two angles (see the angles for TSF in GSvit documentation). 
-and orientation given for temporary file sources by two angles (see the angles for TSF in GSvit documentation). +Here we have chosen sine source given by Ez component only. 
-Here we have chosen sine source given by Ez component only.</p> + 
-<img src="​http://​gsvit.net/​images_v18/​ex1_psource.png">​+{{:​start:​screenshots:​first-simulation-point-source.png?​400|}} 
 + 
 +After adding the source we can see it in the 3D window as shown below and also on the list of entries. If we are not satisfied with its position we can double-click on the entry and correct it.  
 + 
 +//Hint: if we switch to "par. file" tab we can edit the source in native GSvit format 
 +file much faster and see the position changes immediately.//​ 
 + 
 +Next we will add **point and image outputs**. This is done by menu entry //Edit parameters->​Add point output// and //Edit parameters->​Add image output// that again open dialogues for specifying how often (parameter ​"skip") and which component should be output. Point output is collected from a single point within computational volume and is stored into a text file. Image output comes to general output file that can be opened by [[http://gwyddion.net|Gwyddion]] open source software. A cross section in certain normal direction is output, selected as shown below. We will add a cross section in every direction, so we will call the dialog three times. 
 + 
 +{{:​start:​screenshots:​first-simulation-image-output.png?400|}} 
 + 
 +Similarily we will add **point output** as shown below. 
 + 
 +{{:​start:​screenshots:​first-simulation-point-output.png?​400|}} 
 + 
 +Note that all the outputs can be also seen in 3D view window. We can adjust some more computational parameters,​ 
 +here namely we will increase **number of steps** to be calculated to 300 (clicking to any of the entries in "Basic parameters"​ group). 
 +Physical length of the time step is calculated automatically on the basis of space discretisation. 
 + 
 +{{:​start:​screenshots:​first-simulation-basic-parameters.png?​400|}} 
 + 
 +Finally we need to save the parameter file if we haven'​t done it at beginning, as since now we worked only with a temporary file or at least modified file (it is important to save it always before running computation which is not done automatically). This is done by //File->Save// command as usual. Then we can  
 +**start the computation** clicking on the arrow in the toolbar or using //​Execute->​Run//​ menu command. 
 + 
 +//Hint: if we don't want to use the GUI for starting the computation we can always run GSvit manually on our parameter file.// 
 + 
 +{{:​start:​screenshots:​first-simulation-run.png?​400|}} 
 + 
 +While computation is running we can see the GSvit output (if the verbose level is not 0) and we can choose any text file output to be visualised in the graph window. You can also watch preview of last saved images - slices through the computational volume - directly in 3D view. The GSvit output is directly what you would see if you run it at console, with no GUI. Note that graph is updated at maximum as often as the data are saved, so if we skip every 100 points while setting the output we will see the graph updated only e.g. every few seconds (depending on computational volume size, etc.). Similarily, the images in the 3D view are updated when these are saved by the computational core (so you can affect the update frequency by image output skipping parameter).
  
-<​p>​After adding ​the source ​we can see it in the 3D window as shown below and also on the list of entries. If we are not satisfied with its position +When computation is finished or killed by the Stop command (again via toolbar or menu), ​we can **open ​the output file**. As most of the data are output in Gwyddion file we can directly open it using Gwyddion called from the menu or toolbarGwyddion is a powerfull 2D/3D data processing software, however ​we will only use it to see the images in this exampleAs image outputs are saved succesively as the GSvit is running, we will be probably having more channels to see in Gwyddion, so we pick what is interesting for us in the Gwyddion Data Browser.
-we can double-click on the entry and correct ​it. </p><​p><​i>​Hint:​ if we switch ​to "parfile" tab we can edit the source in native ​GSvit format +
-file much faster and see the position changes immediately.</​i></​p>​ +
-<a href="​http://​gsvit.net/​images_v18/​ex1_source.png"><​img src="​http://​gsvit.net/​images_v18/​ex1_source.png"​ width="​800"></​a>​+
  
-<​p>​Next we will add <​b>​point and image outputs</​b>​. This is done by menu entry <​i>​Edit parameters->Add point output</​i>​ +{{:​start:​first-simulation-shortwrong.png?400|}}
-and <​i>​Edit parameters->Add image output</​i>​ that again open dialogues for specifying how often (parameter "​skip"​) +
-and which component should be output. Point output is collected from a single point within computational volume +
-and is stored into a text file. Image output comes to general output file that can be opened by <a href=gwyddion.net>​Gwyddion</​a>​ +
-open source software. A cross section in certain normal direction is output, selected as shown below. We will add +
-a cross section in every direction, so we will call the dialog three times.</​p>​ +
-<img src="​http://​gsvit.net/​images_v18/​ex1_imout.png">+
  
-<​p>​Similarily ​we will add point output as shown below.</p> +Note that in this example ​we have clicked on //Data Process->Presentation->​Logscale// for every displayed output to see the data in better scaleWe can see that in different cross-sections of the computational space there is a wave similar to a dipole output.
-<img src="​http:​//gsvit.net/​images_v18/​ex1_pout.png">​+
  
-<​p>​Note that all the outputs can be also seen in 3D view window. We can adjust some more computational parameters, +If we check the data in further time steps, we can see that they look much worse.
-here namely ​we will increase <​b>​number of steps</​b>​ to be calculated to 300 (clicking to any of the entries in "Basic parameters"​ group). +
-Physical length of the time step is calculated automatically on the basis of space discretisation.</​p>​ +
-<img src="​http://​gsvit.net/​images_v18/​ex1_steps.png">​+
  
-<​p>​Finally we need to save the parameter file if we haven'​t done it at beginning, as since now we worked only with a temporary file or at least modified file +{{:start:screenshots:first-simulation-longwrong.png?400|}}
-(it is important to save it always before running computation which is not done automatically). This is done by <​i>​File->​Save</​i>​ command as usual. Then we can  +
-<b>start the computation</​b>​ clicking on the arrow in the toolbar or using <​i>​Execute->​Run</​i>​ menu command.</​p>​ <​p><​i>​Hintif we don't want to use +
-the GUI for starting the computation we can always run GSvit manually on our parameter file.</​i></​p>​ +
-<a href="​http://​gsvit.net/​images_v18/​ex1_nonebcout.png"><​img src="​http://​gsvit.net/​images_v18/​ex1_nonebcout.png" width="​800"></​a>​+
  
-<​p>​While computation ​is running we can see the GSvit output (if the verbose level is not 0) and we can choose any text file output +This behavior ​is caused by unset **boundary conditions** that behave like mirrors here. In order to let the wave go out of the computational ​space we need to apply an absorbing boundary condition, so we click on any entry in "​Boundary conditions"​ set to change ​the boundary conditions on all the faces to a simple absorbing condition ​(Liao).
-to be visualised in the graph window. You can also watch preview ​of last saved images - slices through ​the computational ​volume - directly in 3D view. +
-The GSvit output is directly what you would see if you run it at console, with no GUI. +
-Note that graph is updated at maximum as often as the data are saved, so if we skip every 100 points +
-while setting the output we will see the graph updated only e.g. every few seconds (depending ​on computational volume size, etc.). +
-Similarily, the images ​in the 3D view are updated when these are saved by the computational core (so you can affect the update frequency +
-by image output skipping parameter).</p>+
  
-<​p>​When computation is finished or killed by the Stop command (again via toolbar or menu), we can <​b>​open the output</​b>​ file. As most of the +{{:start:first-simulation-boundary-conditions.png?400|}}
-data are output in Gwyddion file we can directly open it using Gwyddion called from the menu or toolbar. Gwyddion is a powerfull 2D/3D data +
-processing software, however we will only use it to see the images in this example. As image outputs are saved succesively as the GSvit +
-is running, we will be probably having more channels to see in Gwyddion, so we pick what is interesting for us in the Gwyddion Data Browser.</​p>​ +
-<a href="​http://​gsvit.net/​images_v18/​ex1_shortwrong.png"><​img src="​http://​gsvit.net/​images_v18/​ex1_shortwrong.png"​ width="​800"></​a>​ +
-<​p>​Note that in this example we have clicked on <​i>​Data Process->​Presentation->​Logscale</​i>​ for every displayed output to see the data in +
-better scale. We can see that in different cross-sections of the computational space there is a wave similar to a dipole output.</p>+
  
-<p>If we check the data in further time steps, ​we can see that they look much worse.</​p>​ +After that (and saving ​the file, running computation and redisplaying ​data again) ​we can see that the output is already propagating freely outside of the computation volume.
-<a href="​http://​gsvit.net/​images_v18/​ex1_longwrong.png"><​img src="​http://​gsvit.net/​images_v18/​ex1_longwrong.png" width="​800"></​a>​+
  
-<​p>​This behavior is caused by unset <​b>​boundary conditions</​b>​ that behave like mirrors here.  +{{:start:​screenshots:​first-simulation-longok.png?400|}}
-In order to let the wave go out of the computational +
-space we need to apply an absorbing boundary condition, so we click on any entry in "​Boundary conditions"​ set to change the boundary conditions +
-on all the faces to a simple absorbing condition (Liao).</​p>​ +
-<img src="​http://​gsvit.net/​images_v18/​ex1_bcs.png">+
  
-<​p>​After that (and saving the file, running computation and redisplaying data again) we can see that the output is already propagating 
-freely outside of the computation volume.</​p>​ 
-<a href="​http://​gsvit.net/​images_v18/​ex1_longok.png"><​img src="​http://​gsvit.net/​images_v18/​ex1_longok.png"​ width="​800"></​a>​ 
  
-</​html>​ 
start/first_simulation.1536064437.txt.gz · Last modified: 2018/09/04 14:33 by pgrolich