The METHOD line

Syntax

  METhod    non-lin conv psuedo continue damping
            carriers time-dep misc

Description

The METHOD line sets parameters associated with miscellaneous numerical methods which at present consist primarily of those associated with nonlinear iteration and the transient discretization. There can be more than one METHOD line in a single simulation, so that parameters can be altered. The default values of the parameters are used on the first occurrence of the METHOD line; subsequent METHOD lines only alter those coefficients specified.

Parameters

non-lin conv
  INloops or ITlimit  =  integer      (default is 20)
  Outloops            =  integer      (default is 20)
  MIN.Inner           =  integer      (default is 1)
  MIN.Outer           =  integer      (default is 1)
  Gloops              =  integer      (default is 0)
  XNorm               =  logical      (default is true)
  RHsnorm             =  logical      (default is true)
  L2Norm              =  logical      (default is true)
  X.toler             =  real vector  (default is 1.0e-5)
  RHS.toler           =  real vector  (default is 1.0e-10)

The above parameters are used to determine the non-linear convergence of the solution methods. INLOOPS (or ITLIMIT) is the maximum number of allowed inner nonlinear loops, i.e. those performed on each group of PDEs specified on the SYSTEM line. OUTLOOPS specifies the maximum number of outer loops to be performed over all the PDE groups. MIN.INNER and MIN.OUTER force a minimum number of inner and outer iterations respectively regardless of the convergence state. GLOOPS optionally gives a maximum number of plug-in (Gummel) loops to be performed before beginning the specified nonlinear iteration. XNORM and RHSNORM specify the error norms - the nonlinear updates or residuals respectively - to be monitored. X.TOLERANCE and RHS.TOLERANCE specify the convergence tolerances on the XNORM and RHSNORM respectively for each PDE where the vector ordering corresponds to that implied by the digit codes defined for the SYSTEM line. For the update norm (the default), the Poisson and energy updates are measured in absolute units of kT/q, and carrier updates are measured relative to the local carrier concentration. With RHSNORM the norms are scaled such that an equivalent tolerance can be used for each PDE. L2NORM specifies that the RHSNORM is to be computed as an L2 rather than infinity norm.

psuedo continue

  TRAp       =  logical   (default is true)
  DGmin      =  real      (default is 3.0e-9)
  A.Trap     =  real      (default is 0.5)
  N.Trap     =  real      (default is 2)
  M.Trap     =  real      (default is 1)
  I.Trap     =  real      (default is 10)
  MAxneg     =  integer   (default is 10)
  DI.Trap    =  real      (default is 1.0e-5)
  DV.Trap    =  real      (default is 1.0e-5)
  OUT.Trap   =  logical   (default is true)
  IGN.Inner  =  logical   (default is false)
  STop       =  logical   (default is true)

TRAP specifies the initiation of a "psuedo-continuation" method which attempts to detect if a solution process starts to diverge. If it does, the electrode bias steps taken from the initial guess are reduced by the multiplicative factor A.TRAP (up to a maximum of I.TRAP cutbacks or until DI.TRAP or DV.TRAP are violated - see below). One criterion for determining divergence is that the maximum number of Newton iterations is exceeded with any group of PDEs. Also, PADRE can monitor internal quantities - e.g. the norm of the residuals (RHSNORM), the norm of the updates (XNORM) and the size of any damping coefficient - during the Newton iterations if it is clear that convergence is slow (this feature can be disabled by specifying IGN.INNER). Divergence tendencies are ignored if the residual norms are below a small threshold (to account for round-off error), DGMIN. N.TRAP and M.TRAP specify the number of Newton iterations to be ignored before checking and the consecutive number of occurences on which the norm must go up before the TRAP feature is enabled. A trap can also be initiated by reaching a maximum number of consecutive iterations which produce negative concentrations (MAXNEG). DI.TRAP and DV.TRAP specify the minimum size of the allowed bias steps after application of A.TRAP; DV.TRAP is given in volts, while DI.TRAP is defined in a relative sense. OUT.TRAP controls whether solution output files are written for any points computed due to a trap; the file names used are derived from the name given to the originally attempted point, with the string "Xn" (n is a digit, starting from 0) appended. If the TRAP feature is not used, setting the STOP parameter will force the simulator to suspend execution if convergence is not reached.

damping

  DAMPEd    =  character  (default is "single")  [Expert]   
  ITDamp    =  integer    (default is 1)         [Expert]   
  DElta     =  real       (default is 1.0e-6)    [Expert]   
  DAMPLoop  =  integer    (default is 10)        [Expert]   
  DFactor   =  real       (default is 10.0)      [Expert]   
  DPower    =  real       (default is 2)         [Expert]   
  DVLimit   =  real       (default is 10.0)      [Expert]   
  TRUncate  =  logical    (default is false)     [Expert]   
  VMargin   =  real       (default is 0.01*kT/q) [Expert]   

