The MESH line

Syntax

  MESh type specs output adjustments data structure integrate

Description

The MESH line either initiates the mesh generation phase or reads a previously generated mesh. Loading a mesh created directly by a previous PADRE run will also load all its doping information, although for heterostructures - especially those where doping changes abruptly at region boundaries - using of the doping reload feature (see the DOPING line) is recommended.

Parameters

type
  RECtangular  =  logical
  PREvious     =  logical
  Tri          =  logical  (default is false)

RECTANGULAR indicates that a rectangular mesh is to be created using X.MESH/Y.MESH lines; the inclusion of the NX/NY parameters (see below) and no other type flags defaults RECTANGULAR to true. PREVIOUS is a flag to indicate that a mesh previously generated by PADRE is to be loaded; with the INFILE parameter (see below) specified and no other type flags set, PREVIOUS defaults to true. TRI specifies that mesh information is to be taken from a standard "tri" mesh generator output file (the "-o" option on the "tri" command); these files do not contain any doping information.

specs

  NX           =  integer
  NY           =  integer
  NZ           =  integer   (default is 1)
  Width        =  real
  INfile       =  filename
  ASCII.In     =  logical   (default is true)
  CYlindrical  =  logical   (default is false)

With the RECTANGULAR flag above, NX defines the number of nodes in the x-direction and NY the number in the y-direction. NZ defines a number grid "planes" in the depth dimension; it can be specified with rectangular or nonrectangular grids in the xy-plane. WIDTH usually defines the width in the depth dimension in mm for 2D simulations (NZ=1) or 3D simulations where no Z.MESH lines are given (in which case the grid planes are spaced uniformly from z=0 to z=WIDTH). For 3D simulations where the depth dimension is fixed, WIDTH becomes a unitless scale factor to multiply all terminal currents/fluxes by; this parameter is convenient to use when only simulating sections of an entire device. With PREVIOUS or TRI, INFILE gives the name of the associated mesh input file to be loaded, and ASCII.IN is a flag to indicate that the file is ascii. CYLINDRICAL sets up a 2D structure (NZ=1) as if it were 3D with cylindrical symmetry about x = xmin.

adjustments

  PAck.reg    =  logical    (default is false)
  Unpack.reg  =  logical    (default is false)
  CONdense    =  character  (default is "none")
  FLip.y      =  logical
  SCale       =  integer    (default is 1)
  DIAg.fli    =  logical    (default is false)
  SMooth.key  =  integer    (default is 1)
  IT.smooth   =  integer    (default is 30)
  IGnore      =  integer
  PRIce       =  logical    (default is false)   [Expert]
  OBt.check   =  logical    (default is true)    [Expert]

PACK.REG combines together all (adjoining and disjoint) regions of equivalent material type; UNPACK.REG attempts to perform the inverse, but only on disjoint regions. CONDENSE defines the types of regions to be packed or unpacked; possible inputs are "all" for all types of regions, "ins" for insulating regions only, "semi" for semiconductor regions and "none" to disable the option. FLIP.Y is a flag which will reverse the sign of the y-coordinate, i.e. flip the structure about the "y" axis; this parameter defaults to false, except when TRI or GEOMETRY is specified, as these grid generators work in a right-handed coordinate system. SCALE is a factor by which all the coordinates read from mesh files are multiplied by. With rectangular meshes only, DIAG.FLIP flips the diagonals about the center of the grid; the defaults is to place the diagonals in the same direction. SMOOTH.KEY is an integer which causes mesh smoothing; it digits are read in reverse order and decoded as follows:

  0    No action.
  1    Triangle smoothing, maintaining all region boundaries fixed.
  2    Triangle smoothing, maintaining only material boundaries.
  3    Node averaging.
  6    Add node to eliminate obtuse triangles on boundaries.

