[bfdf16]: / Tools / AnyMocap / InverseDynamicSettings.any

Download this file

58 lines (40 with data), 1.9 kB

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});  
 
};