--- a
+++ b/Tools/ModelUtilities/Diagnostics/DiagnosticMuscle3.any
@@ -0,0 +1,44 @@
+//This is file is used to apply an artificial muscle to 
+//a particular dof in a measure
+ 
+//the file add to muscles to the dof of the joint, the strength of these muscles are dependent on joint
+//range of motion
+
+AnyFolder Muscle={
+  
+  AnyKinMeasureOrg MeasureOrg={
+    AnyKinMeasure& Ref=...DOF;
+    MeasureOrganizer ={..dof};
+  };
+ 
+  //this variable is true if the joint is outside ROM
+  
+  AnyInt ROMExceeded = iffun(orfun(  gtfun(MeasureOrg.Pos[0],.ROM[0]),  ltfun(MeasureOrg.Pos[0],-.ROM[1])),0,1);
+  
+  AnyMuscleGeneric PosMuscle={
+    AnyVar ROMStrenghtScale=iffun(.ROMExceeded,1.0,0.1); 
+    
+    AnyMuscleModelUsr1 MusMdl={
+      F0=0;
+      S=...Strength[0]*.ROMStrenghtScale; 
+    };
+    AnyKinMeasure& ref=.MeasureOrg;
+    Type = NonNegative;
+    EXCLUDE_MUSCLE_METABOLISM
+     
+  };
+  
+  AnyMuscleGeneric NegMuscle={
+    
+    AnyVar ROMStrenghtScale=iffun(.ROMExceeded,1.0,0.1); 
+    AnyMuscleModelUsr1 MusMdl={
+      F0=0;
+      S=...Strength[1]*.ROMStrenghtScale; 
+    };
+    AnyKinMeasure& ref=.MeasureOrg;
+    Type = NonPositive;
+    EXCLUDE_MUSCLE_METABOLISM
+     
+  };
+  
+};
\ No newline at end of file