docs:gsvit_inputs
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
docs:gsvit_inputs [2025/02/19 10:27] – created - external edit 127.0.0.1 | docs:gsvit_inputs [2025/02/19 14:57] (current) – admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | |||
===== GSvit input files ===== | ===== GSvit input files ===== | ||
Line 9: | Line 8: | ||
Here follows the documentation for last stable release: | Here follows the documentation for last stable release: | ||
- | < | + | ==== Parameter file description |
- | <h3>Parameter file description</h3> | + | |
- | < | + | |
- | <p>Keywords are case sensitive. The following keywords can be used in the current version of GSvit (before issuing version 1.0 this means actual | + | **Main computation settings**\\ |
+ | Keywords are case sensitive. The following keywords can be used in the current version of GSvit (before issuing version 1.0 this means actual | ||
remain same for last issued binaries): | remain same for last issued binaries): | ||
- | </p> | ||
- | < | + | **POOL**\\ |
- | <i>xres yres zres dx dy dz</i>< | + | //xres yres zres dx dy dz// |
Set computation volume dimensions in pixels (xres, yres, zres) and real pixel size - pixel spacing (dx, dy, dz) in meters. | Set computation volume dimensions in pixels (xres, yres, zres) and real pixel size - pixel spacing (dx, dy, dz) in meters. | ||
- | computational volume with pixel spacing of 1 micrometer, set:</ | + | computational volume with pixel spacing of 1 micrometer, set: |
- | < | + | |
- | POOL< | + | |
- | 200 200 200 1e-6 1e-6 1e-6 | + | |
- | </ | + | |
- | < | + | |
- | < | + | '' |
- | <i>nsteps</i>< | + | 200 200 200 1e-6 1e-6 1e-6'' |
- | Set total number of computation steps, e.g. to set the number of steps to 100, write:</p> | + | |
- | <tt> | + | **COMP**\\ |
- | COMP<br> | + | //nsteps// |
- | 100 | + | |
- | </tt> | + | Set total number of computation steps, e.g. to set the number of steps to 100, write: |
+ | |||
+ | '' | ||
+ | 100'' | ||
+ | |||
+ | **THREADS**\\ | ||
+ | //nthreads// | ||
- | < | ||
- | < | ||
- | < | ||
Set total number of threads to be used if we are calculating on CPU (not on GPU). Can be -1 for automated detection of number of cores | Set total number of threads to be used if we are calculating on CPU (not on GPU). Can be -1 for automated detection of number of cores | ||
and use of all of them which is also default behavior (since GSvit 1.3). Note that on systems using hyperthreading the virtual cores do not help (use half of available cores at maximum). Generally, FDTD | and use of all of them which is also default behavior (since GSvit 1.3). Note that on systems using hyperthreading the virtual cores do not help (use half of available cores at maximum). Generally, FDTD | ||
is memory demanding and scaling with number of cores is therefore not linear (memory is the bottleneck), | is memory demanding and scaling with number of cores is therefore not linear (memory is the bottleneck), | ||
significant speedup. You can test this scaling using ./gsvit test 3N, where N is problem size (e.g. 32 means thread test on 200x200x200 voxels). | significant speedup. You can test this scaling using ./gsvit test 3N, where N is problem size (e.g. 32 means thread test on 200x200x200 voxels). | ||
- | As and example, to set the number of threads to 4, write:</p> | + | As and example, to set the number of threads to 4, write: |
- | <tt> | + | |
- | THREADS<br> | + | '' |
- | 4 | + | 4'' |
- | </tt> | + | |
+ | **MATMODE_CHECK**\\ | ||
+ | //0/1// | ||
- | < | ||
- | < | ||
- | < | ||
Check material settings and if possible, run computation with smaller memory | Check material settings and if possible, run computation with smaller memory | ||
allocation - not allocating some of the components and using simplified equations (e.g. for nonmagnetic materials or vacuum). This can save up to half | allocation - not allocating some of the components and using simplified equations (e.g. for nonmagnetic materials or vacuum). This can save up to half | ||
Line 56: | Line 51: | ||
default value (full calculation). This might be necessary for some novel algorithms before they are tested properly, typically algorithms | default value (full calculation). This might be necessary for some novel algorithms before they are tested properly, typically algorithms | ||
on GPU where this parameter is not recommended for now. | on GPU where this parameter is not recommended for now. | ||
- | An example of use is:</p> | + | An example of use is: |
- | <tt> | + | |
- | MATMODE_CHECK<br> | + | '' |
- | 1 | + | 1'' |
- | </tt> | + | |
+ | **MEDIUM_LINEAR**\\ | ||
+ | //filename// | ||
- | < | ||
- | < | ||
- | < | ||
Use file that consists of binary data representing material, pixel by pixel. File structure | Use file that consists of binary data representing material, pixel by pixel. File structure | ||
is: xres, yres, zres (binary 32-bit integers) of same size of computation volume, | is: xres, yres, zres (binary 32-bit integers) of same size of computation volume, | ||
Line 71: | Line 65: | ||
This approach is ideal for including complex or continuously varying geometries. For simple objects, | This approach is ideal for including complex or continuously varying geometries. For simple objects, | ||
use vector data input (MEDIUM_VECTOR), | use vector data input (MEDIUM_VECTOR), | ||
- | </p> | ||
- | < | + | **MEDIUM_VECTOR**\\ |
- | < | + | //filename// |
- | <i>filename</i>< | + | |
Use file that consists vector material representation, | Use file that consists vector material representation, | ||
entities (written in an ASCII file). | entities (written in an ASCII file). | ||
- | Each entity entry is composed by the following information: | + | Each entity entry is composed by the following information: |
- | <ul> | + | |
- | <li>type of entity (integer): 4 - sphere, 7 - cylinder, 8 - parallelepiped, | + | |
- | 107 - cone</li> | + | |
- | <li>point coordinates in pixel values (doubles): x y z values for each point (single for sphere, two for cylinder, cone | + | |
- | and parallelepiped and four for tetrahedron), | + | |
- | <li>material type (0: standard material, 1: tabulated material, | + | |
- | 2: Drude model (not recommended), | + | |
- | 6: CP model via Piecewise Linear Recursive Convolution method, 10: perfect electric conductor, 99: data from <a href="spectra.php"> | + | |
- | < | + | |
- | <li>relative permittivity, | + | |
- | <li>epsilon, omega_p and nu for type=2 (Drude model)</li> | + | * [[spectra|material name]]) for material type=99, e.g. Al<sub>2</sub>O< |
- | <li>epsilon, sigma and three sets of a, phi, omega and gamma for type=3 (CP3, in development)</li> | + | |
- | <li>epsilon, omega, gamma and two sets of a, phi, omega and Gamma for type=4 (CP)</li> | + | |
- | <li>epsilon, static sigma, omega, gamma and two sets of a, phi, omega and Gamma for type=5 and 6 (ADE and PLRC approach for CP model) (<i>Bug in documentation fixed!</i>)</li> | + | |
- | <li>nothing for material type=10 (PEC)</li> | + | |
- | < | + | |
- | </ul> | + | |
- | </ul> | + | |
- | <p> | + | |
so the entry looks for example as (4 100 100 100 20.5 0 22.13 1 0 0) for sphere with radius 20.5 pixels, | so the entry looks for example as (4 100 100 100 20.5 0 22.13 1 0 0) for sphere with radius 20.5 pixels, | ||
position (100, 100, 100) and relative permittivity of 22.13 (rest or material properties | position (100, 100, 100) and relative permittivity of 22.13 (rest or material properties | ||
- | is same as for vacuum). Material file for two dielectric | + | is same as for vacuum). Material file for two dielectric |
single absorbing parallelepiped can therefore look like: | single absorbing parallelepiped can therefore look like: | ||
- | < | + | |
- | 4 50 100 100 20.5 0 22.13 1 0 0 <br> | + | '' |
- | 4 150 100 100 20.5 0 22.13 1 0 0 <br> | + | 4 150 100 100 20.5 0 22.13 1 0 0\\ |
- | 8 30 30 160 170 170 170 0 20 1 2000 0< | + | 8 30 30 160 170 170 170 0 20 1 2000 0'' |
- | </tt> | + | |
- | Note that the material data are interpreted | + | Note that the material data are interpreted |
an intersection, | an intersection, | ||
directive as well in the parameter file, this is performed before MEDIUM_VECTOR data interpretation | directive as well in the parameter file, this is performed before MEDIUM_VECTOR data interpretation | ||
(so vector data can overwrite them). | (so vector data can overwrite them). | ||
- | </p> | + | |
- | <p>See Example 2 for more details of material parameters use.</p> | + | See Example 2 for more details of material parameters use. |
- | <p>For metals, CP model is at present the most suitable approach implemented in GSvit. CP model (in fact Drude + 2 critical points model) is based on this work: | + | |
- | <i>A. Vial, T. Laroche, Appl Phys B (2008) 93: 139-143</i>, giving the following values for different materials | + | For metals, CP model is at present the most suitable approach implemented in GSvit. CP model (in fact Drude + 2 critical points model) is based on this work: |
+ | //A. Vial, T. Laroche, Appl Phys B (2008) 93: 139-143//, giving the following values for different materials | ||
(here already in GSvit material file format including material type (4)): | (here already in GSvit material file format including material type (4)): | ||
- | < | + | |
- | 4 15.833 1.3861e16 4.5841e13 1.0171 | + | '' |
- | 4 1.1431 1.3202e16 1.0805e14 0.26698 -1.2371 | + | 4 1.1431 1.3202e16 1.0805e14 0.26698 -1.2371 |
- | 4 1.0000 2.0598e16 2.2876e14 5.2306 | + | 4 1.0000 2.0598e16 2.2876e14 5.2306 |
- | 4 1.1297 8.8128e15 3.8828e14 33.086 | + | 4 1.1297 8.8128e15 3.8828e14 33.086 |
- | <br> | + | |
- | </ | + | Alternatively the same dispersion model can be solved using two other techniques, Auxiliary Differential Equations and Piecewise Linear Recursive Convolution, |
- | </ | + | whose implementation is both based on //K. Chun, H. Kim, H. Kim, Y Chung, PIERS 135, 373-390, 2013//. |
- | <p>Alternatively the same dispersion model can be solved using two other techniques, Auxiliary Differential Equations and Piecewise Linear Recursive Convolution, | + | |
- | whose implementation is both based on <i>K. Chun, H. Kim, H. Kim, Y Chung, PIERS 135, 373-390, 2013</i></p>. In the formulas there is a static conductivity term | + | In the formulas there is a static conductivity term |
in addition, which is by many authors treated as zero (absorption is handled by imaginary part of permittivity through the model anyway). | in addition, which is by many authors treated as zero (absorption is handled by imaginary part of permittivity through the model anyway). | ||
The implementation in GSvit was tested with zero conductivity, | The implementation in GSvit was tested with zero conductivity, | ||
- | </p> | ||
- | <p>In original article by Chun et al. the folloging metals were fitted (presented already with material type and zero conductivity formatted for GSvit use with ADE approach) (< | ||
- | < | ||
- | 5 0.89583 0 13.8737e15 0.0207332e15 | ||
- | 5 1.11683 0 13.1839e15 0.109173e15 | ||
- | 5 1.82307 0 13.3846e15 0.163439e15 | ||
- | <br> | ||
- | </tt> | ||
- | </p> | ||
- | <!-- | + | In original article by Chun et al. the following metals were fitted (presented already with material type and zero conductivity formatted for GSvit use with ADE approach) (//Bug in documentation fixed!// |
- | < | + | |
- | < | + | '' |
- | provided in the article as follows (in GSvit input format including material type (3)): | + | 5 1.11683 0 13.1839e15 0.109173e15 |
- | < | + | 5 1.82307 0 13.3846e15 0.163439e15 |
- | 3 1.1156 4.24e16 | + | |
- | 3 1.4783 1.32863e16 1.007 -0.9621 6.617e15 1.7415e15 5377.4512 -0.0092 1.3545e14 | + | /** |
- | </ | + | *<!-- |
- | </ | + | *< |
- | <p>If <b>tetrahedral mesh</ | + | *< |
- | (precending material type and material parameters): | + | *provided in the article as follows (in GSvit input format including material type (3)): |
- | <tt>filebase attribute_number material_index xshift yshift zshift xmult ymult zmult</tt> | + | *< |
- | <p> | + | *3 1.1156 4.24e16 |
+ | *3 1.4783 1.32863e16 1.007 -0.9621 6.617e15 1.7415e15 5377.4512 -0.0092 1.3545e14 | ||
+ | *</ | ||
+ | *</ | ||
+ | */ | ||
+ | |||
+ | If **tetrahedral mesh** is provided in | ||
+ | /* This doesn' | ||
+ | [[https:// | ||
+ | (precending material type and material parameters): | ||
+ | |||
+ | '' | ||
Parameter filebase determines the filename of .node and .ele files (filebase.node, | Parameter filebase determines the filename of .node and .ele files (filebase.node, | ||
that are defining the set of tetrahedrons. Attribute_number is used to set which attribute | that are defining the set of tetrahedrons. Attribute_number is used to set which attribute | ||
of the .node and .ele file will be used to assign the appropriate material. Loaded node positions are | of the .node and .ele file will be used to assign the appropriate material. Loaded node positions are | ||
multiplied by xmult, ymult, zmult values and then shifted by xshift, yshift, zshift vector. This can be used | multiplied by xmult, ymult, zmult values and then shifted by xshift, yshift, zshift vector. This can be used | ||
- | to move and scale your data into computation mesh.</p> | + | to move and scale your data into computation mesh. |
- | <p> | + | |
If there are no attributes in the .ele file, or there are but attribute_number | If there are no attributes in the .ele file, or there are but attribute_number | ||
is -1, all the tetrahedrons will be treated as the material. If attribute_number is zero or positive and there are attributes | is -1, all the tetrahedrons will be treated as the material. If attribute_number is zero or positive and there are attributes | ||
Line 162: | Line 152: | ||
as material. Using several lines in your vector material definition file using the same filebase | as material. Using several lines in your vector material definition file using the same filebase | ||
you can assign different materials to your set of tetrahedrons. | you can assign different materials to your set of tetrahedrons. | ||
- | </p> | + | |
- | <p>As an example a vector material file entry could be following for a cube given by tetrahedral mesh with no attributes (note that no attributes means | + | As an example a vector material file entry could be following for a cube given by tetrahedral mesh with no attributes (note that no attributes means |
- | no need for attribute number selection), no shift and no scaling of the mesh (mesh is intended for 200x200x200 voxels volume:</p> | + | no need for attribute number selection), no shift and no scaling of the mesh (mesh is intended for 200x200x200 voxels volume: |
- | <tt> | + | |
- | 21 cube.1 0 0 0 0 0 1 1 1 0 5 1 0 0 | + | '' |
- | </tt> | + | |
- | <p>Corresponding node file (cube.1.node) would look like this (indentation is not relevant, lines starting with '#' | + | Corresponding node file (cube.1.node) would look like this (indentation is not relevant, lines starting with '#' |
- | and after header are skipped):</p> | + | and after header are skipped): |
- | <pre> | + | <code> |
# my little cube | # my little cube | ||
8 3 0 0 | 8 3 0 0 | ||
Line 182: | Line 172: | ||
| | ||
| | ||
- | </pre> | + | </code> |
- | <p>Corresponding element file (cube.1.ele) would look like this:</p> | + | Corresponding element file (cube.1.ele) would look like this: |
- | <pre> | + | <code> |
# my little cube | # my little cube | ||
6 4 0 | 6 4 0 | ||
Line 195: | Line 185: | ||
5 | 5 | ||
6 | 6 | ||
- | </pre> | + | </code> |
- | <p>If a piece of mesh should not be used, or different materials should be assigned to different | + | If a piece of mesh should not be used, or different materials should be assigned to different |
- | parts of the mesh, use attributes in .ele file as follows:</p> | + | parts of the mesh, use attributes in .ele file as follows: |
- | <pre> | + | <code> |
21 cube.1 0 1 0 0 0 1 1 1 0 4 1 0 0 | 21 cube.1 0 1 0 0 0 1 1 1 0 4 1 0 0 | ||
21 cube.1 0 0 0 0 0 1 1 1 0 5 1 0 0 | 21 cube.1 0 0 0 0 0 1 1 1 0 5 1 0 0 | ||
- | </pre> | + | </code> |
- | <p>Here we expect that tetrahedrons have at least single attribute and this attribute (attribute 0) is used | + | Here we expect that tetrahedrons have at least single attribute and this attribute (attribute 0) is used |
- | for detection of material. Corresponding element file (cube.1.ele) would now look like this:</p> | + | for detection of material. Corresponding element file (cube.1.ele) would now look like this: |
- | <pre> | + | <code> |
# my little cube | # my little cube | ||
6 4 1 | 6 4 1 | ||
Line 216: | Line 206: | ||
5 | 5 | ||
6 | 6 | ||
- | </pre> | + | </code> |
- | <p>If <b>Gwyddion height field</ | + | If **Gwyddion height field** is provided in [[http:// |
- | (precending material type and material parameters): | + | (precending material type and material parameters): |
- | <tt>filename channel mask i j k xoffset yoffset zoffset depth</tt> | + | |
- | <p> | + | '' |
Parameter filename corresponds to .gwy file that will be loaded (corresponding channel - if you have only | Parameter filename corresponds to .gwy file that will be loaded (corresponding channel - if you have only | ||
one height field in your file and you haven' | one height field in your file and you haven' | ||
Line 232: | Line 223: | ||
are used to further shift the dfield if necessary. If these are zero, top left corner is aligned. Parameter depth (in voxels) defines the | are used to further shift the dfield if necessary. If these are zero, top left corner is aligned. Parameter depth (in voxels) defines the | ||
depth to which the material is assigned (with same orientation as the axis). | depth to which the material is assigned (with same orientation as the axis). | ||
- | </p> | ||
- | <p>As an example, the vector material file can look like this for use of channel 2, y axis normal orientation (zero at voxel 50), inverse of mask used, | ||
- | depth 30 voxels and a slight shift in xy direction:</ | ||
- | < | ||
- | < | ||
+ | As an example, the vector material file can look like this for use of channel 2, y axis normal orientation (zero at voxel 50), inverse of mask used, | ||
+ | depth 30 voxels and a slight shift in xy direction: | ||
+ | |||
+ | '' | ||
+ | |||
+ | Here the computational volume was 200x200x200 voxels and data field had physical dimensions larger than computational volume. | ||
+ | |||
+ | **BOUNDARY_ALL**\\ | ||
+ | //type// | ||
- | < | ||
- | < | ||
Set boundary condition of whole volume to a given type: | Set boundary condition of whole volume to a given type: | ||
- | < | + | * **none** which means no boundary treatment providing reflection similar to perfect electric conductor, |
- | < | + | * **liao** which means 2nd order absorbing (Liao) providing quite good absorption but not such good as the CPML boundary condition |
- | < | + | * **cpml** which means convolutional perfectly matched layer (CPML) with parameters: |
- | < | + | |
- | convolutional perfectly matched layer (CPML) with parameters:<br> | + | |
- | depth<br> | + | |
- | power<br> | + | |
- | sigma_max<br> | + | |
- | a_max<br> | + | |
- | kappa_max< | + | |
- | where <tt>sigma_max</tt>, alpha and <tt>kappa_max</ | + | where '' |
- | coordinate stretching and damping scaled by polynom of <tt>power</tt> | + | coordinate stretching and damping scaled by polynom of '' |
- | on CPML region of thickness given by <tt>depth</tt>. | + | on CPML region of thickness given by '' |
- | If <tt>sigma_max</ | + | If '' |
calculated as the optimum value (given by CPML power, | calculated as the optimum value (given by CPML power, | ||
- | grid spacing and free space impedance).<br> | + | grid spacing and free space impedance). |
- | For computation to be stable, | + | For computation to be stable, |
- | be positive and <tt>kappa_max</ | + | be positive and '' |
- | If <tt>kappa_max=1</ | + | If '' |
- | and no coordinate stretching is performed<br> | + | and no coordinate stretching is performed. |
As an example, to construct a 10 cells thick CPML region | As an example, to construct a 10 cells thick CPML region | ||
with polynomial scaling with power of 3 and automatically | with polynomial scaling with power of 3 and automatically | ||
- | set optimum | + | set optimum |
- | <tt> | + | '' |
- | BOUNDARY_ALL | + | BOUNDARY_ALL cpml\\ |
- | cpml< | + | 10 3 -1 0.03 4'' |
- | </tt> | + | |
- | </li> | + | **BOUNDARY_X0/BOUNDARY_XN/ |
- | </ul> | + | //type// |
- | < | ||
- | < | ||
- | < | ||
Set boundary condition of a given boundary to a given type (types are same as for BOUNDARY_ALL). | Set boundary condition of a given boundary to a given type (types are same as for BOUNDARY_ALL). | ||
Some combinations may lead to instabilities, | Some combinations may lead to instabilities, | ||
- | < | + | **MBOUNDARY_X0/ |
- | < | + | //type position// |
- | <i>type position</i>< | + | |
Artificial boundary inside material, now only periodic one is supported. Position is in pixel | Artificial boundary inside material, now only periodic one is supported. Position is in pixel | ||
coordinates. All unset values are set to computational volume boundaries. Only periodic boundary | coordinates. All unset values are set to computational volume boundaries. Only periodic boundary | ||
condition is supported now. To create periodic | condition is supported now. To create periodic | ||
boundary condition in x direction ranging from pixel coordinates 10 to 50, you need to set: | boundary condition in x direction ranging from pixel coordinates 10 to 50, you need to set: | ||
- | < | + | |
- | MBOUNDARY_X0<br> | + | '' |
- | periodic 10<br> | + | periodic 10\\ |
- | <br> | + | \\ |
- | MBOUNDARY_XN<br> | + | MBOUNDARY_XN\\ |
- | periodic 50< | + | periodic 50'' |
- | </tt> | + | |
Note that periodic boundary condition for total/ | Note that periodic boundary condition for total/ | ||
angles different from main axes of | angles different from main axes of | ||
- | computational volume is not supported.</p> | + | computational volume is not supported. |
+ | |||
+ | **Medium modifiers** | ||
+ | |||
+ | **MEDIUM_GROW**\\ | ||
+ | //i0 j0 k0 in jn kn mat_index add_index subsampling nparticles jump_mobility jump_probability random_seed// | ||
+ | |||
+ | Simulates growth of tabulated material of given index (parameter add_index) on material with given index (parameter mat_index). Growth is realized by ballistic deposition using random particle flight and its attachment that can be followed by some relaxation. Simulation is performed within box defined by (i0 j0 k0 in jn kn) that can be eventually subsampled (parameter subsampling) to get better control over results. Particles are flying from box boundaries in random direction unless they leave box or get attached to the material. Materials that are not listed in this directive have no impact on the process (as they would be vacuum). Jump mobility is given in voxel units and controls maximum distance allowed for relaxation, jump probability controls probability of such process (in range of 0-1). Number of particles is typically in range of tens of thousands at least. Random seed can be any integer to get same result or -1 to generate seed automatically. As an example to grow material of index=2 (second entry in material file) on material of index=1 (first entry in material file, with subsampling=2 you can do the following: | ||
- | < | + | '' |
+ | 20 20 20 280 280 280 1 2 2 250e6 4 0.8 1'' | ||
- | < | ||
- | <i>i0 j0 k0 in jn kn mat_index add_index subsampling nparticles jump_mobility jump_probability random_seed</ | ||
- | Simulates growth of tabulated material of given index (parameter add_index) on material with given index (parameter | ||
- | mat_index). Growth is realized by ballistic deposition using random particle flight and its attachement | ||
- | that can be followed by some relaxation. Simulation is performed within box defined by (i0 j0 k0 in jn kn) | ||
- | that can be eventually subsampled (parameter subsampling) to get better control over results. Particles are flying | ||
- | from box boundaries in random direction unless they leave box or get attached to the material. Materials that | ||
- | are not listed in this directive have no impact on the process (as they would be vacuum). Jump mobility is | ||
- | given in voxel units and controls maximum distance allowed for relaxation, jump probability controls | ||
- | probability of such process (in range of 0-1). Number of particles is typically in range of tens of thousands | ||
- | at least. Random seed can be any integer to get same result or -1 to generate seed automatically. | ||
- | As an example to grow material of index=2 (second entry in material file) on material of index=1 (first entry | ||
- | in material file, with subsampling=2 you can do the following: | ||
- | < | ||
- | MEDIUM_GROW< | ||
- | 20 20 20 280 280 280 1 2 2 250e6 4 0.8 1<br> | ||
- | </ | ||
Note that for high subsampling the process can be slow and memory demanding. Also note that to add material | Note that for high subsampling the process can be slow and memory demanding. Also note that to add material | ||
- | to the material file without adding any real object (e.g. if you want to grow something that is nowhere else | + | to the material file without adding any real object (e.g. if you want to grow something that is nowhere else in your computational geometry) you can add a parallelpiped of zero dimensions. |
- | in your computational geometry) you can add a parallelpiped of zero dimensions. | + | |
- | </p> | + | //Note that this option is not supported for direct editing by XSvit in this version.// |
- | < | + | |
+ | **MEDIUM_ROUGHEN**\\ | ||
+ | // | ||
- | < | ||
- | < | ||
Adds roughness to objects consisting of defined tabulated material (parameter material_index) adding this | Adds roughness to objects consisting of defined tabulated material (parameter material_index) adding this | ||
material and void or any other material (parameter void_index) to the object randomly. | material and void or any other material (parameter void_index) to the object randomly. | ||
Line 336: | Line 315: | ||
As an example, to add roughness to a sphere (the only object in material file), using 20 iterations | As an example, to add roughness to a sphere (the only object in material file), using 20 iterations | ||
of adding and removing spheres of radius 5+-2 voxels, add this: | of adding and removing spheres of radius 5+-2 voxels, add this: | ||
- | < | ||
- | MEDIUM_ROUGHEN< | ||
- | 5 2 20 0.01 1 0 1<br> | ||
- | </tt> | ||
- | </p> | ||
- | < | ||
- | < | + | '' |
- | <i>sigma T material_index random_seed</i>< | + | 5 2 20 0.01 1 0 1'' |
+ | |||
+ | //Note that this option is not supported for direct editing by XSvit in this version.// | ||
+ | |||
+ | **MEDIUM_SPECTRAL**\\ | ||
+ | //sigma T material_index random_seed/ | ||
Adds roughness to objects consisting of all tabulated materials (parameter material_index is only reserved for future use) using spectral synthesis and vector displacement method. Roughness parameters sigma and T controlling variance and correlation length are given in voxels. | Adds roughness to objects consisting of all tabulated materials (parameter material_index is only reserved for future use) using spectral synthesis and vector displacement method. Roughness parameters sigma and T controlling variance and correlation length are given in voxels. | ||
Random seed can be -1 to get it randomly. | Random seed can be -1 to get it randomly. | ||
- | < | + | **MEDIUM_EXPRESSION**\\ |
- | <i>i_start j_start k_start i_end j_end k_end material_index void_index max_distance distance_mode expression</i>< | + | //i_start j_start k_start i_end j_end k_end material_index void_index max_distance distance_mode expression// |
- | Alters object boundary using some analytical expression. In the expression, x, y and z mean the voxel coordinates. Basic mathematical functions and constants (pi) can be used. | + | |
+ | Alters object boundary using some analytical expression. In the expression, x, y and z mean the voxel coordinates. Basic mathematical functions and constants (π) can be used. | ||
As an example, this combination of sine functions can create quite chaotic surface shape: | As an example, this combination of sine functions can create quite chaotic surface shape: | ||
- | < | ||
- | MEDIUM_EXPRESSION< | ||
- | 10 10 10 290 290 290 1 0 10 1 0.5+0.08*sin(x/ | ||
- | </tt> | ||
+ | '' | ||
+ | 10 10 10 290 290 290 1 0 10 1 0.5+0.08*sin(x/ | ||
+ | |||
+ | **MEDIUM_SMOOTH**\\ | ||
+ | // | ||
- | < | ||
- | < | ||
- | < | ||
Performs smoothing vector material. Smoothing means locally averaging the optical constants (e.g. permittivity). | Performs smoothing vector material. Smoothing means locally averaging the optical constants (e.g. permittivity). | ||
This is a very simple way how to reduce staircasing effects. However it is physically reasonable only in | This is a very simple way how to reduce staircasing effects. However it is physically reasonable only in | ||
- | some cases (recalling e.g. effective medium approximation). For metals the procedure is under development and is | + | some cases (recalling e.g. effective medium approximation). For metals the procedure is under development and is not recommended for use in present version and for PEC it cannot be applied at all. |
- | not recommended for use in present version and | + | |
- | for PEC it cannot be applied at all. | + | |
- | </p> | + | |
+ | **Field sources** | ||
+ | **SOURCE_POINT**\\ | ||
+ | //i j k mode (filename, values)// | ||
- | |||
- | < | ||
- | |||
- | < | ||
- | <i>i j k mode (filename, values)</ | ||
Point source at position (i j k) using electric and magnetic field intensity | Point source at position (i j k) using electric and magnetic field intensity | ||
time dependence described in file filename (mode=0) or generating such file for sine or pulsed sine waveform. | time dependence described in file filename (mode=0) or generating such file for sine or pulsed sine waveform. | ||
- | If a text file is used, it consists of integer determining total number of values and succesive | + | If a text file is used, it consists of integer determining total number of values and successive |
(step, ex, ey, ez, hx, hy, hz). For " | (step, ex, ey, ez, hx, hy, hz). For " | ||
directory) providing a sine wave source; the parameter after " | directory) providing a sine wave source; the parameter after " | ||
- | in meters followed by electric field amplitude. Finally, two parameters theta and phi determine the source orientation. For " | + | in meters followed by electric field amplitude. Finally, two parameters theta and phi determine the source orientation. For " |
- | parameter " | + | parameter " |
given in integer steps of the simulation (e.g. 20), and then electric field amplitude. Again, at the end, two parameters theta and phi determine the source orientation. | given in integer steps of the simulation (e.g. 20), and then electric field amplitude. Again, at the end, two parameters theta and phi determine the source orientation. | ||
- | Theta and phi equal to zero correspond to x-direction electric field point source.</p> | + | Theta and phi equal to zero correspond to x-direction electric field point source. |
+ | |||
+ | **SOURCE_TSF**\\ | ||
+ | //i_start j_start k_start i_end j_end k_end theta phi psi mode (filename, values)// | ||
- | < | ||
- | < | ||
- | < | ||
Plane wave source using total/ | Plane wave source using total/ | ||
- | for field propagation, | + | for field propagation, |
- | Parameter " | + | Parameter " |
provided pointing to a text file containing number of values N followed by N pairs of values step number - electric | provided pointing to a text file containing number of values N followed by N pairs of values step number - electric | ||
field value. N needs to be at least the total number of steps in simulation. | field value. N needs to be at least the total number of steps in simulation. | ||
For " | For " | ||
directory) providing a sine wave source; the parameter after " | directory) providing a sine wave source; the parameter after " | ||
- | in meters followed by electric field amplitude. For " | + | in meters followed by electric field amplitude. For " |
- | parameter " | + | parameter " |
given in integer steps of the simulation (e.g. 20), and then electric field amplitude. | given in integer steps of the simulation (e.g. 20), and then electric field amplitude. | ||
- | </p> | ||
- | <p> | ||
- | Note that in present version the TSF source is in vacuum, material cannot cross it.</ | ||
- | < | ||
- | some typical useful values of parameters:</ | ||
- | <table border=" | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | + | Note that in present version the TSF source is in vacuum, material cannot cross it. |
- | <i>boundary</i>< | + | |
+ | Orientation of axes of incoming wave is shown in the following image, table shows | ||
+ | some typical useful values of parameters: | ||
+ | |||
+ | ^ direction ^ polarisation ^ theta [deg] ^ phi [deg] ^ psi [deg] ^ | | ||
+ | | x axis | y | 90 | 0 | 0 | {{http://gsvit.net/ | ||
+ | | x axis | z | 90 | 0 | 90 | ::: | | ||
+ | | y axis | x | 90 | 90 | 0 | ::: | | ||
+ | | y axis | z | 90 | 90 | 90 | ::: | | ||
+ | | z axis | x | 0 | 0 | 90 | ::: | | ||
+ | | z axis | y | 0 | 0 | 0 | ::: | | ||
+ | |||
+ | See Example 2 for details of use. | ||
+ | |||
+ | **TSF_SKIP**\\ | ||
+ | //boundary// | ||
Specifies boundary that should be excluded from TSF application. Parameter " | Specifies boundary that should be excluded from TSF application. Parameter " | ||
is string denoting which boundary is being set (i0, j0, k0, in, jn, kn, depth N). Note that | is string denoting which boundary is being set (i0, j0, k0, in, jn, kn, depth N). Note that | ||
Line 423: | Line 397: | ||
causes solver to skip the TSF application in all the places with some material (not vacuum) | causes solver to skip the TSF application in all the places with some material (not vacuum) | ||
and even some number of voxels (parameter depth) close to it. This is useful to remove only some area where material is traversing the TSF boundary from the TSF application. | and even some number of voxels (parameter depth) close to it. This is useful to remove only some area where material is traversing the TSF boundary from the TSF application. | ||
- | </p> | ||
- | < | + | **TSF_GAUSSIAN_Z**\\ |
- | <i>i_center j_center i_radius j_radius</i>< | + | //i_center j_center i_radius j_radius// |
Enable Gaussian multiplier of the TSF input data providing a Gaussian beam. Working only for TSF source oriented in z direction and for normal incidence. | Enable Gaussian multiplier of the TSF input data providing a Gaussian beam. Working only for TSF source oriented in z direction and for normal incidence. | ||
Beam is centered in i_center, j_center position and has width settable to each direction independently i_radius, j_radius. | Beam is centered in i_center, j_center position and has width settable to each direction independently i_radius, j_radius. | ||
Everything is in voxel coordinates. | Everything is in voxel coordinates. | ||
- | </p> | ||
- | < | + | **SOURCE_LTSF**\\ |
- | <i>i_start j_start k_start i_end j_end k_end theta phi psi n_materials mat1_pos mat1_epsilon mat1_mu mat1_sigma mat_sigast .... mode (filename, values)</i>< | + | //i_start j_start k_start i_end j_end k_end theta phi psi n_materials mat1_pos mat1_epsilon mat1_mu mat1_sigma mat_sigast .... mode (filename, values)// |
- | Plane wave source using layered total/ | + | |
+ | Plane wave source using layered total/ | ||
In contrast to SOURCE_TSF, here the material | In contrast to SOURCE_TSF, here the material | ||
can be formed by N layers in z-direction (in present implementation only dielectric and non-absorbing). Incident wave however can cross the sample at angle | can be formed by N layers in z-direction (in present implementation only dielectric and non-absorbing). Incident wave however can cross the sample at angle | ||
as well. Layers need to be introduced both in parameters of the source and in material description files (as set MEDIUM_LINEAR or MEDIUM_VECTOR) and the values | as well. Layers need to be introduced both in parameters of the source and in material description files (as set MEDIUM_LINEAR or MEDIUM_VECTOR) and the values | ||
- | of material parameters need to match at LTSF boundary.<br> | + | of material parameters need to match at LTSF boundary. |
First six integers determine volume that is used | First six integers determine volume that is used | ||
- | for field propagation, | + | for field propagation, |
position in z direction and four material parameters are entered. By default the zero interface starts at | position in z direction and four material parameters are entered. By default the zero interface starts at | ||
z=0 and has permittivity of vacuum, so it does not need to be entered. Plane wave should start at vacuum. In order to create single free standing film | z=0 and has permittivity of vacuum, so it does not need to be entered. Plane wave should start at vacuum. In order to create single free standing film | ||
we therefore need to enter two interfaces, upper and lower as seen in the example below. | we therefore need to enter two interfaces, upper and lower as seen in the example below. | ||
- | Next parameter, " | + | Next parameter, " |
provided pointing to a text file containing number of values N followed by N pairs of values step number - electric | provided pointing to a text file containing number of values N followed by N pairs of values step number - electric | ||
field value. N needs to be at least the total number of steps in simulation. | field value. N needs to be at least the total number of steps in simulation. | ||
For " | For " | ||
directory) providing a sine wave source; the parameter after " | directory) providing a sine wave source; the parameter after " | ||
- | in meters followed by electric field amplitude. For " | + | in meters followed by electric field amplitude. For " |
- | parameter " | + | parameter " |
given in integer steps of the simulation (e.g. 20), and then electric field amplitude. | given in integer steps of the simulation (e.g. 20), and then electric field amplitude. | ||
- | </ | + | |
- | <p> | + | As an example to create a plane wave (with a pulse time dependency and polarization |
- | As an example to create a plane wave (with a pulse time dependency and polarisation | + | |
incident at angle on a free standing dielectric layer (in 200x200x200 voxels computational volume), | incident at angle on a free standing dielectric layer (in 200x200x200 voxels computational volume), | ||
use the following: | use the following: | ||
- | <tt> | ||
- | SOURCE_LTSF | ||
- | 30 30 30 170 170 170 0.3 0.3 0.3 2 80 3 1 0 0 120 1 1 0 0 2 2e-7 50 5 | ||
- | </ | ||
- | Note that in this case the material parameters need to match the source, so e.g. using MEDIUM_VECTOR definition we can use this material file:< | ||
- | <tt> | ||
- | 8 20 20 80 180 180 120 0 3 1 0 0<br> | ||
- | </tt> | ||
- | </p> | ||
- | < | + | '' |
- | <i>i_center j_center i_radius j_radius</i>< | + | 30 30 30 170 170 170 0.3 0.3 0.3 2 80 3 1 0 0 120 1 1 0 0 2 2e-7 50 5'' |
+ | |||
+ | Note that in this case the material parameters need to match the source, so e.g. using MEDIUM_VECTOR definition we can use this material file: | ||
+ | |||
+ | '' | ||
+ | |||
+ | **LTSF_GAUSSIAN**\\ | ||
+ | //i_center j_center i_radius j_radius// | ||
Enable Gaussian multiplier of the LTSF input data providing a Gaussian beam. Now working only for normal incidence. | Enable Gaussian multiplier of the LTSF input data providing a Gaussian beam. Now working only for normal incidence. | ||
Beam is centered in i_center, j_center position and has width settable to each direction independently i_radius, j_radius. | Beam is centered in i_center, j_center position and has width settable to each direction independently i_radius, j_radius. | ||
Everything is in voxel coordinates. | Everything is in voxel coordinates. | ||
- | </p> | ||
- | < | + | **SOURCE_SF**\\ |
- | <i>theta phi psi mode (filename, values)</i>< | + | //theta phi psi mode (filename, values)// |
Plane wave source using pure scattered field formulation, | Plane wave source using pure scattered field formulation, | ||
The parameters for source direction and data definition are the same as for TSF source. | The parameters for source direction and data definition are the same as for TSF source. | ||
- | Note that SF source is not suported | + | Note that SF source is not supported |
- | <p>See Example 3 for details of use.</p> | + | |
+ | See Example 3 for details of use. | ||
+ | |||
+ | **SOURCE_TSFF**\\ | ||
+ | //i_start j_start k_start i_end j_end k_end thetamax fdist polarisation n m mode (filename, values)// | ||
- | < | ||
- | < | ||
Z direction oriented focused wave source using total/ | Z direction oriented focused wave source using total/ | ||
- | according to algorithm published in <i>I.R.Capoglu, | + | according to algorithm published in //I.R.Capoglu, |
for field propagation, | for field propagation, | ||
- | Polarisation | + | Polarization |
Integer parameters n and m determine number of plane waves to be integrated (more is better, values around 12, 36 should be already | Integer parameters n and m determine number of plane waves to be integrated (more is better, values around 12, 36 should be already | ||
enough). | enough). | ||
- | Similarily | + | Similarly |
provided pointing to a text file containing number of values N followed by N pairs of values step number - electric | provided pointing to a text file containing number of values N followed by N pairs of values step number - electric | ||
field value. N needs to be at least the total number of steps in simulation. | field value. N needs to be at least the total number of steps in simulation. | ||
For " | For " | ||
directory) providing a sine wave source; the parameter after " | directory) providing a sine wave source; the parameter after " | ||
- | in meters, followed by electric field amplitude. For " | + | in meters, followed by electric field amplitude. For " |
- | parameter " | + | parameter " |
given in integer steps of the simulation (e.g. 20), and finally electric field amplitude. | given in integer steps of the simulation (e.g. 20), and finally electric field amplitude. | ||
- | </p> | ||
+ | **TSFF_EXPORT**\\ | ||
+ | // | ||
- | < | ||
- | < | ||
Saves the calculated focused source boundary data for further use by SOURCE_TSFF_EXT. Only top z plane is used. Files contain both ex, ey and hx, hy components, for each step one file is created. | Saves the calculated focused source boundary data for further use by SOURCE_TSFF_EXT. Only top z plane is used. Files contain both ex, ey and hx, hy components, for each step one file is created. | ||
- | </p> | ||
- | < | + | **SOURCE_TSFF_EXT**\\ |
- | <i>i_start j_start k_start i_end j_end k_end filebase_e filebase_h</i>< | + | //i_start j_start k_start i_end j_end k_end filebase_e filebase_h// |
Uses pre-calculated focused source boundary data as a source. Only top z plane is used. Settings should be same as in SOURCE_TSFF_EXPORT. | Uses pre-calculated focused source boundary data as a source. Only top z plane is used. Settings should be same as in SOURCE_TSFF_EXPORT. | ||
- | </p> | ||
- | < | + | **SOURCE_LTSFF**\\ |
- | <i>i_start j_start k_start i_end j_end k_end thetamax fdist polarisation n m n_materials mat1_pos mat1_epsilon mat1_mu mat1_sigma mat_sigast .... mode (filename, values)</i>< | + | //i_start j_start k_start i_end j_end k_end thetamax fdist polarisation n m n_materials mat1_pos mat1_epsilon mat1_mu mat1_sigma mat_sigast .... mode (filename, values)// |
Similar focused source to SOURCE_TSFF, | Similar focused source to SOURCE_TSFF, | ||
Note that in contrast to SOURCE_TSFF much more memory is needed for precomputation of the incident field and in present version | Note that in contrast to SOURCE_TSFF much more memory is needed for precomputation of the incident field and in present version | ||
you can easily run out of memory for larger systems or larger number of computation steps. | you can easily run out of memory for larger systems or larger number of computation steps. | ||
- | </p> | ||
- | < | + | **SOURCE_EXT**\\ |
- | <i>ipos jpos kpos ijstart jkstart ext_xres ext_yres ext_ifrom ext_jfrom ext_ito ext_jto shift filebase_ex filebase_ey filebase_ez filebase_hx filebase_hy filebase_hz</i>< | + | //ipos jpos kpos ijstart jkstart ext_xres ext_yres ext_ifrom ext_jfrom ext_ito ext_jto shift filebase_ex filebase_ey filebase_ez filebase_hx filebase_hy filebase_hz/ |
Uses set of external arrays to inject a source via TSF-like approach. Direction of the source is controlled by ipos, jpos and kpos where only | Uses set of external arrays to inject a source via TSF-like approach. Direction of the source is controlled by ipos, jpos and kpos where only | ||
- | one of these three parameters should be not -1 similarily | + | one of these three parameters should be not -1 similarly |
of upper left corner of injected source plane. Parameters ext_xres and ext_yres control resolution of the data in external source files | of upper left corner of injected source plane. Parameters ext_xres and ext_yres control resolution of the data in external source files | ||
and parameters ext_ifrom, ext_jfrom ext_ito and ext_jto control size and position of the part of external field that is used. Parameters filebase describe | and parameters ext_ifrom, ext_jfrom ext_ito and ext_jto control size and position of the part of external field that is used. Parameters filebase describe | ||
naming of source files (so for filebase_ex=" | naming of source files (so for filebase_ex=" | ||
to what we get by OUT_PLANE directive in ASCII mode. | to what we get by OUT_PLANE directive in ASCII mode. | ||
- | <i>Note that this directive is experimental, | + | //Note that this directive is experimental, |
- | </p> | + | |
- | < | + | //Note that this option is not supported for direct editing by XSvit in this version.// |
+ | |||
+ | **SOURCE_WAVELENGTH**\\ | ||
+ | //min center max// | ||
- | < | ||
- | < | ||
- | <p> | ||
Override automatic wavelength detection mechanism for sources. These (or automatically detected) | Override automatic wavelength detection mechanism for sources. These (or automatically detected) | ||
values are used when listed material (e.g. silica) is used to pick the optical properties | values are used when listed material (e.g. silica) is used to pick the optical properties | ||
at right wavelength from the predefined values. Center value is used for materials that are | at right wavelength from the predefined values. Center value is used for materials that are | ||
predefined as lookup table, min and max values are used for materials where we have some | predefined as lookup table, min and max values are used for materials where we have some | ||
- | dispersion model available.</p> | + | dispersion model available. |
- | + | **Output**\\ | |
- | <b>Output</ | + | Note that in present version every output needs GPU data to be synchronized with CPU, which |
- | + | ||
- | <p>Note that in present version every output needs GPU data to be synchronized with CPU, which | + | |
can take significant time. For really fast simulations | can take significant time. For really fast simulations | ||
- | try to reduce frequency of data outputs.</p> | + | try to reduce frequency of data outputs. |
+ | |||
+ | **OUT_FILE**\\ | ||
+ | // | ||
- | < | ||
- | < | ||
Set filename that will be used for outputing data. Gwyddion file (*.gwy) | Set filename that will be used for outputing data. Gwyddion file (*.gwy) | ||
holds all data cross-sections (2d data). | holds all data cross-sections (2d data). | ||
- | </p> | ||
- | < | + | **OUT_POINT**\\ |
- | <i>Ex/ | + | //Ex/ |
Output values of given component of electric/ | Output values of given component of electric/ | ||
file (filename). | file (filename). | ||
- | </p> | ||
- | < | + | **OUT_IMAGE**\\ |
- | <i>Ex/ | + | //Ex/ |
Output image of plane cross-section. Which plane is used is determined | Output image of plane cross-section. Which plane is used is determined | ||
by indices i j k; two of them must be -1. All results are saved to a .gwy file, skipping given | by indices i j k; two of them must be -1. All results are saved to a .gwy file, skipping given | ||
number of steps (e.g. not outputing image in every step unless nskip=1). | number of steps (e.g. not outputing image in every step unless nskip=1). | ||
Description is a string shown for the channel in Gwyddion data browser. | Description is a string shown for the channel in Gwyddion data browser. | ||
- | </p> | ||
- | < | ||
- | orientation of axes on what is seen in Gwyddion is show below</ | ||
- | <img src=" | ||
- | < | + | Note that Gwyddion shows data with top-left corner being center of coordinates, |
- | <i>component skip i_start j_start k_start i_end j_end k_end epsilon mu sigma sigma* filename</i>< | + | orientation of axes on what is seen in Gwyddion is show below |
+ | {{http:// | ||
+ | |||
+ | **OUT_SUM**\\ | ||
+ | //component skip i_start j_start k_start i_end j_end k_end epsilon mu sigma sigma* filename// | ||
Output sum of electric field intensity (components: | Output sum of electric field intensity (components: | ||
(component: abs) extracted from bounding box and material with given properties (epsilon only used for this). | (component: abs) extracted from bounding box and material with given properties (epsilon only used for this). | ||
Line 577: | Line 551: | ||
values are calculated at each time step anyway and will be output for intermediate steps as well. | values are calculated at each time step anyway and will be output for intermediate steps as well. | ||
At present this is tested only on CPU. | At present this is tested only on CPU. | ||
- | </p> | ||
- | < | + | **OUT_SUMTAB**\\ |
- | <i>component skip i_start j_start k_start i_end j_end k_end material filename</i>< | + | //component skip i_start j_start k_start i_end j_end k_end material filename// |
Output sum of electric field intensity (components: | Output sum of electric field intensity (components: | ||
(component: abs) extracted from bounding box and material with given properties (nk tabulated values | (component: abs) extracted from bounding box and material with given properties (nk tabulated values | ||
Line 587: | Line 561: | ||
values are calculated at each time step anyway and will be output for intermediate steps as well. | values are calculated at each time step anyway and will be output for intermediate steps as well. | ||
At present this is tested only on CPU. | At present this is tested only on CPU. | ||
- | </p> | ||
- | < | + | **OUT_VOLUME**\\ |
- | <i>Ex/ | + | //Ex/ |
Output values of given component of electric/ | Output values of given component of electric/ | ||
file. Whole computational volume is output. Output starts in " | file. Whole computational volume is output. Output starts in " | ||
If " | If " | ||
(values in between outputs are not used; this means that to sum absorption from step 100 to 110 you | (values in between outputs are not used; this means that to sum absorption from step 100 to 110 you | ||
- | need to run at least 110 computation steps with volume output skip=1 and volume output start=100, stop=110).</p> | + | need to run at least 110 computation steps with volume output skip=1 and volume output start=100, stop=110). |
- | <p>If ASCII file (ascii=1) is output, it has following | + | |
- | structure: xres yres zres channel (and all the data as an array of values separated by space or end of line).</p> | + | If ASCII file (ascii=1) is output, it has following |
- | <p>In binary mode the header is omitted, so only arrays are output, | + | structure: xres yres zres channel (and all the data as an array of values separated by space or end of line). |
+ | |||
+ | In binary mode the header is omitted, so only arrays are output, | ||
all the array values are doubles (eight bytes), there are no separators. You can read binary output | all the array values are doubles (eight bytes), there are no separators. You can read binary output | ||
- | directly by e.g. <a href="http:// | + | directly by e.g. [[http:// |
- | volume of 100x100x100 voxels is visualised | + | volume of 100x100x100 voxels is visualized |
- | <a href=" | + | |
- | </p> | + | {{http:// |
+ | |||
+ | **OUT_FORCE**\\ | ||
+ | //skip i_start j_start k_start i_end j_end k_end filename// | ||
- | < | ||
- | < | ||
Output optical force acting on volume defined by six integers. X, y, and z component | Output optical force acting on volume defined by six integers. X, y, and z component | ||
time dependence is output together with its values averaged over source period (source frequency is determined | time dependence is output together with its values averaged over source period (source frequency is determined | ||
using FFT). Optical force is calculated using Maxwell stress tensor. No media should cross the | using FFT). Optical force is calculated using Maxwell stress tensor. No media should cross the | ||
boundary and scaterrer to be evaluated should be placed inside the evaluation volume. | boundary and scaterrer to be evaluated should be placed inside the evaluation volume. | ||
- | </p> | ||
- | < | + | **NFFF**\\ |
- | <i>i0 j0 k0 i1 j1 k1 sum_from sum_to</i>< | + | //i0 j0 k0 i1 j1 k1 sum_from sum_to// |
- | Near-to far field calculation boundary definition. Needs to be within the computational | + | |
+ | Near-field to far-field calculation boundary definition. Needs to be within the computational | ||
volume. Parameters i0..k1 define the boundary position, sum_from and sum_to define | volume. Parameters i0..k1 define the boundary position, sum_from and sum_to define | ||
the range of NFFF data summation when applied (not supported now). See example 3 for details of use. | the range of NFFF data summation when applied (not supported now). See example 3 for details of use. | ||
- | </p> | ||
- | < | + | **NFFF_SKIP**\\ |
- | <i>boundary i_min/j_min j_min/k_min i_max/j_max j_max/ | + | //boundary i_min/j_min j_min/k_min i_max/j_max j_max/ |
Specifies area that should be excluded from NFFF calculation. Parameter " | Specifies area that should be excluded from NFFF calculation. Parameter " | ||
is string denoting which boundary is being set (i0, j0, k0, in, jn, kn), the next | is string denoting which boundary is being set (i0, j0, k0, in, jn, kn), the next | ||
Line 629: | Line 606: | ||
in principle NFFF should be applied on all the boundaries to work properly, but in case | in principle NFFF should be applied on all the boundaries to work properly, but in case | ||
of special materials or boundary conditions some boundary or boundary area skipping can make sense. | of special materials or boundary conditions some boundary or boundary area skipping can make sense. | ||
- | </p> | ||
- | < | + | **NFFF_RAMAHI_POINT**\\ |
- | <i>i j k filename</i>< | + | //i j k filename// |
Far field point designed for time values of electric field output. Can be outside | Far field point designed for time values of electric field output. Can be outside | ||
of the computational volume even if it is entered in integer values representing | of the computational volume even if it is entered in integer values representing | ||
position in computational volume (therefore values can be e.g. negative). See example 3 for details of use. | position in computational volume (therefore values can be e.g. negative). See example 3 for details of use. | ||
- | </p> | ||
- | < | + | **NFFF_SPHERICAL_AREA**\\ |
- | <i>theta_res phi_res radius theta_from phi_from theta_to phi_to savefile</i>< | + | //theta_res phi_res radius theta_from phi_from theta_to phi_to savefile// |
Creates set of far field points designed for time values of electric field output. Set of (theta_res x phi_res) points | Creates set of far field points designed for time values of electric field output. Set of (theta_res x phi_res) points | ||
are on a sphere of given radius (int integer i.e. voxel units), theta is declination and phi is azimuth. Parameter savefile | are on a sphere of given radius (int integer i.e. voxel units), theta is declination and phi is azimuth. Parameter savefile | ||
Line 646: | Line 623: | ||
to cover whole half-sphere above sample for reflection scattering simulation by | to cover whole half-sphere above sample for reflection scattering simulation by | ||
set of 20x20 points on sphere with radius of 1000 voxels, and not to save intermediate files, write | set of 20x20 points on sphere with radius of 1000 voxels, and not to save intermediate files, write | ||
- | </p> | ||
- | <tt> | ||
- | NFFF_SPHERICAL_AREA | ||
- | 20 20 1000 90 0 180 360 0 | ||
- | </tt> | ||
- | < | ||
- | < | + | '' |
- | <i>ares bres afrom bfrom ato bto orientation distance savefile</i>< | + | 20 20 1000 90 0 180 360 0'' |
+ | |||
+ | //Note that this option is not supported for direct editing by XSvit in this version, however it can be still visualized.// | ||
+ | |||
+ | **NFFF_PLANAR_AREA**\\ | ||
+ | //ares bres afrom bfrom ato bto orientation distance savefile// | ||
Creates set of far field points designed for time values of electric field output. Set of (a x b) points | Creates set of far field points designed for time values of electric field output. Set of (a x b) points | ||
are on a plane oriented with normal to direction in x, y or z (depending on " | are on a plane oriented with normal to direction in x, y or z (depending on " | ||
Line 662: | Line 639: | ||
determines whether to save all the farfield point dependencies or just put the total output into general output | determines whether to save all the farfield point dependencies or just put the total output into general output | ||
file (in Gwyddion format). | file (in Gwyddion format). | ||
- | </p> | ||
- | < | ||
- | < | + | //Note that this option is not supported for direct editing by XSvit in this version, however it can be still visualized.// |
- | <i>i0 j0 k0 i1 j1 k1 per_ifrom per_jfrom per_ito per_jto</i>< | + | |
- | Periodic near-to far field calculation boundary definition. Suitable namely for use with periodic | + | **PERIODIC_NFFF**\\ |
+ | //i0 j0 k0 i1 j1 k1 per_ifrom per_jfrom per_ito per_jto// | ||
+ | |||
+ | Periodic near-field to far-field calculation boundary definition. Suitable namely for use with periodic | ||
boundary conditions of same dimensions. Uses only z planes (given by integer k0, k1) but repeats it as many times as given by integer | boundary conditions of same dimensions. Uses only z planes (given by integer k0, k1) but repeats it as many times as given by integer | ||
span (per_ifrom, per_jfrom, per_ito, per_jto). Using periodic repeating values 0 0 1 1 gives the same | span (per_ifrom, per_jfrom, per_ito, per_jto). Using periodic repeating values 0 0 1 1 gives the same | ||
result as conventional NFFF with skipped all the boundaries except single z plane. Values of periodic repeating can be | result as conventional NFFF with skipped all the boundaries except single z plane. Values of periodic repeating can be | ||
negative, so e.g. values -1 -1 2 2 will produce result of 3x3 copies of calculated fields centered at the originally computed one. | negative, so e.g. values -1 -1 2 2 will produce result of 3x3 copies of calculated fields centered at the originally computed one. | ||
- | </p> | ||
- | < | + | **PERIODIC_NFFF_SKIP**\\ |
- | <i>boundary i_min/j_min i_max/j_max</i>< | + | //boundary i_min/j_min i_max/ |
Specifies area that should be excluded from periodic NFFF calculation. Parameter " | Specifies area that should be excluded from periodic NFFF calculation. Parameter " | ||
is string denoting which boundary is being set (k0 or kn as no other boundaries are used in periodic NFFF), the next | is string denoting which boundary is being set (k0 or kn as no other boundaries are used in periodic NFFF), the next | ||
Line 682: | Line 660: | ||
in principle NFFF should be applied on all the boundaries to work properly, but in case | in principle NFFF should be applied on all the boundaries to work properly, but in case | ||
of special materials or boundary conditions some boundary or boundary area skipping can make sense. | of special materials or boundary conditions some boundary or boundary area skipping can make sense. | ||
- | </p> | ||
- | < | + | **PERIODIC_NFFF_POSTPROCESS**\\ |
- | <i>yes/no start</i>< | + | //yes/no start// |
- | Speedup of perodic | + | |
+ | Speedup of periodic | ||
processing at the end. First parameter requests the algorithm (0 by default not use it, 1 to use it), | processing at the end. First parameter requests the algorithm (0 by default not use it, 1 to use it), | ||
second parameter can be used to reduce memory needs skipping integration at beginning of the computation | second parameter can be used to reduce memory needs skipping integration at beginning of the computation | ||
- | when field is not developed enough anyway. Still can be very memory | + | when field is not developed enough anyway. Still can be very memory |
- | </p> | + | |
+ | **PERIODIC_NFFF_RAMAHI_POINT**\\ | ||
+ | //i j k filename// | ||
- | < | ||
- | <i>i j k filename</ | ||
Far field point designed for time values of electric field output in periodic NFFF. Can be outside | Far field point designed for time values of electric field output in periodic NFFF. Can be outside | ||
of the computational volume even if it is entered in integer values representing | of the computational volume even if it is entered in integer values representing | ||
position in computational volume (therefore values can be e.g. negative). | position in computational volume (therefore values can be e.g. negative). | ||
- | </p> | ||
- | < | + | **PERIODIC_NFFF_SPHERICAL_AREA**\\ |
- | <i>theta_res phi_res radius theta_from phi_from theta_to phi_to savefile</i>< | + | //theta_res phi_res radius theta_from phi_from theta_to phi_to savefile// |
Creates set of far field points designed for time values of electric field output using periodic NFFF. Set of (theta_res x phi_res) points | Creates set of far field points designed for time values of electric field output using periodic NFFF. Set of (theta_res x phi_res) points | ||
are on a sphere of given radius (int integer i.e. voxel units), theta is declination and phi is azimuth. Parameter savefile | are on a sphere of given radius (int integer i.e. voxel units), theta is declination and phi is azimuth. Parameter savefile | ||
Line 707: | Line 685: | ||
to cover whole half-sphere above sample for reflection scattering simulation by | to cover whole half-sphere above sample for reflection scattering simulation by | ||
set of 20x20 points on sphere with radius of 1000 voxels, and not to save intermediate files, write | set of 20x20 points on sphere with radius of 1000 voxels, and not to save intermediate files, write | ||
- | </p> | ||
- | <p> | ||
- | <tt> | ||
- | PERIODIC_NFFF_SPHERICAL_AREA< | ||
- | 20 20 1000 90 0 180 360 0 | ||
- | </tt> | ||
- | </p> | ||
- | < | ||
- | <b>Graphics card use</b> | + | '' |
- | < | + | 20 20 1000 90 0 180 360 0'' |
- | <i>ngpus</i>< | + | |
+ | //Note that this option is not supported for direct editing by XSvit in this version, however it can be still visualized.// | ||
+ | |||
+ | **Graphics card use** | ||
+ | |||
+ | **GPU**\\ | ||
+ | //ngpus// | ||
Set number of graphics cards to be used (indexed as CUDA indexes them). | Set number of graphics cards to be used (indexed as CUDA indexes them). | ||
If this command is not used or set to zero, calculation is performed | If this command is not used or set to zero, calculation is performed | ||
on PC processor. See example 1 for details of use. Note that at present | on PC processor. See example 1 for details of use. Note that at present | ||
- | version use of multiple GPUs together is implemented, | + | version use of multiple GPUs together is implemented, |
+ | |||
+ | **UGPU**\\ | ||
+ | //number// | ||
- | < | ||
- | < | ||
Set GPU with given index to be used for calculations (indexed as CUDA indexes them). | Set GPU with given index to be used for calculations (indexed as CUDA indexes them). | ||
This can be used for example to run several different calculations on different cards. | This can be used for example to run several different calculations on different cards. | ||
- | See example 1 for details of use.</p> | + | See example 1 for details of use. |
- | < | + | **GPU_QUERY**\\ |
- | <i>0/1</i>< | + | //0/1// |
Search for available GPUs, detecting and printing their capabilities prior to using any of them (default 1, which means true). | Search for available GPUs, detecting and printing their capabilities prior to using any of them (default 1, which means true). | ||
Skipping this step can prevent large delays on some supercomputing systems with very large number of boards | Skipping this step can prevent large delays on some supercomputing systems with very large number of boards | ||
and PCI buses, however it is not necessary nor recommended for use on a standard PC. | and PCI buses, however it is not necessary nor recommended for use on a standard PC. | ||
- | </p> | ||
- | <b>General commands</b> | + | **General commands** |
- | < | + | |
- | < | + | **VERBOSE**\\ |
- | < | + | //0-4// |
- | </ | + | Set text output (step by step), from full (4) to silent mode (0). |
docs/gsvit_inputs.1739957268.txt.gz · Last modified: 2025/02/19 10:27 by 127.0.0.1