The DAMPED parameter indicates the use of a more sophisticated damping scheme proposed by Bank and Rose (this is the recommended option, particularly for large bias steps). The method is recommended for single PDE loops (DAMPED="single"), but it can also be performed for coupled groups of PDEs (DAMPED="all"). To turn this damping method off, use DAMPED="none". The Bank/Rose damping scheme is controlled by the parameters ITDAMP, DELTA, DAMPLOOP, DFACTOR and DPOWER which specify the iteration on which to start to damp, the reduction threshold, maximum number of damping loops, update reduction factor and update reduction power respectively. Other damping schemes that can be performed either separately or in conjunction with Bank/Rose include a simple limit on any potential updates (DVLIMIT) and truncation of all potentials so that they lie between the minimum and maximum possible voltages (TRUNCATE) with a margin on either end of VMARGIN.

carriers

  FIX.qf    =  logical  (default is false)   [Expert]   
  LINCont   =  logical  (default is true)    [Expert]   
  LINPois   =  logical  (default is false)   [Expert]   
  EXPCon    =  integer  (default is -1)      [Expert]   
  EXPNeg    =  integer  (default is -1)      [Expert]   
  LOgc      =  integer  (default is -1)      [Expert]   
  QF        =  integer  (default is -1)      [Expert]   
  IGN.Neg   =  logical  (default is false)   [Expert]   
  NEGcon    =  logical  (default is false)   [Expert]   
  NFact     =  real     (default is 0.1)     [Expert]   
  CMin      =  real     (default is 0)       [Expert]   
  NEG.Damp  =  real     (default is -1)      [Expert]   
  NEG.Tmin  =  real     (default is 0.01)    [Expert]   
  SLotboom  =  integer  (default is -1)      [Expert]   
  J0form    =  integer                       [Expert]   
  JWform    =  integer  (default is 1)       [Expert]   

FIX.QF fixes the quasi-Fermi potential of each non-solved for carrier to a single value, instead of picking a value based on local bias (see the P.BIAS and N.BIAS parameters on the SOLVE line). LINCONT specifies that the continuity equation be treated as a linear equation with respect to carrier concentrations, even though nonlinear models (or updates) might be used. LINPOIS treats the Poisson as a linear equation - i.e., the carrier densities are assumed to be independent of potential.

By default PADRE uses the carrier densities as variables. However EXPCON, EXPNEG, LOGC, QF and SLOTBOOM allows other types of carrier variables during the nonlinear iteration process. QF gives quasi-Fermi potentials, SLOTBOOM gives Slotboom variables (exponentials of quasi-Fermi potentials), while EXPCON, EXPNEG and LOGC both specify the logarithm of the densities. LOGC is implemented during the discretization, but EXPCON and EXPNEG are applied at the update step; further EXPNEG is only applied to those updates which are negative. Each of these parameters is an integer, and only one can be set at a time. A value less than zero indicates the type is off, a value of zero forces the type to be used only during the coupled (non-smoothing) phase of the solution process and a positive value sets the type on for all iterations. With EXPCON, LOGC and QF, it is strongly recommended that a finite number of smoothing loops always be performed (see GLOOPS above).

IGN.NEG, NEGCON, NFACT, CMIN, NEG.DAMP and NEG.TMIN control the treatment of negative concentrations when using the pure density formulation. IGN.NEG tells PADRE that a solution that looks as though it has converged, yet has negative values is treated as converged. NEG.CON forces PADRE to take some action during the Newton iteration if a negative concentration occurs. With NFACT <= 0, negative concentrations are corrected by using an update equivalent to that used by EXPCON and EXPNEG (log of densities). With NFACT > 0, the offending densities are obtained from their previous values by multiplying by NFACT (hence recommended to be less than 1). Further, any adjustment is forced to yield a concentration >= CMIN. With NEG.DAMP > 0, a damping coefficient is computed to make the updated concentration go down by a factor NEG.DAMP; the damping coefficient is limited to be greater than NEG.TMIN.

J0FORM controls the form of the Scharfetter-Gummel current discretization used; with J0FORM=1, a standard concentration based form is used while for J0FORM=2, a potentially more accurate, quasi-Fermi based implementation is employed. J0FORM defaults to 2 only when QF is activated. JWFORM controls the discretization of temperature along element edges in the expression for energy flux. With JWFORM=0, a simple average is used while for JWFORM=1, the temperature is integrated exactly assuming a linear form.

time-dep

  2ndorder     =  logical  (default is true)                       
  TR.print     =  logical  (default is false)                      
  TAuto        =  logical  (default is true)                       
  TOLR.time    =  real     (default is 1.0e-2)                
  TOLA.time    =  real     (default is 1.0e-10)               
  L2Tnorm      =  logical  (default is true)                       
  RMs.tnorm    =  logical  (default is true)          [Expert]   
  DT.min       =  real     (default is 1.0e-16)               
  T.LIMA       =  real     (default is 0.2)                    
  T.LIMB       =  real     (default is 2.0)                    
  EXTrapolate  =  logical  (default is false)                      

