In the default case, FlexPDE assumes that all variables are continuous across internal material interfaces. This is a consequence of the positioning of mesh nodes along the interface which are shared by the cells on both sides of the interface.
FlexPDE supports the option of making variables discontinuous at material interfaces (see the "Discontinuous Variables" in the User Guide for tutorial information). This capability can be used to model such things as contact resistance, or to completely decouple the variables in adjacent regions.
The key words in employing this facility are CONTACT and JUMP. The conceptual model is that of contact resistance, where the difference in voltage V across the interface (the JUMP) is given by
V2 - V1 = R*current
In the general case, the role of "current" is played by the generalized flux, or Natural boundary condition. (See the User Guide for further discussion of Natural Boundary Conditions.) The CONTACT boundary condition is a special form of NATURAL, which defines a flux but also specifies that FlexPDE should model a double-valued boundary.
So the method of specifying a discontinuity is
CONTACT(V) = (1/R)*JUMP(V)
CONTACT(V), like NATURAL(V), means the outward normal component of the generalized flux as seen from any cell. So from any cell, the meaning of JUMP(V) is the difference between the interior and exterior values of V at a point on the boundary. Two cells sharing a boundary will then see JUMP values and outward normal fluxes of opposite sign. "Flux" is automatically conserved, since the same numeric value is used for the flux in both cells.
Specifying a CONTACT boundary condition at an internal boundary causes duplicate mesh nodes to be generated along the boundary, and to be coupled according to the JUMP boundary condition statement.
Specifying a very small (1/R) value effectively decouples the variable across the interface.