next up previous contents
Next: D1.1 Equations and Quantities Up: D. Iteration Schemes in Previous: D. Iteration Schemes in

D1. Iteration Blocks

Iteration blocks are implemented as IPL sections. They contain a predefined set of keywords to describe which equation system is to be used and how it is to be solved. All iteration blocks are inherited from a base iteration block which is defined as follows

GeneralBlock : ~IterateConfig, ~Extern
{
   models           = "";
   ignoreModels     = "";
   quantities       = "";
   ignoreQuantities = "";
   offDevices       = no;
   enter            = yes;
   failure          = iterationCount >= if (firstStep,
                                               iterationLimit,
                                               iterationLimitStep);
   while            = updateNorm > finalNorm && rhsNorm > rhsFinalNorm;
   ignoreDer        = "";
}
The base iteration block defines the default keywords for all iteration blocks. The iteration blocks are used to define the iteration sequence and are inherited from both the IterateConfig section and the Extern section to have simple access to the main external keywords. The IterateConfig section is defined as
IterateConfigDefaults
{
  maxDamp            = 1.0;
  minDamp            = 0.008;
  iterationLimit     = 500;
  iterationLimitStep = 200;
  finalNorm          = 1e-2;
  rhsFinalNorm       = 1e-10;
  transform          = yes;
  dampScheme         = "potential";
  ignoreDerNorm      = 1;
  delta              = 0.1;
}

IterateConfig : IterateConfigDefaults;
This somehow tricky inheritance allows to break up the predefined inheritance chain and to customize the default settings for personal needs. In IPL the ancestors of a section can be changed as long as no keywords have been changed. A private version of IterateConfig can be created to substitute the default inheritance.
MyIterateConfig : IterateConfigDefaults
{
  iterationLimit     = 100;
  iterationLimitStep = 50;
  dampScheme         = "bank";
}

IterateConfig : MyIterateConfig;
The iteration blocks are also used to define the iteration sequence and are all in one or the other way inherited from GeneralBlock. The most important blocks are Loop, DDBlock, and HDBlock which in turn are used to build loops, DD, or HD iteration schemes.

Loop : GeneralBlock;

DDBlock : GeneralBlock
{
   models     = ~Eas.DD.TransOrDC;
   quantities = ~Quantities.DD;
}

HDBlock : GeneralBlock
{
   models     = ~Eas.HD.TransOrDC;
   quantities = ~Quantities.HD;
   ignoreDer  = if (updateNorm > ignoreDerNorm, "EleDEtm,HolDHtm", "");
}

Each iteration block can contain other arbitrarily nested sub-blocks. For each block the equations to use are defined which will be solved by the simulator using a Newton iteration scheme until a block-specific termination criterion is satisfied. The criteria can be arbitrary expressions containing norms, iteration counters, time step information, and much more. After each iteration the sub-blocks are entered recursively. Blocks can be empty to form a linear sequence of sub-blocks only. The following sections give more details on what can be defined for each iteration block.




next up previous contents
Next: D1.1 Equations and Quantities Up: D. Iteration Schemes in Previous: D. Iteration Schemes in
Tibor Grasser
1999-05-31