1. You can use MeshFunctions
+ Mesh
:
ContourPlot[y[a][x] /. sol, {x, 0, 0.1}, {a, 0, 4},
MeshFunctions -> {y[a][x] /. sol /. {x -> #, a -> #2} &},
Mesh -> {{{1.15, Directive[Opacity[1], Thick, White]}}},
PlotLegends -> BarLegend[Automatic, LegendMarkerSize -> 180,
LegendFunction -> "Frame", LegendMargins -> 5,
LegendLabel -> "y[a][x]"], Frame -> True,
FrameLabel -> {{"a", ""}, {"x", ""}},
BaseStyle -> {FontWeight -> "Bold", FontSize -> 14}]

Alternatively, you can use Mesh -> {{1.15}}
and add the option MeshStyle -> Directive[White, Thick]
to get the same picture.
A slightly more convenient approach is to use ParametricNDSolveValue
instead of ParametricNDSolve
:
pndsv = ParametricNDSolveValue[{y'[t] == a y[t], y[0] == 1}, y, {t, 0, 10}, {a}];
ContourPlot[pndsv[a][x], {x, 0, 0.1}, {a, 0, 4},
MeshFunctions -> {pndsv[#2][#] &},
Mesh -> {{{1.15, Directive[Opacity[1], Thick, White]}}},
PlotLegends -> BarLegend[Automatic, LegendMarkerSize -> 180,
LegendFunction -> "Frame", LegendMargins -> 5,
LegendLabel -> "y[a][x]"], Frame -> True,
FrameLabel -> {{"a", ""}, {"x", ""}},
BaseStyle -> {FontWeight -> "Bold", FontSize -> 14}]
same picture
2. You can post-process ContourPlot
output to change the directives for the desired contour line:
cp = ContourPlot[y[a][x] /. sol, {x, 0, 0.1}, {a, 0, 4},
PlotLegends -> BarLegend[Automatic, LegendMarkerSize -> 180,
LegendFunction -> "Frame", LegendMargins -> 5,
LegendLabel -> "y[a][x]"], Frame -> True,
FrameLabel -> {{"a", ""}, {"x", ""}},
BaseStyle -> {FontWeight -> "Bold", FontSize -> 14}];
cp /. t : Tooltip[_, 1.15] :>
(t /. {Opacity[_] -> Opacity[1], GrayLevel[0] -> Directive[Thick, White]})
