At first glance, the task is very simple. Why do not you use NDSolve[] with Method -> {"FiniteElement", "InterpolationOrder" -> {}, "MeshOptions" -> {"MaxCellMeasure" -> 0.0005}} , which automatically generates a mesh in 2D?
NDSolve[]
Method -> {"FiniteElement", "InterpolationOrder" -> {}, "MeshOptions" -> {"MaxCellMeasure" -> 0.0005}}