def METHOD_NAME(self):
    if self.Surface == None:
        self.PrintError('Error: No input surface.')
    cleaner = vtk.vtkCleanPolyData()
    cleaner.SetInputData(self.Surface)
    cleaner.Update()
    triangleFilter = vtk.vtkTriangleFilter()
    triangleFilter.SetInputConnection(cleaner.GetOutputPort())
    triangleFilter.Update()
    self.Surface = triangleFilter.GetOutput()
    if self.ElementSizeMode == 'edgelength':
        self.TargetArea = 0.25 * 3.0**0.5 * self.TargetEdgeLength**2
    elif self.ElementSizeMode == 'edgelengtharray':
        calculator = vtk.vtkArrayCalculator()
        calculator.SetInputData(self.Surface)
        calculator.AddScalarArrayName(self.TargetEdgeLengthArrayName,0)
        calculator.SetFunction("%f^2 * 0.25 * sqrt(3) * %s^2" % (self.TargetEdgeLengthFactor,self.TargetEdgeLengthArrayName))
        calculator.SetResultArrayName(self.TargetAreaArrayName)
        calculator.Update()
        self.MaxArea = 0.25 * 3.0**0.5 * self.MaxEdgeLength**2
        self.MinArea = 0.25 * 3.0**0.5 * self.MinEdgeLength**2
        self.Surface = calculator.GetOutput()
    excludedIds = vtk.vtkIdList()
    if self.ExcludeEntityIds:
        for excludedId in self.ExcludeEntityIds:
            excludedIds.InsertNextId(excludedId)
    surfaceRemeshing = vtkvmtk.vtkvmtkPolyDataSurfaceRemeshing()
    surfaceRemeshing.SetInputData(self.Surface)
    if self.CellEntityIdsArrayName:
        surfaceRemeshing.SetCellEntityIdsArrayName(self.CellEntityIdsArrayName)
    if self.ElementSizeMode in ['area','edgelength']:
        surfaceRemeshing.SetElementSizeModeToTargetArea()
    elif self.ElementSizeMode in ['areaarray','edgelengtharray']:
        surfaceRemeshing.SetElementSizeModeToTargetAreaArray()
        surfaceRemeshing.SetTargetAreaArrayName(self.TargetAreaArrayName)
    else:
        self.PrintError('Error: unsupported ElementSizeMode.')
    surfaceRemeshing.SetTargetArea(self.TargetArea)
    surfaceRemeshing.SetTargetAreaFactor(self.TargetAreaFactor)
    surfaceRemeshing.SetTriangleSplitFactor(self.TriangleSplitFactor)
    surfaceRemeshing.SetMaxArea(self.MaxArea)
    surfaceRemeshing.SetMinArea(self.MinArea)
    surfaceRemeshing.SetNumberOfIterations(self.NumberOfIterations)
    surfaceRemeshing.SetNumberOfConnectivityOptimizationIterations(self.NumberOfConnectivityOptimizationIterations)
    surfaceRemeshing.SetRelaxation(self.Relaxation)
    surfaceRemeshing.SetMinAreaFactor(self.MinAreaFactor)
    surfaceRemeshing.SetAspectRatioThreshold(self.AspectRatioThreshold)
    surfaceRemeshing.SetInternalAngleTolerance(self.InternalAngleTolerance)
    surfaceRemeshing.SetNormalAngleTolerance(self.NormalAngleTolerance)
    surfaceRemeshing.SetCollapseAngleThreshold(self.CollapseAngleThreshold)
    surfaceRemeshing.SetPreserveBoundaryEdges(self.PreserveBoundaryEdges)
    surfaceRemeshing.SetExcludedEntityIds(excludedIds)
    surfaceRemeshing.Update()
    self.Surface = surfaceRemeshing.GetOutput()