module CPumps
    use CPumpsVariables
    use CManifolds
    use CLog4
    implicit none    
    public    
    contains    
    subroutine SetMudPump1LinerDiameter(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1LinerDiameter
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1LinerDiameter' :: SetMudPump1LinerDiameter
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump1LinerDiameter = v
        call CalcPump1OutputBblStroke()
#ifdef deb
	    call Log_4( 'MudPump1LinerDiameter=', PumpsSpecification%MudPump1LinerDiameter)
#endif
    end subroutine
        
    subroutine SetMudPump1Stroke(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1Stroke
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1Stroke' :: SetMudPump1Stroke
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump1Stroke = v  
        !call CalcMudPump1LinerDiameter()
        call CalcPump1OutputBblStroke()
#ifdef deb
	    call Log_4( 'MudPump1Stroke=', v)
#endif
    end subroutine
        
    subroutine SetMudPump1MechanicalEfficiency(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1MechanicalEfficiency
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1MechanicalEfficiency' :: SetMudPump1MechanicalEfficiency
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump1MechanicalEfficiency = v            
    end subroutine
                
    subroutine SetMudPump1VolumetricEfficiency(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1VolumetricEfficiency
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1VolumetricEfficiency' :: SetMudPump1VolumetricEfficiency
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump1VolumetricEfficiency = v  
        !call CalcMudPump1LinerDiameter()
        call CalcPump1OutputBblStroke()
#ifdef deb
	    call Log_4( 'MudPump1VolumetricEfficiency=', PumpsSpecification%MudPump1VolumetricEfficiency)
#endif
    end subroutine
        
    subroutine SetMudPump1Output(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1Output
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1Output' :: SetMudPump1Output
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump1Output = v 
#ifdef deb
	    print*, 'MudPump1Output=', PumpsSpecification%MudPump1Output
#endif
    end subroutine
        
    subroutine SetMudPump1OutputBblStroke(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1OutputBblStroke
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1OutputBblStroke' :: SetMudPump1OutputBblStroke
	    implicit none
	    real*8, intent(in) :: v
	    PumpsSpecification%MudPump1OutputBblStroke = v
        call CalcMudPump1LinerDiameter()
#ifdef deb
	    print*, 'MudPump1OutputBblStroke=', PumpsSpecification%MudPump1OutputBblStroke
#endif
    end subroutine
        
    subroutine SetMudPump1Maximum(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1Maximum
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1Maximum' :: SetMudPump1Maximum
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump1Maximum = v            
    end subroutine
        
    subroutine SetMudPump1ReliefValvePressure(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1ReliefValvePressure
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1ReliefValvePressure' :: SetMudPump1ReliefValvePressure
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump1ReliefValvePressure = v            
    end subroutine
        
        
        
    subroutine SetMudPump2LinerDiameter(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2LinerDiameter
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2LinerDiameter' :: SetMudPump2LinerDiameter
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump2LinerDiameter = v
        call CalcPump2OutputBblStroke()
#ifdef deb
	    call Log_4( 'MudPump2LinerDiameter=', PumpsSpecification%MudPump2LinerDiameter)
#endif
    end subroutine
                
    subroutine SetMudPump2Stroke(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2Stroke
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2Stroke' :: SetMudPump2Stroke
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump2Stroke = v  
        !call CalcMudPump2LinerDiameter()
        call CalcPump2OutputBblStroke()
#ifdef deb
	    call Log_4( 'MudPump2Stroke=', PumpsSpecification%MudPump2Stroke)
#endif
    end subroutine
                
    subroutine SetMudPump2MechanicalEfficiency(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2MechanicalEfficiency
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2MechanicalEfficiency' :: SetMudPump2MechanicalEfficiency
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump2MechanicalEfficiency = v            
    end subroutine
                
    subroutine SetMudPump2VolumetricEfficiency(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2VolumetricEfficiency
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2VolumetricEfficiency' :: SetMudPump2VolumetricEfficiency
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump2VolumetricEfficiency = v 
        !call CalcMudPump2LinerDiameter()
        call CalcPump2OutputBblStroke()
#ifdef deb
	    call Log_4( 'MudPump2VolumetricEfficiency=', PumpsSpecification%MudPump2VolumetricEfficiency)
#endif
    end subroutine
        
    subroutine SetMudPump2Output(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2Output
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2Output' :: SetMudPump2Output
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump2Output = v 
#ifdef deb
	    print*, 'MudPump2Output=', PumpsSpecification%MudPump2Output
#endif
    end subroutine
        
    subroutine SetMudPump2OutputBblStroke(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2OutputBblStroke
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2OutputBblStroke' :: SetMudPump2OutputBblStroke
	    implicit none
	    real*8, intent(in) :: v
	    PumpsSpecification%MudPump2OutputBblStroke = v
        call CalcMudPump2LinerDiameter()
#ifdef deb
	    print*, 'MudPump2OutputBblStroke=', PumpsSpecification%MudPump2OutputBblStroke
#endif
    end subroutine
        
    subroutine SetMudPump2Maximum(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2Maximum
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2Maximum' :: SetMudPump2Maximum
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump2Maximum = v            
    end subroutine
        
    subroutine SetMudPump2ReliefValvePressure(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2ReliefValvePressure
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2ReliefValvePressure' :: SetMudPump2ReliefValvePressure
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%MudPump2ReliefValvePressure = v    
    end subroutine
        
        
        
    subroutine SetCementPumpLinerDiameter(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpLinerDiameter
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpLinerDiameter' :: SetCementPumpLinerDiameter
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%CementPumpLinerDiameter = v  
        call CalcPump3OutputBblStroke()
#ifdef deb
	    call Log_4( 'CementPumpLinerDiameter=', PumpsSpecification%CementPumpLinerDiameter)
#endif
    end subroutine

    subroutine SetCementPumpStroke(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpStroke
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpStroke' :: SetCementPumpStroke
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%CementPumpStroke = v   
        !call CalcMudPump3LinerDiameter()
        call CalcPump3OutputBblStroke()
#ifdef deb
	    call Log_4( 'CementPumpStroke=', PumpsSpecification%CementPumpStroke)
#endif
    end subroutine
        
    subroutine SetCementPumpMechanicalEfficiency(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpMechanicalEfficiency
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpMechanicalEfficiency' :: SetCementPumpMechanicalEfficiency
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%CementPumpMechanicalEfficiency = v            
    end subroutine
        
    subroutine SetCementPumpVolumetricEfficiency(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpVolumetricEfficiency
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpVolumetricEfficiency' :: SetCementPumpVolumetricEfficiency
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%CementPumpVolumetricEfficiency = v    
        !call CalcMudPump3LinerDiameter()
        call CalcPump3OutputBblStroke()
#ifdef deb
	    call Log_4( 'CementPumpVolumetricEfficiency=', PumpsSpecification%CementPumpVolumetricEfficiency)
#endif
    end subroutine
        
    subroutine SetCementPumpOutput(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpOutput
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpOutput' :: SetCementPumpOutput
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%CementPumpOutput = v 
#ifdef deb
	    print*, 'CementPumpOutput=', PumpsSpecification%CementPumpOutput
#endif
    end subroutine
        
    subroutine SetCementPumpOutputBblStroke(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpOutputBblStroke
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpOutputBblStroke' :: SetCementPumpOutputBblStroke
	    implicit none
	    real*8, intent(in) :: v
	    PumpsSpecification%CementPumpOutputBblStroke = v
        call CalcMudPump3LinerDiameter()
#ifdef deb
	    print*, 'CementPumpOutputBblStroke=', PumpsSpecification%CementPumpOutputBblStroke
#endif
    end subroutine
        
    subroutine SetCementPumpMaximum(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpMaximum
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpMaximum' :: SetCementPumpMaximum
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%CementPumpMaximum = v            
    end subroutine
        
    subroutine SetCementPumpReliefValvePressure(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpReliefValvePressure
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpReliefValvePressure' :: SetCementPumpReliefValvePressure
        implicit none
        real*8, intent(in) :: v
        PumpsSpecification%CementPumpReliefValvePressure = v            
    end subroutine
        
    subroutine SetMudPump1ReliefValveIsSet(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump1ReliefValveIsSet
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump1ReliefValveIsSet' :: SetMudPump1ReliefValveIsSet
	    implicit none
	    logical, intent(in) :: v
        if (PumpsSpecification%MudPump1ReliefValveIsSet == v) return
	    PumpsSpecification%MudPump1ReliefValveIsSet = v
#ifdef deb
	    print*, 'MudPump1ReliefValveIsSet=', PumpsSpecification%MudPump1ReliefValveIsSet
#endif
    end subroutine

    subroutine SetMudPump2ReliefValveIsSet(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetMudPump2ReliefValveIsSet
    !DEC$ ATTRIBUTES ALIAS: 'SetMudPump2ReliefValveIsSet' :: SetMudPump2ReliefValveIsSet
	    implicit none
	    logical, intent(in) :: v
        if (PumpsSpecification%MudPump2ReliefValveIsSet == v) return
	    PumpsSpecification%MudPump2ReliefValveIsSet = v
#ifdef deb
	    print*, 'MudPump2ReliefValveIsSet=', PumpsSpecification%MudPump2ReliefValveIsSet
#endif
    end subroutine

    subroutine SetCementPumpReliefValveIsSet(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpReliefValveIsSet
    !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpReliefValveIsSet' :: SetCementPumpReliefValveIsSet
	    implicit none
	    logical, intent(in) :: v
        if (PumpsSpecification%CementPumpReliefValveIsSet == v) return
	    PumpsSpecification%CementPumpReliefValveIsSet = v
#ifdef deb
	    print*, 'CementPumpReliefValveIsSet=', PumpsSpecification%CementPumpReliefValveIsSet
#endif
    end subroutine
        
        
        
        
        
        
    subroutine SetManualPumpPower(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetManualPumpPower
    !DEC$ ATTRIBUTES ALIAS: 'SetManualPumpPower' :: SetManualPumpPower
	    implicit none
	    logical, intent(in) :: v
	    PumpsSpecification%ManualPumpPower = v
        call ChangeValve(23, v)
#ifdef deb
	    print*, 'ManualPumpPower=', PumpsSpecification%ManualPumpPower
#endif
    end subroutine

    subroutine SetValve1(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetValve1
    !DEC$ ATTRIBUTES ALIAS: 'SetValve1' :: SetValve1
	    implicit none
	    logical, intent(in) :: v
	    PumpsSpecification%Valve1 = v
        call ChangeValve(22, v)
#ifdef deb
	    print*, 'Valve1=', PumpsSpecification%Valve1
#endif
    end subroutine

    subroutine SetValve2(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetValve2
    !DEC$ ATTRIBUTES ALIAS: 'SetValve2' :: SetValve2
	    implicit none
	    logical, intent(in) :: v
	    PumpsSpecification%Valve2 = v
        call ChangeValve(19, v)
#ifdef deb
	    print*, 'Valve2=', PumpsSpecification%Valve2
#endif
    end subroutine

    subroutine SetValve3(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetValve3
    !DEC$ ATTRIBUTES ALIAS: 'SetValve3' :: SetValve3
	    implicit none
	    logical, intent(in) :: v
	    PumpsSpecification%Valve3 = v
        call ChangeValve(21, v)
#ifdef deb
	    print*, 'Valve3=', PumpsSpecification%Valve3
#endif
    end subroutine

    subroutine SetValve4(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetValve4
    !DEC$ ATTRIBUTES ALIAS: 'SetValve4' :: SetValve4
	    implicit none
	    logical, intent(in) :: v
	    PumpsSpecification%Valve4 = v
        call ChangeValve(20, v)
#ifdef deb
	    print*, 'Valve4=', PumpsSpecification%Valve4
#endif
    end subroutine

    subroutine SetValve5(v)
    !DEC$ ATTRIBUTES DLLEXPORT :: SetValve5
    !DEC$ ATTRIBUTES ALIAS: 'SetValve5' :: SetValve5
	    implicit none
	    logical, intent(in) :: v
	    PumpsSpecification%Valve5 = v
        call ChangeValve(24, v)
#ifdef deb
	    print*, 'Valve5=', PumpsSpecification%Valve5
#endif
    end subroutine
        
        
end module CPumps