Block { while = updateNorm > finalNorm && rhsNorm > rhsFinalNorm; }Another possibility is to terminate a block when a maximum block iteration counter is exceeded as is the case, e.g., for the Gummel scheme [27] where each iteration block is solved only once.

Block { while = iterationCount < 1; }

The keywords `updateNorm` and `rhsNorm` are inherited from the
`Extern` section, while `finalNorm` and `rhsFinalNorm`
stem from `IterateConfig`. As `updateNorm` and
`rhsNorm` contain *all* quantities of the solution vector their use
might be problematic. Although the quantities are scaled to be approximately
of the same order the range of possible values is still different. It might therefore
be useful for special applications to refine the termination criterion by
using only parts of the solution vector. These parts can be accessed through
one of the following functions:

`updateNorm2(``quantityList``)`gives the*E*_{2}norm of the updates.`updateNormMax(``quantityList``)`gives the*E*_{}norm of the updates.`rhsNorm2(``quantityList``)`gives the*E*_{2}norm of the right-hand-side of the respective part of the equation system.`rhsNormMax(``quantityList``)`gives the*E*_{}norm of the right-hand-side of the respective part of the equation system.

DD_Gummel { Ele : ~Iterate.Blocks.DDBlock { ignoreQuantities = "Potential,*Hole*"; while = iterationCount < 1; } Hol : Ele { ignoreQuantities = "Potential,*Electron*"; } Pot : Ele { ignoreQuantities = "*Electron*,*Hole*"; } while = updateNorm2("*", block = "Ele") + updateNorm2("*", block = "Hol") + updateNorm2("*", block = "Pot") > finalNorm; }In the first block (

The other blocks solve the hole continuity equation and Poissons equation and for the termination criterion a simple algebraic sum of the block-norms is used.

1999-05-31