Download this file

241 lines (192 with data), 5.3 kB

//The temporo mandibular joints (TMJ) on the left and right side

#if TMJ_CONTACT_MODEL == 0 & TMJ_LIGAMENT_REFRENCE_CONFIGURATION_MODEL == 0 & FREE_MOVEMENT == 0


AnyMuscleModel ArtificialMuscle={
  F0=20000;
};

//The right TMJ
AnyKinLinear TMJ_JntR={
  AnyRefNode &SkullRef = ..Seg.Skull.TMJ_NodeR;
  AnyRefNode &MandibleRef = ..Seg.Mandible.TMJ_NodeR;
  Ref=0;
};



AnyKinEqSimpleDriver TMJ_JntR_Z_Constraint = {
AnyKinMeasureOrg TMJ_JntR_Z={
  AnyKinLinear &ref = ..TMJ_JntR;
  MeasureOrganizer={2};
};
  DriverPos = {0.0};
  DriverVel = {0.0};
  Reaction.Type = {Off};
};

AnyRecruitedActuator  ReactionForceTMJ_R= {
  Strength = .ArtificialMuscle.F0;
  AnyKinMeasure& ref2=.TMJ_JntR_Z_Constraint.TMJ_JntR_Z;
  Type = NonPositive;
  SET_DEFAULT_ACTUATOR_VOLUME;
   
};

//----------------------------


//The left TMJ
AnyKinLinear TMJ_JntL={
  AnyRefNode &SkullRef = ..Seg.Skull.TMJ_NodeL;
  AnyRefNode &MandibleRef = ..Seg.Mandible.TMJ_NodeL;
  Ref=0;
};


AnyKinEqSimpleDriver TMJ_JntL_Z_Constraint = {
AnyKinMeasureOrg TMJ_JntL_Z={
  AnyKinLinear &ref = ..TMJ_JntL;
  MeasureOrganizer={2};
};
  DriverPos = {0.0};
  DriverVel = {0.0};
  Reaction.Type = {Off};
};

AnyRecruitedActuator  ReactionForceTMJ_L= {
  Strength = .ArtificialMuscle.F0;
  AnyKinMeasure& ref2=.TMJ_JntL_Z_Constraint.TMJ_JntL_Z;
  Type = NonPositive;
  SET_DEFAULT_ACTUATOR_VOLUME;
   
};

// ML dof

AnyKinEqSimpleDriver TMJ_ML_Constraint = {
  AnyKinMeasureOrg meas={
   AnyKinLinear lin ={
     Ref=0;
     AnySeg &SkullRef = ....Seg.Skull;
     AnySeg &MandibleRef = ....Seg.Mandible;
   };
    MeasureOrganizer={1};
  };
  DriverPos = {0.00};
  DriverVel = {0.0};
  Reaction.Type = {On};
  CType={Hard};  
};

//---------------------------
#else
#if TMJ_CONTACT_MODEL == 1 
// FDK joint
//The right TMJ
AnyKinLinear TMJ_JntR={
  AnyRefNode &SkullRef = ..Seg.Skull.TMJ_NodeR;
  AnyRefNode &MandibleRef = ..Seg.Mandible.TMJ_NodeR;
  Ref=0;
};



AnyKinEqSimpleDriver TMJ_JntR_Z_Constraint = {
AnyKinMeasureOrg TMJ_JntR_Z={
  AnyKinLinear &ref = ..TMJ_JntR;
  MeasureOrganizer={2};
};
  DriverPos = {0.00};
  DriverVel = {0.0};
  Reaction.Type = {Off};
  CType={ForceDep};
};

