Here is part of a different approach. This leads in essence to a domain decomposition. One can use the Options "PartialSystemMatricesAssembly" of DiscretizePDE. This example is from the documentation.
Needs["NDSolve`FEM`"]
nr = ToNumericalRegion[Rectangle[{0, 0}, {1, 1/2}]];
vd = NDSolve`VariableData[{"DependentVariables",
"Space"} -> {{u}, {x, y}}];
sd = NDSolve`SolutionData[{"Space"} -> {nr}];
cdata = InitializePDECoefficients[vd, sd,
"DiffusionCoefficients" -> {{-IdentityMatrix[2]}}];
mdata2 = InitializePDEMethodData[vd, sd,
Method -> {"FiniteElement",
"MeshOptions" -> {"MeshElementBlocks" -> 5}}];
mdata2["ElementMesh"]
Partially discretize a PDE with blocks numbers 1, 2, and 5 :
dpde1 =
DiscretizePDE[cdata, mdata2, sd,
"PartialSystemMatricesAssembly" -> {1, 2, 5}]
Extract and visualize the assembled stiffness matrix :
MatrixPlot[dpde1["StiffnessMatrix"]]

Partially discretize a PDE with blocks numbers 3 and 4 :
dpde2 = DiscretizePDE[cdata, mdata2, sd,
"PartialSystemMatricesAssembly" -> {3, 4}]
Extract and visualize the assembled stiffness matrix :
MatrixPlot[dpde2["StiffnessMatrix"]]

Discretize a PDE over all mesh elements:
dpde = DiscretizePDE[cdata, mdata2, sd]
Verify that the sum of the partially assembled system matrices is \
equal to the system matrices assembled as a whole :
dpde["StiffnessMatrix"] ==
dpde1["StiffnessMatrix"] + dpde2["StiffnessMatrix"]
True
Now, in a next step one would solve over the partially assembled system matrices and then construct the solution from that. I don't have code for that. Here is an example from the MATLAB PDE toolbox that does something like this, perhaps that's useful.