1 0 GfsAdvection GfsBox GfsGEdge {} {
    Time { end = 5 }
    Refine 8

    # Add tracer T, using a VOF advection scheme.
    # The default scheme is a Van-Leer limited, second-order upwind scheme.
    VariableTracerVOF T

    # Curvature K of the interface defined by T
    VariableCurvature K T

    InitFraction T (ellipse (0, -.236338, 0.2, 0.2))

    # Maintain U and V with the vortical shear flow field defined by
    # its streamfunction
    VariableStreamFunction {
	# make sure that the entire field is reinitialised at t = 2.5
	step = 2.5 
    } Psi (t < 2.5 ? 1. : -1.)*sin((x + 0.5)*M_PI)*sin((y + 0.5)*M_PI)/M_PI
    
    # Adapt the mesh dynamically using a custom cost function returning
    # the cell size times the local curvature (only for cells cut by
    # the interface).
    # The maximum cost is set to 0.1 i.e. the radius of curvature must be
    # resolved with at least 10 cells.
    AdaptFunction { istep = 1 } { cmax = 0.1 maxlevel = 8 } {
        return T > 0. && T < 1. ? ftt_cell_size (cell)*fabs (K) : 0.;
    }

    OutputSimulation { start = 2.5 } stdout
    EventScript { start = 2.5 } { echo "Save t-2.5.eps { format = EPS line_width = 0.5 }" }
    
    # Add a new variable 
    Variable Tref

    # Initialize Tref with the initial shape
    InitFraction { start = end } Tref (ellipse (0, -.236338, 0.2, 0.2))

    # Output the norms of the difference between T and Tref, stores that into
    # new variable DT
    OutputErrorNorm { start = end } norms { v = T } {
        s = Tref v = DT
    }

    OutputPPM { start = end } { convert ppm:- dt-5.eps } { v = DT }

    OutputScalarSum { istep = 1 } { awk '{ print $3,$5-0.8743665 }' > t } { v = T }
}
GfsBox {}