GeneralBlock : ~IterateConfig, ~Extern
{
models = "";
ignoreModels = "";
quantities = "";
ignoreQuantities = "";
offDevices = no;
enter = yes;
failure = iterationCount >= if (firstStep,
iterationLimit,
iterationLimitStep);
while = updateNorm > finalNorm && rhsNorm > rhsFinalNorm;
ignoreDer = "";
}
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;
MyIterateConfig : IterateConfigDefaults
{
iterationLimit = 100;
iterationLimitStep = 50;
dampScheme = "bank";
}
IterateConfig : MyIterateConfig;
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.