subroutine Pump3_MainSolver
    
    use SimulationVariables
    
    Implicit none
    
    
    
              
    if (data%State%Pump(3)%Throttle<=0.d0) then
        data%State%Pump(3)%K_throttle = 1
    end if
              
              
    if((data%State%Pump(3)%Switch==1) .and. (data%State%Pump(3)%K_throttle==1) .and. (data%State%Pump(3)%PowerFailMalf==0) .and. (data%State%Pump(3)%Failure==0)) then
                   
        !========================== Pump 3 Rate limit ==========================
        if (((data%State%Pump(3)%N_new-data%State%Pump(3)%N_old)/data%State%Pump(3)%time_step)>data%State%Pump(3)%RateChange) then
            data%State%Pump(3)%Speed =(data%State%Pump(3)%RateChange*data%State%Pump(3)%time_step)+data%State%Pump(3)%N_old                     ![RPM]
        else if (((data%State%Pump(3)%N_old-data%State%Pump(3)%N_new)/data%State%Pump(3)%time_step)>data%State%Pump(3)%RateChange) then
            data%State%Pump(3)%Speed = (-data%State%Pump(3)%RateChange*data%State%Pump(3)%time_step)+data%State%Pump(3)%N_old
        else
            data%State%Pump(3)%Speed = data%State%Pump(3)%N_new
        end if
        !=======================================================================
                       
        Call Pump_OnMode_Solver(3)
        
    else
        
        Call Pump_OffMode_Solver(3)
        data%State%Pump(3)%K_throttle = 0
    
    end if
    
    
    data%State%Pump(3)%N_old = data%State%Pump(3)%Speed
    
              
              
end subroutine Pump3_MainSolver