Heat convection differential equations from 1952 - Mathematica "fails to converge"
The problem is with the default starting initial conditions used by the shooting method in NDSolve
. The shooting method is where FindRoot
is being used internally, so the OP's error message is a strong hint that this is the problem. Getting convergence in a nonlinear system can depend greatly on the starting conditions.
Having luckily solved the system for Pr = 0.72
, we can use its initial conditions as starting values for Pr = 0.6
. We hope that it will be suitably close. (If not, we could have tried solving for, say, Pr = 0.66
and edged our way bit by bit to 0.6
, hoping that the dependence on Pr
is continuous.)
Pr = 0.72;
pohl72 =
NDSolve[{f'''[η] + 3 f[η] f''[η] - 2 (f'[η])^2 +
T[η] == 0, T''[η] + 2 Pr f[η] T'[η] == 0,
f[0] == f'[0] == 0, f'[max] == 0, T[0] == 1, T[max] == 0},
{f, T}, {η, max}];
Pr = 0.6;
pohl = NDSolve[{f'''[η] + 3 f[η] f''[η] - 2 (f'[η])^2 + T[η] == 0,
T''[η] + 2 Pr f[η] T'[η] == 0, f[0] == f'[0] == 0,
f'[max] == 0, T[0] == 1, T[max] == 0},
{f, T}, {η, max},
Method -> {"Shooting",
"StartingInitialConditions" ->
Thread[{f[0], f'[0], f''[0], T[0], T'[0]} ==
({f[0], f'[0], f''[0], T[0], T'[0]} /. First@pohl72)]}]
Plot:
Plot[{Evaluate[f'[η] /. pohl]}, {η, 0, max},
PlotRange -> All,
PlotLabel ->
Style[Framed["Hydrodynamic development is depicted on this plot"],
10, Blue, Background -> Lighter[Yellow]], ImageSize -> Large,
BaseStyle -> {FontWeight -> "Bold", FontSize -> 18},
AxesLabel -> {"η", "f'[η]"}, PlotLegends -> "Expressions"]
The problem with your system of equation is that the "zero" far field solution is unstable, hence extremely sensitive to the initial conditions. Posing the problem as an initial value problem, with the "known" conditions from the successful solution:
max = 50;
Pr = .72;
a = 0.7172594734816521`
b = -0.4344414944896132`
pohl = NDSolve[{f'''[\[Eta]] + 3 f[\[Eta]] f''[\[Eta]] -
2 (f'[\[Eta]])^2 + T[\[Eta]] == 0,
T''[\[Eta]] + 2 Pr f[\[Eta]] T'[\[Eta]] == 0, f[0] == f'[0] == 0,
f''[0] == a, T[0] == 1, T'[0] == b}, {f, T}, {\[Eta], max}]
now change the T'
initial value by 1/2%:
b=.995b
and you see you get the essential solution but it eventually blows up:
so the shooting method needs an exceptionally good initial guess to work.