[bfdf16]: / Body / AAUHuman / Leg / EvaluateMomentArmsStudy.any

Download this file

143 lines (124 with data), 5.3 kB

AnyFolder Model = {
  // Model parts included in the moment arm study
  AnyFolder &PelvisRef = .....BodyModel.Trunk.SegmentsLumbar.PelvisSeg; 
  AnyFolder &ThoraxRef = .....BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
  AnyFolder &SegLumberRef = .....BodyModel.Trunk.SegmentsLumbar; 
  AnyFolder &JointsLumberRef = .....BodyModel.Trunk.JointsLumbar;   
  
  AnyFolder &LegSegSideRef = .SideHumanFolderRef.Leg.Seg; 
  AnyFolder &LegJntsRef =  .SideHumanFolderRef.Leg.Jnt;
  AnyFolder &LegMusRef = .SideHumanFolderRef.Leg.Mus;
  AnyFolder &SpineMusRef = .SideTrunkMusRef;
  
  AnyFixedRefFrame ground = {
    AnyRefNode node = { 
      ARel=..PelvisRef.Axes0;
      sRel=..PelvisRef.r0;
    };
  };
  
  AnyFolder Drivers = {
    AnyVar AngularVelocity = (..RangeOfMotion[1]-..RangeOfMotion[0])*pi/180;
    AnyKinMeasureOrg LegMeasure = {
      AnyKinMeasure& HipFlexion= ...SideHumanInterfaceRef.HipFlexion;
      AnyKinMeasure& HipAbduction= ...SideHumanInterfaceRef.HipAbduction;
      AnyKinMeasure& HipExternalRotation= ...SideHumanInterfaceRef.HipExternalRotation;
      AnyKinMeasure& KneeFlexion= ...SideHumanInterfaceRef.KneeFlexion;
      AnyKinMeasure& AnklePlantarFlexion= ...SideHumanInterfaceRef.AnklePlantarFlexion;
      AnyKinMeasure& AnkleEversion= ...SideHumanInterfaceRef.AnkleEversion;  
    };
    AnyStdJoint PelvisGround={
      AnyRefFrame &Ground = ..ground.node;
      AnyRefFrame &Sacrum= ..PelvisRef; 
    };
    AnyReacForce SpineReacForce = 
    {
      
      AnyKinMeasure& ref1 =  .......BodyModel.Interface.Trunk.Spine.L5Sacrum;
      AnyKinMeasure& ref2 =  .......BodyModel.Interface.Trunk.Spine.L4L5;
      AnyKinMeasure& ref3 =  .......BodyModel.Interface.Trunk.Spine.L3L4;
      AnyKinMeasure& ref4 =  .......BodyModel.Interface.Trunk.Spine.L2L3;
      AnyKinMeasure& ref5 =  .......BodyModel.Interface.Trunk.Spine.L1L2;
    };
    AnyKinEq ThoraxFix = 
    {
      AnyKinMeasure& PelvisThoraxExtension= .......BodyModel.Interface.Trunk.PelvisThoraxExtension;
      AnyKinMeasure& PelvisThoraxLateralBending= .......BodyModel.Interface.Trunk.PelvisThoraxLateralBending;
      AnyKinMeasure& PelvisThoraxRotation= .......BodyModel.Interface.Trunk.PelvisThoraxRotation;
      Reaction.Type = repmat(nDim, On);
    };         
    
    
  };// Drivers
};// Model

 
AnyKinStudy Study = {
  Gravity = {0,0,0};
  #ifdef EVALUATE_MOMENT_ARMS_NSTEP
  nStep = EVALUATE_MOMENT_ARMS_NSTEP;
  #else
  nStep = 40;
  #endif 
  
  
  AnyFolder &Model = .Model;
    AnyFolder MuscleStrengthCalculations = {
    AnyFolder Abscissa = { 
      AnyVar JointAngle =  not(not(..Model.Drivers.LegDriver.DriverVel))*..Model.Drivers.LegMeasure.Pos'*180/pi  ;    
    };
#define _CODE_MACRO_(name) AnyVar name = ( .Model.LegMusRef.name.Strength);    
        #include "legmuscles_for_output.any"
#undef _CODE_MACRO_
  };
    
  AnyFolder PennationAngleCalculations = {
    AnyFolder Abscissa = { 
      AnyVar JointAngle =  not(not(..Model.Drivers.LegDriver.DriverVel))*..Model.Drivers.LegMeasure.Pos'*180/pi  ;    
    };
#define _CODE_MACRO_(name) AnyVar name = ( .Model.LegMusRef.name.PennationAngle * 180 / pi);    
        #include "legmuscles_for_output.any"
#undef _CODE_MACRO_
  };
  
      
  AnyFolder MuscleReferences = {
#define _CODE_MACRO_(name) AnyMuscle& name = .Model.LegMusRef.name;    
       #include "legmuscles_for_output.any"
#undef _CODE_MACRO_
  };
  
  AnyFolder MomentArmCalculations = {
    AnyFolder Abscissa = { 
      AnyVar JointAngle =  not(not(..Model.Drivers.LegDriver.DriverVel))*..Model.Drivers.LegMeasure.Pos'*180/pi  ;    
    };
#define _CODE_MACRO_(name) AnyVar name = ( -1*.Model.LegMusRef.name.LmtDot/.Model.Drivers.AngularVelocity);    
        #include "legmuscles_for_output.any"
#undef _CODE_MACRO_
  };
};


#if (ANYBODY_V1 >= 6) & (ANYBODY_V2 >= 1)
AnyFolder ModelViews = { AnyFolder Views =  {}; };
#else
AnyProject ModelViews = {};
#endif

ModelViews = {
  AnyDrawGroup Selection = {
    Objects = arrcat(
      ObjSearchRecursive(CompleteNameOf(&..Model.SegLumberRef ), "*", "AnyDrawObject"), 
      ObjSearchRecursive(CompleteNameOf(&..Model.PelvisRef ), "*", "AnyDrawObject"), 
      ObjSearchRecursive(CompleteNameOf(&..Model.LegSegSideRef ), "*", "AnyDrawObject"),
      ObjSearchRecursive(CompleteNameOf(&..Model.LegMusRef ), "*", "AnyDrawObject"),
      ObjSearchRecursive(CompleteNameOf(&..Model.SpineMusRef )+".PsoasMajor", "*", "AnyDrawObject")
    );
  };
  Views = {
    AnyProjectModelViewDefinition SelectedView = {
      DrawGroupSequence = {&..Selection};
      Reset = {On};
    };
  };
};

AnyOperationSequence Run = 
{
    AnyOperationMacro SetView = 
    {
      MacroStr = { "classoperation " + CompleteNameOf(&..ModelViews.Views.SelectedView) + strquote("Set View") };
    };
    AnyOperation &Study = .Study.Kinematics;
//    #ifdef ANYBODY_PATH_OUTPUT
//    AnyOperationMacro Save = 
//    {
//      MacroStr = {
//           "classoperation " + CompleteNameOf(&.Study.Output) + strquote("Save data") 
//           + " --type=" + strquote("Deep") +" --file=" + strquote(
//           ANYBODY_PATH_OUTPUT + .OutputFileName + ".anydata.h5")
//      };
//    #endif
};