We also can solve this problem with linear FEM, using iterative false transient algorithm discussed here, here, and here. We use transformed system of equations with adding iteration parameter dt=1/5
and linearized as follows
Clear["Global`*"]
Needs["NDSolve`FEM`"]
xmesh = ToElementMesh[ImplicitRegion[0 <= x <= 1, {x}],
MaxCellMeasure -> 2 10^-3]
eqn = {-(a[x] - A[i - 1][x])/dt -
808 a[x] P[i - 1][x] (1 - Tanh[20 (-1 + 4 x)]) +
2/x (80 Sech[20 (-1 + 4 x)]^2 a[x] +
Derivative[1][a][x]) + (80 Sech[20 (-1 + 4 x)]^2 Derivative[
1][a][x] +
A1[i - 1][x] a'[x]/A[i - 1][x]) + (-12800 Sech[
20 (-1 + 4 x)]^2 Tanh[20 (-1 + 4 x)] a[x] -
A1[i - 1][x] a'[x]/A[i - 1][x] + (a^\[Prime]\[Prime])[x]) ==
NeumannValue[0, x == 0], -(b[x] - B[i - 1][x])/dt +
800 P[i - 1][x] a[x] (1 - Tanh[20 (-1 + 4 x)]) +
2/x (80 Sech[20 (-1 + 4 x)]^2 b[x] +
Derivative[1][b][x]) + (80 Sech[20 (-1 + 4 x)]^2 Derivative[1][
b][x] + B1[i - 1][x] b'[x]/B[i - 1][x]) + (-12800 Sech[
20 (-1 + 4 x)]^2 Tanh[20 (-1 + 4 x)] b[x] -
B1[i - 1][x] b'[x]/B[i - 1][x] + (b^\[Prime]\[Prime])[x]) ==
NeumannValue[0, x == 0], (phi[x] - P[i - 1][x])/dt +
4/5 P[i - 1][x] a[
x] (1 - Tanh[20 (-1 + 4 x)]) + (-2/x Derivative[1][phi][x] - (
phi^\[Prime]\[Prime])[x])/1000 == NeumannValue[0, x == 0]}; bc =
DirichletCondition[{a[x] == 1, b[x] == 0, phi[x] == 1}, x == 1];
Initial guess is very important in this case, but we use the simple one
A[0][x_] := 1; B[0][x_] = 1/100; P[0][x_] = 1; A1[0][x_] := 0;
B1[0][x_] = 0; P1[0][x_] := 0;
L0 = 4; dt =
1/5; nn = 231; Do[{A[i], B[i], P[i], A1[i], B1[i], P1[i]} =
NDSolveValue[{eqn, bc}, {a, b, phi, a', b', phi'},
Element[{x}, xmesh]]; , {i, 1, nn}]
Visualization
Table[Plot[Evaluate[{A[i][x/L0], B[i][x/L0], P[i][x/L0]}], {x, 0, L0},
PlotLegends -> {"a", "b", "phi"}, PlotRange -> All,
PlotLabel -> i], {i, 228, 231}]
Also FEM solution looks similar to above computed with wavelets and computed with pdetoae
at xzczd post, the algorithm not stable and solution diverges at nn>231
.