def METHOD_NAME(self, cell):
    """Generate the mesh.
    This method is abstract in the base class and must be implemented
    in our local App class.
    """
    # Set discretization size with geometric progression from distance to the fault.
    # We turn off the default sizing methods.
    gmsh.option.set_number("Mesh.MeshSizeFromPoints", 0)
    gmsh.option.set_number("Mesh.MeshSizeFromCurvature", 0)
    gmsh.option.set_number("Mesh.MeshSizeExtendFromBoundary", 0)
    # First, we setup a field `field_distance` with the distance from the fault.
    field_distance = gmsh.model.mesh.field.add("Distance")
    gmsh.model.mesh.field.setNumbers(field_distance, "CurvesList", [self.c_fault])
    # Second, we setup a field `field_size`, which is the mathematical expression
    # for the cell size as a function of the cell size on the fault, the distance from
    # the fault (as given by `field_size`, and the bias factor.
    # The `GenerateMesh` class includes a special function `get_math_progression` 
    # for creating the string with the mathematical function.
    field_size = gmsh.model.mesh.field.add("MathEval")
    math_exp = GenerateMesh.get_math_progression(field_distance, min_dx=4.0e+3, bias=1.05)
    gmsh.model.mesh.field.setString(field_size, "F", math_exp)
    # Finally, we use the field `field_size` for the cell size of the mesh.
    gmsh.model.mesh.field.setAsBackgroundMesh(field_size)
    if cell == "quad":
        # Generate a tri mesh and then recombine cells to form quadrilaterals.
        # We use the Frontal-Delaunay for Quads algorithm.
        gmsh.option.setNumber("Mesh.Algorithm", 8)
        gmsh.model.mesh.generate(2)
        gmsh.model.mesh.recombine()
    else:
        gmsh.model.mesh.generate(2)
    gmsh.model.mesh.optimize("Laplace2D")