168 lines
6.1 KiB
Plaintext
Executable File
168 lines
6.1 KiB
Plaintext
Executable File
.. _doping :
|
|
|
|
 _place_holder;
|
|
|
|
> **_DOPING_**
|
|
|
|
> > Interpolates between mesh object attributes or assigns values to a mesh
|
|
object attribute.
|
|
|
|
Options **constant **and **gaussian** assign values to a mesh object
|
|
attribute. _place_holder; Options **table**, **integer1**, and **integer2
|
|
**interpolate from a reference mesh object.
|
|
|
|
The **constant **option assigns a constant value to all specified nodes.
|
|
|
|
The **gaussian **option creates a very special gaussian distribution around a
|
|
line or point. _place_holder; The bounding box (x1,y1,z1) to (x2,y2,z2)
|
|
specifies where the peak concentration will be, Note: y2 is ignored; if z1=z2
|
|
then the distribution will be around a point. _place_holder; All
|
|
coordinates are assumed to be given as Cartesian, **xyz** is
|
|
required. _place_holder; The value assigned to the attribute is determined
|
|
by the Gaussian distribution:
|
|
|
|
>>
|
|
|
|
>>> value = concentration * exp(-(L/std_dev)**2)
|
|
|
|
>>
|
|
|
|
>> where L is the effective distance and can be represented as:
|
|
|
|
>>
|
|
|
|
>>> L = sqrt( dy**2 + (1/lateral_diffusion)*(dx**2 + dz**2) )
|
|
|
|
>>
|
|
|
|
>> and where
|
|
|
|
>>
|
|
|
|
>>> dy = y-y1 (y2 ignored)
|
|
|
|
dx = x-x1 if x < x1 < x2
|
|
|
|
= 0 if x1 < x < x2
|
|
|
|
= x-x2 if x1 < x2 < x
|
|
|
|
dz similar to dx.
|
|
|
|
>>
|
|
|
|
>> The **table** option interpolates an attribute from a reference mesh object
|
|
and reference attribute onto the current mesh object using** linear**, **log**
|
|
or **asinh** interpolation (the default is linear). _place_holder; In the
|
|
case of 2D tabular interpolation, additional arguments specify the planar
|
|
correspondence for the interpolation: geom_out and geom_ref refer to the
|
|
output and reference orientation of a 2D axial distribution and may take the
|
|
values, **xy, yz, xz**, _place_holder; .
|
|
|
|
>>
|
|
|
|
>> In all cases, field_out specifies the name of the attribute, ifirst, ilast,
|
|
istride specify a point set restriction, and **set add or subtract** indicate
|
|
if the calculated or input-value is added to, subtracted from or used to set
|
|
the existing node attribute value.
|
|
|
|
>>
|
|
|
|
>> If the values to be doped (interpolated) are integers (options **integer1
|
|
**and **integer2**), doping works in two ways. _place_holder; For integer
|
|
doping, only the **set** option is implemented.
|
|
|
|
If the second field is **integer1**, the new nodal attributes are based on
|
|
element material types. Set field_out and attr_ref to **imt1** in this case.
|
|
The **integer1** option is implemented only for setting node material
|
|
(**imt1**). The **imt1** values of the active mesh object nodes will be set by
|
|
determining which element in the reference mesh object the node falls in. This
|
|
element's material (**itetclr**) value is then assigned to the node **imt1**.
|
|
|
|
>>
|
|
|
|
>> The **integer2** option sets node based attributes in the active mesh
|
|
object by determining which voronoi cell in the reference mesh object the node
|
|
falls in. Then the value for the node corresponding to this voronoi cell is
|
|
copied to the active node.
|
|
|
|
If the second field is **integer2**, the new nodal attributes are based on the
|
|
table attribute types using the Voronoi cells around the table nodes.
|
|
|
|
For integer doping, function can be** min** or **max** to choose what happens
|
|
if a cmo_out node falls on a boundary between two elements or Voronoi cells.
|
|
For 3d, Voronoi cell based doping, function can also be **minp** or **maxp**
|
|
which makes any cmo_out nodes that fall outside the cmo_table geometry set to
|
|
the maximum number of materials plus one. Mapset can be set to **create**,
|
|
**use**, or left blank. If **create** is used then an idop attribute is formed
|
|
that maps the cmo_table nodes to the cmo_out nodes. If **use** is used, doping
|
|
will read and use this previously formed and saved mapping. Note that doping
|
|
of integers should be done without child/parent relationships. If parents
|
|
exist, the doping results are unpredictable at interface boundaries because
|
|
the value of parent nodes are unpredictable there.
|
|
|
|
>>
|
|
|
|
>> FORMAT:
|
|
|
|
>>
|
|
|
|
>>> **doping**/**constant**/field_out/**set|add|sub/
|
|
**ifirst,ilast,istride/value
|
|
|
|
**doping/gaussian/**field_out/**set|add|sub**/ ifirst,ilast,istride/
|
|
**xyz**/x1,y1,z1/x2,y2,z2/lateral_diffusion/ concentration/standard_deviation/
|
|
**doping/table/**field_out/**set|add|sub**/cmo_ref/attr_ref/[**linear|log**|**asinh**]
|
|
**doping/table/**field_out/**set|add|sub**/cmo_ref/attr_ref/[**linear|log**|**asinh**]/ [geom_out/geom_ref]
|
|
**doping/integer1**/**imt1**/**set**/ifirst,ilast,istride/cmo_ref /**imt1**/**min**|**max**
|
|
**doping/integer2/**field_out2**/set**/ifirst,ilast,istride/cmo_ref/attr_ref/
|
|
**min**|**max**|**minp**|**maxp**/[**create**|**use**]
|
|
>>
|
|
|
|
>> EXAMPLE:
|
|
|
|
>>
|
|
|
|
>>> **doping**/**constant**/density/**set**/**pset,get**,mypset/9.73
|
|
|
|
For the current mesh object, the value of the attribute density will be set to
|
|
9.73
|
|
|
|
for all nodes in the point set mypset.
|
|
|
|
**doping/gaussian**/density/**add**/**pset**,mypset/**xyz**/
|
|
0.0,0.5,0.1/0.5,0.5,0.4/0.5/5.0e+18/0.225
|
|
|
|
For the current mesh object, for nodes in mypset, the value of the
|
|
|
|
attribute density will be augmented by
|
|
|
|
the value of the distribution as defined above.
|
|
|
|
**doping**/**table**/my_field/**set**/1,0,0/cmo_ref/attr_ref/**log**
|
|
For the current mesh object, the value of the attribute my_field will be set
|
|
by
|
|
|
|
interpolating from the reference mesh object and attribute.
|
|
|
|
**doping**/**table**/Saturation /**set**/1,0,0/cmo_course/saturation_course/**linear**/**zx**/**yx**/
|
|
In this case the yx plane from the reference cmo is interpolated onto the zx
|
|
plane of the
|
|
|
|
current mesh object
|
|
|
|
**doping/integer1**/imt1/**set**/1,0,0/cmo_old/imt1/**min**
|
|
See which element of cmo_old each node of the current mesh object falls in,
|
|
and set the imt1 attribute value to the itetclr of the element in
|
|
cmo_old. _place_holder; If the node falls in more than one element use the
|
|
smallest itetclr.
|
|
|
|
**doping/integer2/**rad2**/set**/1,0,0/cmo_old/rad1/**min/create**
|
|
Create the voronoi cells around the nodes in cmo_old. _place_holder; See
|
|
which voronoi cell the nodes in the current mesh object fall in and set the
|
|
value of the attribute rad2 from the value of the attribute rad1 in the
|
|
reference mesh object. _place_holder; If there is a conflict use the
|
|
smallest value. _place_holder; Create a new attribute called idop as
|
|
explained above.
|
|
|