The above parameters control time integration. 2NDORDER specifies that the second-order TR-BDF2 discretization of Bank, et.al. be used as opposed to first-order backward differences. TR.PRINT forces the terminal characteristics (e.g. currents) to be printed after the TR segment of the composite step for TR-BDF2 as well as the BDF2 segment. TAUTO forces PADRE to select time-steps automatically from the local truncation error estimates. TOLR.TIME and TOLA.TIME are the relative and absolute local truncation error bounds to control the timestep. L2TNORM specifies that the error norms be L2 as opposed to infinity norms for calculating the time-steps; RMS.TNORM specifies whether the error norm is a roo-mean squared value or the ratio of error and solution norms. DT.MIN is the minimum time-step allowed in seconds, while T.LIMA and T.LIMB are the minimum time-step cutback and maximum time-step increase respectively. EXTRAPOLATE uses a second-order extrapolation to compute initial guesses for successive time-steps.

misc

  AUtonr        =  logical   (default is true)
  NRCriterion   =  real      (default is 0.1)
  NRLoop        =  real      (default is 2)
  PRint         =  logical   (default is false)
  ERr.estimate  =  logical   (default is false)
  LIN.Proj      =  logical   (default is false)
  LIN.Fail      =  logical   (default is false)
  OFfmu         =  logical   (default is true)     [Expert]
  MU.Tol        =  real      (default is 1.0e7)    [Expert]
  MU.Dir        =  real      (default is 1.0e20)   [Expert]
  MU.Neg        =  logical   (default is true)     [Expert]
  W.muoff       =  logical   (default is false)    [Expert]
  AC.method     =  character (default is "lu")

The AUTONR option initiates a Newton-Richardson algorithm which attempts to minimize the number of LU factorizations per bias point associated with direct linear solves. NRCRITERION is the ratio by which the norm from the previous Newton loop must go down in order to be attempt to use the same Jacobian (i.e., LU decomposition) for the current Newton loop; this test is performed on Newton loops numbered NRLOOP and above. If the same factorization is indeed used (indicated by a "*" character in the output file), yet the linear system residual does not converge in a given amount of loops (see LINALG input line), the Jacobian will be refactored anyway (indicated by a "%" character in the output file).

PRINT prints the terminal fluxes/currents after each continuity iteration; if this parameter is not set, the terminal fluxes/currents are only printed after the solution converges. ERR.ESTIMATE gives an estimate of the discretization error after each bias point using the error indicator described on the REGRID/ADAPT lines. The LIN.PROJ parameter specifies linear rather than exponential projections for the carrier concentrations during initial guess setup. LIN.FAIL forces a nonlinear convergence error if the tolerance on the linear solution cannot be met in the maximum number of interations (see LINALG line); with TRAP on, such an occurrence will lead to a smaller bias step. OFFMU directs PADRE to turn off field-dependent mobility derivatives in in the full Newton system under certain conditions, defined by MU.TOL, MU.DIR and MU.NEG. MU.TOL and MU.DIR are multiplicative factors to be used with RHS.TOL to determine when all the derivatives or just the directional derivatives are to be invoked. MU.NEG omits mobility derivatives any time the previous iteration resulted in updates that would have yielded negative concentrations. W.MUOFF specifies that checks should be made for carrier-temperature (rather than field dependencies for drift-diffusion) derivatives before including.

AC.METHOD specifies the method for solving the linear systems arising from ac small-signal analysis. For arbitrary frequencies, a full matrix solve is recommended ("lu"); for low frequencies (e.g., below ft), a substantial amount of cpu time can be saved by using a linear expansion ("lin") or relaxation ("sor").

Examples

The following specifies that damping for all isolated PDEs, and the Poisson error tolerance should be 1.0e-12. Note that because XNORM defaults to true, XNORM must be turned off to use the residual norm as a convergence criterion. If XNORM=FALSE was not specified, both the rhs and update norms would be printed, but the update norm would be used to determine convergence.

  METHOD  DAMPED=SINGLE RHS.TOL=1.e-12 RHSNORM XNORM=FALSE

The next example illustrates the trap feature. The first SOLVE line solves for the initial, zero bias case. On the second SOLVE line, we attempt to solve for V2=3, V3=5 volts. If such a large bias change caused divergence here, the bias step would be multiplied by ATRAP(0.5); i.e., an point at (V2=1.5, V3=2.5 volts) would be attempted before retrying V2=3, V3=5 volts again. If the intermediate point diverges as well, PADRE continues to reduce the step by 0.5 (next is V2=0.75, V3=1.25 volts) up to 4 times. The intermediate solutions will be saved in output files based on the name given to the actual bias point attempted; the string "X0" is appended to the first, and the last character is incremented similar to that for normal bias stepping. For example, if two intermediate steps to V2/V3=3/5 volts were required, they would be stored in "outaX0" and "outaX1" while V2/V3=3/5 volts would be stored in "outa".

  METHOD  TRAP ATRAP=0.5
  SOLVE   INIT
  SOLVE   V2=3 V3=5 OUTFILE=outa

In the next example, the second-order transient discretization is used, but the relative LTE criterion, 1.0e-3, is chosen smaller than the default. Newton-Richardson is also specified. Note that because the Jacobian is exact for the second part (BDF-2) of the composite time-step, there should be very few factorizations for the BDF-2 interval when AUTONR is specified.

  METHOD  TOLR.TIME=1E-3 AUTONR