AnyForceSurfaceContact TMJ_JntR_Contact = 
{ 
  AnySurface &sMaster = ..Seg.Skull.SkullSurfNode.SurfContactRight;
  AnySurface &sSlave = ..Seg.Mandible.MandibleSurfNode.SurfContactRight;
  
//  PressureModule = 5e9;

  PressureModule = 10e9;

  ForceViewOnOff = On;
  MeshRefinementMaster = 0;
  MeshRefinementSlave = 0;
  SingleSidedOnOff= Off;
  AnyDrawForceSurface Drw = 
  {
    //Visible = On;
    //Opacity = 1;
    //DrawSurf1RGB = {0, 0, 0};
    //DrawSurf2RGB = {1, 1, 1};
    //AnyStyleDrawMaterial &<Insert name0> = <Insert object reference (or full object definition)>; You can make any number of these objects!
  };

};

//----------------------------

//The left TMJ
AnyKinLinear TMJ_JntL={
  AnyRefNode &SkullRef = ..Seg.Skull.TMJ_NodeL;
  AnyRefNode &MandibleRef = ..Seg.Mandible.TMJ_NodeL;
  Ref=0;
};

AnyKinEqSimpleDriver TMJ_JntL_Z_Constraint = {
AnyKinMeasureOrg TMJ_JntL_Z={
  AnyKinLinear &ref = ..TMJ_JntL;
  MeasureOrganizer={2};
};
  DriverPos = {0.00};
  DriverVel = {0.0};
  Reaction.Type = {Off};
  CType={ForceDep};  
};

// ML FDK dof

AnyKinEqSimpleDriver TMJ_ML_Constraint = {
  AnyKinMeasureOrg meas={
   AnyKinLinear lin ={
     Ref=0;
     AnySeg &SkullRef = ....Seg.Skull;
     AnySeg &MandibleRef = ....Seg.Mandible;
   };
    MeasureOrganizer={1};
  };
  DriverPos = {0.00};
  DriverVel = {0.0};
  Reaction.Type = {Off};
  CType={ForceDep};  
};

AnyForceSurfaceContact TMJ_JntL_Contact = 
{ 
  AnySurface &sMaster = ..Seg.Skull.SkullSurfNode.SurfContactLeft;
  AnySurface &sSlave = ..Seg.Mandible.MandibleSurfNode.SurfContactLeft;
  
//  PressureModule = 5e9;

  PressureModule = 10e9;

  ForceViewOnOff = On;
  MeshRefinementMaster = 0;
  MeshRefinementSlave = 0;
  SingleSidedOnOff= Off;
  
  AnyDrawForceSurface Drw = 
  {
    //Visible = On;
    //Opacity = 1;
    //DrawSurf1RGB = {0, 0, 0};
    //DrawSurf2RGB = {1, 1, 1};
    //AnyStyleDrawMaterial &<Insert name0> = <Insert object reference (or full object definition)>; You can make any number of these objects!
  };  
};
//---------------------------

// artificial springs
AnyForce TMJ_JntR_Z_force = {
  AnyKinMeasureOrg meas={
    AnyKinLinear &ref = ..TMJ_JntR;
    MeasureOrganizer={2};
  };
  
  AnyVar k = 0.1;
  AnyVar l0= 0.0;
  #include "LigamentModelLinear.any"
  F = Val;
};

// artificial springs
AnyForce TMJ_ML_force = {
  AnyKinMeasureOrg meas={
   AnyKinLinear lin ={
     Ref=0;
     AnySeg &SkullRef = ....Seg.Skull;
     AnySeg &MandibleRef = ....Seg.Mandible;
   };
    MeasureOrganizer={1};
  };
  
  AnyVar k = 0.1;
  AnyVar l0= 0.0;
  #include "LigamentModelLinear.any"
  F = Val;
};


AnyForce TMJ_JntL_Z_force = {
  AnyKinMeasureOrg meas={
    AnyKinLinear &ref = ..TMJ_JntL;
    MeasureOrganizer={2};
  };
  
  AnyVar k = 0.1;
  AnyVar l0= 0.0;
  #include "LigamentModelLinear.any"
  F = Val;
};


#endif // #if TMJ_CONTACT_MODEL== 0
#endif