--- a
+++ b/Tools/AnyMocap/InverseDynamicSettings.any
@@ -0,0 +1,58 @@
+Main.Studies.InverseDynamicStudy = {
+  
+ InitialConditions.KinematicTol ??= 1e-2;
+ InitialConditions.SolverType ??= KinSolOverDeterminate;
+ InitialConditions.UseStartGuessOnOff ??= On;
+ 
+ Kinematics.UseStartGuessOnOff ??= Off;
+ Kinematics.KinematicTol ??= 1e-5; 
+ 
+ Kinematics.OPERATION_DISPLAY_PRIORITY(PriorityLow);
+ 
+ #if MOCAP_USE_GRF_PREDICTION == ON
+  // GRF prediction needs UpperBound = Off, because this 
+  // prevents solver change when residual "muscles" gets overloaded.
+  InverseDynamics.Criterion.UpperBoundOnOff = Off; 
+ #endif
+ 
+
+InitialConditions.PreOperation = 
+{
+  AnyOperation &SetView = Main.ModelSetup.Views.SetViewMacros.InverseDynamicView;
+};
+ 
+
+// Add the Analysis to the Main.RunAnalysis sequence
+Main.RunAnalysis.InverseDynamics.SubOperations = 
+{
+  #if (BM_LEG_MUSCLES_RIGHT == _MUSCLES_3E_HILL_) | (BM_LEG_MUSCLES_LEFT == _MUSCLES_3E_HILL_) | (BM_ARM_MUSCLES_RIGHT == _MUSCLES_3E_HILL_) | (BM_ARM_MUSCLES_LEFT == _MUSCLES_3E_HILL_) 
+    AnyOperationSequence &MuscleCalibration = Main.HumanModel.Calibration.CalibrationSequence;
+  #endif      
+  
+  AnyOperation &RunInverseDynamics = ....InverseDynamics;
+};
+
+
+ #ifndef N_STEP
+ #define N_STEP Main.ModelSetup.TrialSpecificData.nStep
+ #endif
+ 
+ #ifndef T_END
+ #define T_END Main.ModelSetup.TrialSpecificData.tEnd
+ #endif
+ 
+ #ifndef T_START
+ #define T_START Main.ModelSetup.TrialSpecificData.tStart
+ #endif
+ 
+ AnyVar tFrame = iffun(gtfun(Main.ModelSetup.TrialSpecificData.nStep, 1), (T_END-T_START)/max({Main.ModelSetup.TrialSpecificData.nStep-1,1}), 0.01);
+ 
+ 
+ Kinematics.ApproxVelAccPerturb = min({1.0/C3DData.Header.VideoFrameRate, tFrame});
+ InitialConditions.ApproxVelAccPerturb = Kinematics.ApproxVelAccPerturb ;
+ 
+ tStart = min({T_START+3*tFrame, T_END}); 
+ tEnd = max({T_END-3*tFrame, tStart});
+ nStep= max({N_STEP-6, 1});  
+ 
+};
\ No newline at end of file