subroutine TD_ForceDownDRot(i,TD_SemiMudVisc)
    
   Use TD_DrillStemComponents
   use SimulationVariables !@
   use SimulationVariables !@
   use SimulationVariables !@
   use SimulationVariables

   implicit none
   
   Integer :: i
   Real(8) :: TD_SemiMudVisc
   
   
   If (i==1) then
       data%State%TD_DrillStems(1)%Force1 = -data%State%TD_String%WeightOnBit
       data%State%TD_DrillStems(1)%Force2 = data%State%TD_DrillStems(1)%Force1 + (data%State%TD_DrillStems(1)%Force1 * &
                               (exp(-(TD_SemiMudVisc*data%State%TD_DrillStems(1)%MudVisCorrectCoef)*abs(data%State%TD_DrillStems(1)%EndAngle-data%State%TD_DrillStems(1)%StartAngle))-1.0d0) * &
                               sin(data%State%TD_DrillStems(1)%CombVelRatio )) + (data%State%TD_DrillStems(1)%BouyancyFactor * &
                               data%State%TD_DrillStems(1)%WeightperLength * data%State%TD_DrillStems(1)%Length * &
                               ((sin(data%State%TD_DrillStems(1)%EndAngle)-sin(data%State%TD_DrillStems(1)%StartAngle))/ &
                               (data%State%TD_DrillStems(1)%EndAngle-data%State%TD_DrillStems(1)%StartAngle)))
       
       
       if (data%State%TD_DrillStems(i)%ComponentType==0) then
           data%State%TD_DrillStems(i)%Torque = data%State%TD_String%BitTorque
       else
           data%State%TD_DrillStems(i)%Torque = TD_SemiMudVisc*data%State%TD_DrillStems(i)%RtoolJoint*data%State%TD_DrillStems(i)%Force1* &
                                abs(data%State%TD_DrillStems(i)%EndAngle-data%State%TD_DrillStems(i)%StartAngle)*cos(data%State%TD_DrillStems(i)%CombVelRatio)
       end if
       
       
       return
   End If
   
   
!=========> F1 Calculation
   data%State%TD_DrillStems(i)%Force1 = data%State%TD_DrillStems(i-1)%Force2
   
    
!=========> F2 Calculation
        data%State%TD_DrillStems(i)%Force2 = data%State%TD_DrillStems(i)%Force1 + (data%State%TD_DrillStems(i)%Force1 * &
                               (exp(-(TD_SemiMudVisc*data%State%TD_DrillStems(i)%MudVisCorrectCoef)*abs(data%State%TD_DrillStems(i)%EndAngle-data%State%TD_DrillStems(i)%StartAngle))-1.0d0) * &
                               sin(data%State%TD_DrillStems(i)%CombVelRatio )) + (data%State%TD_DrillStems(i)%BouyancyFactor * &
                               data%State%TD_DrillStems(i)%WeightperLength * data%State%TD_DrillStems(i)%Length * &
                               ((sin(data%State%TD_DrillStems(i)%EndAngle)-sin(data%State%TD_DrillStems(i)%StartAngle))/ &
                               (data%State%TD_DrillStems(i)%EndAngle-data%State%TD_DrillStems(i)%StartAngle)))
        !
        !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length) / &
        !                     (Elements(i)%Area * Element%ElasticModule)
        !
        data%State%TD_DrillStems(i)%Torque = TD_SemiMudVisc*data%State%TD_DrillStems(i)%RtoolJoint*data%State%TD_DrillStems(i)%Force1* &
                                abs(data%State%TD_DrillStems(i)%EndAngle-data%State%TD_DrillStems(i)%StartAngle)*cos(data%State%TD_DrillStems(i)%CombVelRatio)
        
    
end subroutine