151 lines (124 with data), 5.4 kB
AnyFolder Model = {
// Model parts included in the moment arm study
AnyFolder &ThoraxRef = .....BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
AnyFolder &SegLumberRef = .....BodyModel.Trunk.SegmentsLumbar;
AnyFolder &JointsLumberRef = .....BodyModel.Trunk.JointsLumbar;
AnyFolder &LegSegSideRef = .SideBodyModelRef.Leg.Seg; //This is a reference to the folder which holds the human part of the model
AnyFolder &LegJntsRef = .SideBodyModelRef.Leg.Jnt;
AnyFolder &MusRef = .SideBodyModelRef.Leg.EvaluateJointStrengthMusRef ;
// AnyFolder &LegMusRef = .SideBodyModelRef.Leg.Mus;
// AnyFolder &SpineMusRef = .SideTrunkMusRef;
AnyFixedRefFrame ground =
{
AnyRefNode node =
{
ARel=..SegLumberRef.PelvisSeg.Axes0;
sRel=..SegLumberRef.PelvisSeg.r0;
};
};
AnyFolder Drivers = {
AnyVar AngularVelocity = (..RangeOfMotion[1]-..RangeOfMotion[0])*pi/180;
AnyKinMeasureOrg LegMeasure = {
AnyKinMeasure& HipFlexion= ...SideBodyInterfaceRef.HipFlexion;
AnyKinMeasure& HipAbduction= ...SideBodyInterfaceRef.HipAbduction;
AnyKinMeasure& HipExternalRotation= ...SideBodyInterfaceRef.HipExternalRotation;
AnyKinMeasure& KneeFlexion= ...SideBodyInterfaceRef.KneeFlexion;
AnyKinMeasure& AnklePlantarFlexion= ...SideBodyInterfaceRef.AnklePlantarFlexion;
AnyKinMeasure& SubTalarEversion= ...SideBodyInterfaceRef.SubTalarEversion;
};
AnyStdJoint PelvisGround={
AnyRefFrame &Ground = ..ground.node;
AnyRefFrame &Pelvis= ..SegLumberRef.PelvisSeg;
};
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
AnyForce JointLoad = {
AnyKinMeasure& ref = .Drivers.LegMeasure;
AnyInt Sign = -round(.Drivers.AngularVelocity/abs(.Drivers.AngularVelocity));
F = 50*Sign*not(not(.Drivers.LegDriver.DriverVel));
};
};
AnyBodyStudy Study = {
Gravity = {0,0,0};
tStart = 0;
tEnd = 1000;
#ifdef EVALUATE_JOINT_STRENGTH_NSTEP
nStep = EVALUATE_JOINT_STRENGTH_NSTEP;
#else
nStep = 40;
#endif
Kinematics.PosAnalysisOnlyOnOff = On;
InitialConditions.PosAnalysisOnlyOnOff = On;
InverseDynamics.Criterion.Type = MR_MinMaxStrict;
AnyFolder &Model = .Model;
AnyFolder JointStrength = {
AnyFolder Abscissa ={
AnyVar JointAngle = not(not(..Model.Drivers.LegDriver.DriverVel))*..Model.Drivers.LegMeasure.Pos'*180/pi;
};
AnyVar JointStrength = max(abs(.Model.JointLoad.F))/(.MaxMuscleActivity+0.00000001);
//AnyVar PsoasMajorT12I = -1*.Model.SpineMusRef.PsoasMajor.PMT12I_TM.LmtDot/.Model.Drivers.AngularVelocity;
};
#if ((BM_LEG_MUSCLES_RIGHT != OFF) & (BM_LEG_MUSCLES_LEFT != OFF) & (BM_TRUNK_LUMBAR_MUSCLES != OFF))
AnyFolder MuscleEffectiveStrengthCalculations = {
AnyFolder Abscissa = {
AnyVar JointAngle = not(not(..Model.Drivers.LegDriver.DriverVel))*..Model.Drivers.LegMeasure.Pos'*180/pi ;
};
#define _CODE_MACRO_(name) AnyVar name = ( .Model.MusRef.LegMuscles.name.Strength * .Model.MusRef.LegMuscles.name.Activity);
#include "legmuscles_for_output.any"
#undef _CODE_MACRO_
};
#endif
};
#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.LegSegSideRef ), "*", "AnyDrawObject"),
ObjSearchRecursive(CompleteNameOf(&..Model.MusRef.LegMuscles ), "*", "AnyDrawMuscle"),
ObjSearchRecursive(CompleteNameOf(&..Model.MusRef.SpineMuscles ), "*", "AnyDrawMuscle"),
ObjSearchRecursive(CompleteNameOf(&..Model.MusRef), "*", "AnyDrawMuscle")
);
};
Views = {
AnyProjectModelViewDefinition SelectedView = {
DrawGroupSequence = {&..Selection};
Reset = {On};
};
};
};
AnyOperationSequence Run =
{
AnyOperationMacro SetView =
{
MacroStr = { "classoperation " + CompleteNameOf(&..ModelViews.Views.SelectedView) + strquote("Set View") };
};
AnyOperation &Study = .Study.InverseDynamics;
// #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
};