You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The apply_forward() and apply_reverse() methods take no arguments. This should probably be changed, and arguments be passed on to the operator.apply() methods. Before this is implemented, we need to discuss the desired behaviour. Complications:
apply_reverse() calls fwd_operator.apply() and rev_operator.apply() internally, several times. Do we need to distinguish which arguments to apply_reverse() are passed to which operator?
The operator apply routines take t_start and t_end as arguments. These are now set internally by pyrevolve. If a user mis-uses pyrevolve and provides such arguments to apply_reverse() or apply_forward(), we can actively discard the user-provided arguments, throw an error, or blindly forward the user's values and potentially compute wrong results.
A user may try to pass symbols to apply_reverse() that contain data that was modified after running apply_forward(), perhaps in a misguided attempt to compute several adjoint result sets. This would again silently produce wrong results, as the new data provided will be inconsistent with the data inside the checkpoint storage. Do we want to sanity-check things like this, or assume that the user is always right?
The easiest way out (for pyrevolve) is of course to just pass everything without checks, and crash and burn if the user is stupid.
The text was updated successfully, but these errors were encountered:
The
apply_forward()
andapply_reverse()
methods take no arguments. This should probably be changed, and arguments be passed on to theoperator.apply()
methods. Before this is implemented, we need to discuss the desired behaviour. Complications:apply_reverse()
callsfwd_operator.apply()
andrev_operator.apply()
internally, several times. Do we need to distinguish which arguments toapply_reverse()
are passed to which operator?t_start
andt_end
as arguments. These are now set internally by pyrevolve. If a user mis-uses pyrevolve and provides such arguments toapply_reverse()
orapply_forward()
, we can actively discard the user-provided arguments, throw an error, or blindly forward the user's values and potentially compute wrong results.apply_reverse()
that contain data that was modified after runningapply_forward()
, perhaps in a misguided attempt to compute several adjoint result sets. This would again silently produce wrong results, as the new data provided will be inconsistent with the data inside the checkpoint storage. Do we want to sanity-check things like this, or assume that the user is always right?The easiest way out (for pyrevolve) is of course to just pass everything without checks, and crash and burn if the user is stupid.
The text was updated successfully, but these errors were encountered: