Hi,
Try to use "EventLocator" method for NDSolve (or WhenEvent[] option).
Here is an example with "EventLocator" (for some reason values at 0. are not catched):
data = Flatten[
Reap[
NDSolve[
{
x''[s]+x[s]==0,
x[0]==0,
x'[0]==1
},
{},
{s,0.,1.},
Method->{
"EventLocator",
"Event"-> Thread[s-Table[x,{x,0.,1.,0.2}]],
"EventAction" :> Sow[{s,x[s],x'[s]}],
"Direction" -> 1
}
]
]
]
Show[
Plot[Sin[s],{s,0,1},Frame->True,Axes->False],
ListPlot[Partition[data,3][[;;,1;;2]],PlotStyle->{Red,PointSize[Large]}]
]
Not sure if it is possible with NDSolve components, you can try to set EventLocator method for NDSolve`ProcessEquations with SetOptions[]