subroutine TD_ForceUpSRot(i,TD_SemiMudVisc)
    
   Use TD_DrillStemComponents
   use SimulationVariables !@
   use SimulationVariables !@
   use SimulationVariables !@
   
   
   implicit none
    
   Integer :: i
   Real(8) :: TD_SemiMudVisc , TD_SemiAngle
    
   
   if ( data%State%TD_DrillStems(i)%StartAngle<=(pi/180.d0) ) then
       TD_SemiAngle = (pi/180.)
   else
       TD_SemiAngle = data%State%TD_DrillStems(i)%StartAngle
   end if
   
    
    If (i==1) then
       data%State%TD_DrillStems(1)%Force1 = -data%State%TD_String%WeightOnBit
       data%State%TD_DrillStems(i)%Force2 = data%State%TD_DrillStems(i)%Force1 + (data%State%TD_DrillStems(i)%BouyancyFactor * data%State%TD_DrillStems(i)%WeightperLength * data%State%TD_DrillStems(i)%Length * &
                            cos(data%State%TD_DrillStems(i)%StartAngle)) + (TD_SemiMudVisc * data%State%TD_DrillStems(i)%BouyancyFactor * &
                            data%State%TD_DrillStems(i)%WeightperLength * data%State%TD_DrillStems(i)%Length * &
                            sin(data%State%TD_DrillStems(i)%StartAngle) * sin(data%State%TD_DrillStems(i)%CombVelRatio))
       
       
       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 = data%State%TD_DrillStems(i)%RtoolJoint * TD_SemiMudVisc * data%State%TD_DrillStems(i)%BouyancyFactor * &
                            data%State%TD_DrillStems(i)%WeightperLength * data%State%TD_DrillStems(i)%Length * sin(TD_SemiAngle) * 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)%BouyancyFactor * data%State%TD_DrillStems(i)%WeightperLength * data%State%TD_DrillStems(i)%Length * &
                            cos(data%State%TD_DrillStems(i)%StartAngle)) + (TD_SemiMudVisc * data%State%TD_DrillStems(i)%BouyancyFactor * &
                            data%State%TD_DrillStems(i)%WeightperLength * data%State%TD_DrillStems(i)%Length * &
                            sin(data%State%TD_DrillStems(i)%StartAngle) * sin(data%State%TD_DrillStems(i)%CombVelRatio))
    !    
    data%State%TD_DrillStems(i)%Torque = data%State%TD_DrillStems(i)%RtoolJoint * TD_SemiMudVisc * data%State%TD_DrillStems(i)%BouyancyFactor * &
                            data%State%TD_DrillStems(i)%WeightperLength * data%State%TD_DrillStems(i)%Length * sin(TD_SemiAngle) * cos(data%State%TD_DrillStems(i)%CombVelRatio)
    !    
    !Strains(i)%dL = TDForces(i)%Force * (Elements(i)%Length) / &
    !                         (Elements(i)%Area * Element%ElasticModule)
        
    
end subroutine