|
- subroutine Pump1_OnMode_Solver(Pump_No)
-
- use Pump_VARIABLES
- use CPumpsVariables
- use CDrillingConsoleVariables
- use CDataDisplayConsoleVariables
- use CSimulationVariables
- use CDrillWatchVariables
- use equipments_PowerLimit
- use CSounds
- use CWarningsVariables
-
-
- IMPLICIT NONE
- INTEGER :: Pump_No
-
-
-
- Call Pump_INPUTS
-
-
- ! Torque unit = [in.lbf]
- PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency)
-
- !call PowerLimits
-
- !print*, 'PUMP(1)%Torque=', PUMP(1)%Torque
- Call Pump_Traction_Motor(Pump_No)
-
- !print*, 'PUMP(1)%w_new=', PUMP(1)%w_new
-
- if (PUMP(Pump_No)%N_ref<=0.) then
- PUMP(Pump_No)%w_ref = 0.
- PUMP(Pump_No)%w_old = 0.
- PUMP(Pump_No)%w = 0.
- PUMP(Pump_No)%w_new = 0.
- PUMP(Pump_No)%ia_old = 0.
- PUMP(Pump_No)%ia = 0.
- PUMP(Pump_No)%ia_new = 0.
- PUMP(Pump_No)%x_old = 0.
- PUMP(Pump_No)%x = 0.
- PUMP(Pump_No)%x_new = 0.
- end if
-
-
-
-
- if (Power_sigma>max_Power_sigma) then
- PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%Vt_old
- else
- PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new)
- IF (PUMP(Pump_No)%Vt_old>810.) THEN
- PUMP(Pump_No)%Vt_old = 810.
- ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN
- PUMP(Pump_No)%Vt_old = 0.
- END IF
- end if
-
-
-
-
- !PUMP(Pump_No)%Vt=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new)
- !IF (PUMP(Pump_No)%Vt>810.) THEN
- ! PUMP(Pump_No)%Vt=810.
- !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN
- ! PUMP(Pump_No)%Vt=0.
- !END IF
-
-
-
- PUMP(Pump_No)%Speed = 30.d0*PUMP(Pump_No)%w_new/pi !Speed [RPM]
-
- if ( Pump1Failure == .true. ) then
- PUMP(1)%Speed = 0.d0
- PUMP(1)%w = 0.d0
- PUMP(1)%w_new = 0.d0
- PUMP(1)%w_old = 0.d0
- end if
-
-
-
- Call Pump_Solver(Pump_No)
- Call Pump_Total_Counts
-
-
-
- Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) )
- SPM1 = MP1SPMGauge
- PUMP(1)%SoundSPM = INT(PUMP(1)%Speed/PUMP(1)%Trans_Ratio)
- Call SetSoundMP1( PUMP(1)%SoundSPM )
- !Call Set_MP2SPMGauge( real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) )
- !SPM2 = MP2SPMGauge
-
-
-
- IF (PUMP(1)%Flow_Rate>0.) Then
- Call OpenPump1()
- Else
- Call ClosePump1()
- End if
-
-
- !IF (PUMP(2)%Flow_Rate>0.) Then
- ! Call OpenPump2()
- !Else
- ! Call ClosePump2()
- !End if
-
- !print*, 'PUMP(1)%Speed=', PUMP(1)%Speed
- !print*, 'PUMP(1)%Torque=', PUMP(1)%Torque
- !print*, 'Power_sigma=', Power_sigma
- !print*, 'power_num_of_Jenerators=', power_num_of_Jenerators
- !print*, 'drilling_num_of_Jenerators=', drilling_num_of_Jenerators
- !print*, 'max_Power_sigma=', max_Power_sigma
- !print*, 'PUMP(1)%Vt=', PUMP(1)%Vt
- !print*, 'PUMP(1)%SoundSPM=', PUMP(1)%SoundSPM
- !print*, 'PUMP(1)%ia_new=', PUMP(1)%ia_new
-
-
- end subroutine Pump1_OnMode_Solver
|