[770c98]: / Application / Examples / KneeSimulator / Input / Parameters_Ligaments.any

Download this file

369 lines (272 with data), 13.0 kB

//  This file defines the origins and insertions (PosInSeg0 & PosInSeg1) of each ligament used in the model.

AnyFolder Ligaments = 
{
  AnyFolder& RefSegFolder = Main.Model.Segs;
   
  // aPCL: anterior bundle of PCL
  AnyFolder aPCL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.004379269, -0.02120045, 0.005164387};
    AnyVec3 PosInSeg1 = {0.01819545, -0.008882026, -0.00310113} + {0, 0, 0.004} ;
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);   
    AnyVar RefLength = DesignVar(InitLength);

    AnyVar Stiffness = DesignVar(k_aPCL);
    AnyVar RefStrain = DesignVar(er_aPCL);    
    
    AnyFloat InitWrapPosVectors = 0.02*{ {0, 1, 0}, {0, 1, 1} }; 
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Posterior.FitEllipsoid ;
  }; 
  
  // pPCL: posterior bundle of PCL
  AnyFolder pPCL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.01237116, -0.02119734, 0.01100644};
    AnyVec3 PosInSeg1 = {0.02283761, -0.008482172, -0.005172473} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);
    AnyVar RefLength = DesignVar(InitLength);

    AnyVar Stiffness = DesignVar(k_pPCL);
    AnyVar RefStrain = DesignVar(er_pPCL);
    
    AnyFloat InitWrapPosVectors = 0.02*{ {0, 1, 0}, {0, 1, 1} }; 
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Posterior.FitEllipsoid ;
  };   
  
  // ALS: antero-lateral structures
  AnyFolder ALS = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;

    AnyVec3 PosInSeg0 =  {0.01352942, 0.003609563, -0.04485299};
    AnyVec3 PosInSeg1 =  {-0.008477545, -0.01265685, -0.03850314} + {0, 0, 0.004};
        
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);
    AnyVar RefLength = DesignVar(InitLength);

    AnyVar Stiffness = DesignVar(k_ALS);
    AnyVar RefStrain = DesignVar(er_ALS);    

    AnyFloat InitWrapPosVectors = { 0.01*{0, 0, -1}, 0.01*{0, 0, -1} }; 
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Lateral ;
  };  
  
  // LCL: lateral collateral ligament
  AnyFolder LCL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.01559455, 0.004353253, -0.04442619};
    AnyVec3 PosInSeg1 =  {0.004858377, -0.02550506, -0.04643515} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_LCL);
    AnyVar RefStrain = DesignVar(er_LCL); 
    
    AnyFloat InitWrapPosVectors = { 0.01*{0, 0, -1}, 0.01*{0, 0,-1} }; 
  };  
  
  // aMCL: anterior bundle of medial collateral ligament
  AnyFolder aMCL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.0007583092, -0.006442963, 0.04383098};
    AnyVec3 PosInSeg1 = {-0.0192063, -0.04632891, 0.01350731} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_aMCL);
    AnyVar RefStrain = DesignVar(er_aMCL);  
    
    AnyFloat InitWrapPosVectors = 0.02*{ {0, 0, 1}, {0, 0, 1} };
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Medial ; 
  };
  
  // cMCL: central bundle of medial collateral ligament
  AnyFolder cMCL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.004048008, -0.003839782, 0.04446448};
    AnyVec3 PosInSeg1 = {-0.01504607, -0.04886878, 0.0165473} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_cMCL);
    AnyVar RefStrain = DesignVar(er_cMCL);     

    AnyFloat InitWrapPosVectors = 0.02*{ {0, 0, 1}, {0, 0, 1} };    
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Medial ;
  };
  
  // pMCL: posterior bundle of medial collateral ligament
  AnyFolder pMCL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.008690275, 0.001614655, 0.04530023};
    AnyVec3 PosInSeg1 = {-0.002283377, -0.01714655, 0.03775613} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_pMCL);
    AnyVar RefStrain = DesignVar(er_pMCL);    
    
    AnyFloat InitWrapPosVectors = 0.02*{ {0, 0, 1}, {0, 0, 1} }; 
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Medial ;      
  };   
  
  // aCM: anterior deep medial collateral ligament
  AnyFolder aCM = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 =  {0.002225927, -0.01875181, 0.03943343};
    AnyVec3 PosInSeg1 =  {-0.006413535, -0.01357935, 0.03980963} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);  
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_aCM);
    AnyVar RefStrain = DesignVar(er_aCM);
    
    AnyFloat InitWrapPosVectors = 0.02*{ {0, 0, 1}, {0, 0, 1} }; 
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Medial ;
  };
  
  // pCM: posterior deep medial collateral ligament
  AnyFolder pCM = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;

    AnyVec3 PosInSeg0 =  {0.01005975, -0.02076779, 0.04018645};
    AnyVec3 PosInSeg1 =  {0.003698719, -0.01488356, 0.04001298} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1); 
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_pCM);
    AnyVar RefStrain = DesignVar(er_pCM); 
    
    AnyFloat InitWrapPosVectors = 0.02*{ {1, 0, 0}, {1, 0, 0} }; 
    AnyParamSurf& RefSurf0 = RefSeg1.FitBaseNode_Medial ;
  };  
  
  // Lcap: lateral posterior capsule
  AnyFolder Lcap = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.02655239, 0.0110935, -0.02484317};
    AnyVec3 PosInSeg1 = {0.02478246, -0.0118478, -0.02511966} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1); 
    AnyVar RefLength = DesignVar(InitLength);
        
    AnyVar Stiffness = DesignVar(k_Lcap);
    AnyVar RefStrain = DesignVar(er_Lcap);

    AnyFloat InitWrapPosVectors = { 0.02*{1, 0, 0}, 0.015*{1, 0, 0} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Posterior;
    AnyParamSurf& RefSurf1 = RefSeg1.FitBaseNode_Lateral ;
  };  
  
  // Mcap: medial posterior capsule
  AnyFolder Mcap = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;

    AnyVec3 PosInSeg0 = {0.02587168, 0.01039356, 0.02418791};
    AnyVec3 PosInSeg1 = {0.02633748, -0.01385142, 0.02239421} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1); 
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_Mcap);
    AnyVar RefStrain = DesignVar(er_Mcap);

    AnyFloat InitWrapPosVectors = { 0.02*{1, 0, 0}, 0.015*{1, 0, 0} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Posterior;
    AnyParamSurf& RefSurf1 = RefSeg1.FitBaseNode_Medial ;
  };
  
  // OPL: oblique popliteal ligament
  AnyFolder OPL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;

    AnyVec3 PosInSeg0 = {0.02505449, 0.01226585, -0.0313533};
    AnyVec3 PosInSeg1 = {0.02519822, -0.0167346, 0.0212155} + {0, 0, 0.004};
     
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_OPL);
    AnyVar RefStrain = DesignVar(er_OPL); 

    AnyFloat InitWrapPosVectors = { 0.02*{1, 0, 0}, 0.015*{1, 0, 0} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Posterior;
    AnyParamSurf& RefSurf1 = RefSeg1.FitBaseNode_Medial ;

  };   
  
  // PFL: popliteofibular ligament
  AnyFolder PFL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Tibia;
    
    AnyVec3 PosInSeg0 = {0.01172467, -0.01631783, -0.04357169};
    AnyVec3 PosInSeg1 = {0.02601485, -0.008051287, -0.04238429} + {0, 0, 0.004};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_PFL);
    AnyVar RefStrain = DesignVar(er_PFL);
    
    AnyFloat InitWrapPosVectors = { 0.01*{-1, 0, 0}, 0.015*{1, 1, 1} }; 
  };
  
  // sMPFL: superior medial patellofemoral ligament
  AnyFolder sMPFL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Patella;
    
    AnyVec3 PosInSeg0 = {-0.0008673799, 0.003846788, 0.04313949};
    AnyVec3 PosInSeg1 = {-0.0003952951, 0.01165435, 0.02308688};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_sMPFL);
    AnyVar RefStrain = DesignVar(er_sMPFL);    
    
    AnyFloat InitWrapPosVectors = 0.015*{ {0, 0, 1}, {0, 0, 1} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Medial.RotNode.FitEllip ;   
  };  
  
  // mMPFL: middle medial patellofemoral ligament
  AnyFolder mMPFL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Patella;
    
    AnyVec3 PosInSeg0 = {-0.002774547, 6.761041e-05, 0.04489463}+{0.002,0.001,-0.0005};
    AnyVec3 PosInSeg1 = {-0.003625066, 0.0009966616, 0.02682617};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_mMPFL);
    AnyVar RefStrain = DesignVar(er_mMPFL);    

    AnyFloat InitWrapPosVectors = 0.015*{ {0, 0, 1}, {0, 0, 1} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Medial.RotNode.FitEllip ;  
  };
  
  // iMPFL: inferior medial patellofemoral ligament
  AnyFolder iMPFL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Patella;
    
    AnyVec3 PosInSeg0 = {-0.00126412, -0.005171204, 0.04437172}+{0.002,0.003,-0.0005};
    AnyVec3 PosInSeg1 = {-0.004021806, -0.008021331, 0.02805841};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_iMPFL);
    AnyVar RefStrain = DesignVar(er_iMPFL);    
    
    AnyFloat InitWrapPosVectors = 0.015*{ {0, 0, 1}, {0, 0, 1} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Medial.RotNode.FitEllip ;    
  };  
  
  // sLPFL: superior lateral patellofemoral ligament
  AnyFolder sLPFL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Patella;
    
    AnyVec3 PosInSeg0 = {0.01281685, 0.005717128, -0.04507754};
    AnyVec3 PosInSeg1 = {-0.004625278, 0.01403737, -0.0168309};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_sLPFL);
    AnyVar RefStrain = DesignVar(er_sLPFL);    
    
    AnyFloat InitWrapPosVectors = 0.015*{ {0, 0, -1}, {0, 0, -1} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Lateral.RotNode.FitEllip;
  };    
  
  // mLPFL: middle lateral patellofemoral ligament
  AnyFolder mLPFL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Patella;
    
    AnyVec3 PosInSeg0 = {0.01036772, 0.001998146, -0.04549095};
    AnyVec3 PosInSeg1 = {-0.006745957, 0.0001809484, -0.01991348};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_mLPFL);
    AnyVar RefStrain = DesignVar(er_mLPFL);    
    
    AnyFloat InitWrapPosVectors = 0.015*{ {0, 0, -1}, {0, 0, -1} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Lateral.RotNode.FitEllip;
  };
  
  // iLPFL: inferior lateral patellofemoral ligament
  AnyFolder iLPFL = 
  {
    AnySeg& RefSeg0 = .RefSegFolder.Femur;
    AnySeg& RefSeg1 = .RefSegFolder.Patella;
    
    AnyVec3 PosInSeg0 = {0.01103758, -0.002124868, -0.04623395};
    AnyVec3 PosInSeg1 = {-0.007697297, -0.009764967, -0.01672385};
    
    AnyVar InitLength = vnorm(PosInSeg0 - PosInSeg1);    
    AnyVar RefLength = DesignVar(InitLength);
    
    AnyVar Stiffness = DesignVar(k_iLPFL);
    AnyVar RefStrain = DesignVar(er_iLPFL);     
    
    AnyFloat InitWrapPosVectors = 0.015*{ {0, 0, -1}, {0, 0, -1} };    
    AnyParamSurf& RefSurf0 = RefSeg0.FitBaseNode_Lateral.RotNode.FitEllip;
  };     
};