A wave op is normally just looking up a function in one or more dimensions, that makes it stateless and only needed when visible.
That means you shouldn’t need any simulation like qualities to it, nor forcing evaluation.
If you have input parameters to control the shape of the wave(s) then it’s all you need. Just keyframe one of those if evaluation gets stubborn (in such a case it really shouldn’t be though).
“live” if it’s a scop it will always be. What you want is probably time changing.
If you want the operator to be animated over time then just expose the wave’s time input, and when you need it to change over time put an expression on it with current frame for input.
From a design stand-point exposing the time input is by far the most elegant way to deal with it, because that way you not only can link it to scene time with a 2 letters expression, but you can also eventually decide to drive otherwise.
As for it becoming your own wave function, it should be perfectly possible.
Dynamic creation of scops figuring out whether it’s connecting to a point cloud or to a parameter can even apply the scop with different functionalities inside, but in general what you want to do can be Ndimensional, it’s just a matter of changing the number of times (and where) you feed and look up the function based on whether you output to a parameter or to 3Dspace.
If you’re using python, and feel adventurous, you can even do that in one piece of versatile code through Python’s introspection, by having the update call fetch arguments by introspection you can determine how many you have and how you want to work consequently.