Options 1 and 3 are the most common; 2 is used only if a device has several regions of the same material and the border between the different regions is unimportant. IT.SMOOTH is the maximum number of iterations to be used during triangle smoothing. Only regions not specified in IGNORE (concatonated integer format) are smoothed; if no regions are specified by IGNORE, the default is to smooth only nonrectangular regions.

PRICE uses the obtuse correction suggested by Price which prohibits all negative coupling coefficients. With no smooth key (SMOOTH.K=0), the PRICE option is strongly recommended. OBT.CHECK forces the PADRE to assemble only on one side of an obtuse-acute edge, using the net coupling coefficient, rather than adding the components separately.

output

  OUTFile    =  filename
  ASCII.Out  =  logical   (default is true)

OUTFILE is the PADRE format output file to be read by a later run. If ASCII.OUT is set, OUTFILE will be written in ascii, otherwise it will be binary.

data structure

  NEclmax      =  integer
  COLor.order  =  character                       [Expert]
  Hetero       =  logical    (default is false)
  Jamin        =  real       (default is -1)      [Expert]
  FAke.edg     =  logical    (default is true)    [Expert]
  MID.Stat     =  logical    (default is true)
  MID.File     =  logical    (default is true)

NECLMAX defines a maximum number of elements per color (hence the maximum inner vector length) to be used in the matrix assembly; setting NECLMAX limits the size of the work space necessary which may be necessary to fit big grids on small machines. COLOR.ORDER specifies the colored ordering to be used on equations in the matrix; the choices are "greedy" (2D default) and "reverse" (3D default). HETERO forces the use of the internal heterostructure data format even if materials with different semiconductor band configurations are not given; this option is useful if nodes with multiple local values are desired. JAMIN decouples any nodes whose total coupling coefficient is less than the given value; this parameter can sometimes be useful in conjunction with rectangular grid sections (where the coupling coefficient across a diagonal is zero). FAKE.EDG includes all edges in the matrix arising from nonphysically connected element verticies; e.g. for 3D prisms, there are 9 real edges together with 6 "fake" edges that can be removed (note that removing these edges makes the matrix smaller but also affects the assembly of terms like mobility and impact ionization which require 3D fields; convergence rates may be degraded if these edges are not included). MID.STAT assembles the edge pointer array once and stores it statically for use throughout the program. With MID.STAT turned off, MID.FILE specifies whether the edge array should be dumped to a scratch file (read when needed) or reassembled during every assembly; by turning MID.STAT off, the program takes less memory, but the assembly cost is increased.

integrate

  DOp.int    =  logical  (default is false)  [Expert]
  1d.integ   =  logical  (default is false)  [Expert]
  DI.Degree  =  real     (default is 3)      [Expert]
  DI.Level   =  integer  (default is 0)      [Expert]

DOP.INT indicates that the doping density used in the Poisson equation should be integrated at each node; this option may result in greater accuracy by taking a slightly longer mesh set-up time. 1D.INTEG performs exact 1d integrations of analytic doping specifications. DI.DEGREE and DI.LEVEL control the general 2D doping integration process; DI.DEGREE is the order of the integration quadrature formula to be used, and DI.LEVEL is the maximum number of refinement steps used on each control volume to perform the integration.

Examples

Initiate a rectangular mesh and request it to be stored in mesh1.pg :

  MESH  RECTANGULAR NX=40 NY=17 OUTF=mesh1.pg

Read a geometry file, smooth the mesh, and store the file for a later run (ascii format). The smoothing does several averaging and flipping steps. The digits are read in reverse order, so that the flipping comes first, followed by node averaging, and so on.

  MESH  TRI INF=geom1 SMOOTH.K=13131 OUTF=mesh1.pg

Read a previously generated 2D mesh and add 10 uniformly spaced (over 5mm) grid planes in 3D. Output the new 3D mesh to another file name. If the input mesh already had grid planes (i.e. was 3D), an error would result.

  MESH  INF=mesh2d NZ=10 WIDTH=5 OUTF=mesh3d