diff --git a/.gitignore b/.gitignore index f8d6f67..6f690d7 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,21 @@ *.rar /mod /obj -./*.mod \ No newline at end of file +./*.mod + +# Compiled object files +*.o +*.mod + +# Executables +exe/* + +# Ignore files generated by Make +Makefile +Makefile.in +Makefile.in~ + +# Ignore build output directories +/build/ +/.idea/ +/.vscode/ \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 5504ea2..aedc40f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -42,7 +42,7 @@ "type": "cppdbg", "request": "launch", "program": "${workspaceRoot}/SimulationCore2", - "args": ["85.198.9.229", "6379", "'1qazxsw2$$'", "72a84eb3-eee5-4104-8363-08dba3c9a113", "4", "1000"], + "args": ["85.198.9.229", "6379", "'1qazxsw2$$'", "b6996849-fb69-4076-ca17-08dbea60e4cb", "4", "100"], "stopAtEntry": false, "cwd": "${workspaceRoot}", "externalConsole": false, diff --git a/CSharp/BasicInputs/Geology/CShoe.i90 b/CSharp/BasicInputs/Geology/CShoe.i90 index 971df2b..0644024 100644 --- a/CSharp/BasicInputs/Geology/CShoe.i90 +++ b/CSharp/BasicInputs/Geology/CShoe.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/BasicInputs/Geology/CShoe.f90" +# 1 "/home/admin/SimulationCore2/CSharp/BasicInputs/Geology/CShoe.f90" module CShoe use SimulationVariables use json_module diff --git a/CSharp/BasicInputs/RigSpecifications/CPumps.f90 b/CSharp/BasicInputs/RigSpecifications/CPumps.f90 index 62fafab..1980206 100644 --- a/CSharp/BasicInputs/RigSpecifications/CPumps.f90 +++ b/CSharp/BasicInputs/RigSpecifications/CPumps.f90 @@ -64,37 +64,36 @@ module CPumps call json%get(p,"ManualPumpPower",pitem) ! Newly added - call json%get(pitem,data%Configuration%Pumps%MudPump1VolumetricOutput) call json%get(p,"MudPump1VolumetricOutput",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump2VolumetricOutput) + call json%get(pitem,data%Configuration%Pumps%MudPump1VolumetricOutput) call json%get(p,"MudPump2VolumetricOutput",pitem) - call json%get(pitem,data%Configuration%Pumps%CementPumpVolumetricOutput) + call json%get(pitem,data%Configuration%Pumps%MudPump2VolumetricOutput) call json%get(p,"CementPumpVolumetricOutput",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump1MaximumPressure) + call json%get(pitem,data%Configuration%Pumps%CementPumpVolumetricOutput) call json%get(p,"MudPump1MaximumPressure",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump1PumpRateChange) + call json%get(pitem,data%Configuration%Pumps%MudPump1MaximumPressure) call json%get(p,"MudPump1PumpRateChange",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump1SurfaceLineLength) + call json%get(pitem,data%Configuration%Pumps%MudPump1PumpRateChange) call json%get(p,"MudPump1SurfaceLineLength",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump1DelayToShutdown) + call json%get(pitem,data%Configuration%Pumps%MudPump1SurfaceLineLength) call json%get(p,"MudPump1DelayToShutdown",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump2MaximumPressure) + call json%get(pitem,data%Configuration%Pumps%MudPump1DelayToShutdown) call json%get(p,"MudPump2MaximumPressure",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump2PumpRateChange) + call json%get(pitem,data%Configuration%Pumps%MudPump2MaximumPressure) call json%get(p,"MudPump2PumpRateChange",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump2SurfaceLineLength) + call json%get(pitem,data%Configuration%Pumps%MudPump2PumpRateChange) call json%get(p,"MudPump2SurfaceLineLength",pitem) - call json%get(pitem,data%Configuration%Pumps%MudPump2DelayToShutdown) + call json%get(pitem,data%Configuration%Pumps%MudPump2SurfaceLineLength) call json%get(p,"MudPump2DelayToShutdown",pitem) - call json%get(pitem,data%Configuration%Pumps%CementPumpMaximumPressure) + call json%get(pitem,data%Configuration%Pumps%MudPump2DelayToShutdown) call json%get(p,"CementPumpMaximumPressure",pitem) - call json%get(pitem,data%Configuration%Pumps%CementPumpPumpRateChange) + call json%get(pitem,data%Configuration%Pumps%CementPumpMaximumPressure) call json%get(p,"CementPumpPumpRateChange",pitem) - call json%get(pitem,data%Configuration%Pumps%CementPumpSurfaceLineLength) + call json%get(pitem,data%Configuration%Pumps%CementPumpPumpRateChange) call json%get(p,"CementPumpSurfaceLineLength",pitem) - call json%get(pitem,data%Configuration%Pumps%CementPumpDelayToShutdown) + call json%get(pitem,data%Configuration%Pumps%CementPumpSurfaceLineLength) call json%get(p,"CementPumpDelayToShutdown",pitem) - + call json%get(pitem,data%Configuration%Pumps%CementPumpDelayToShutdown) end subroutine diff --git a/CSharp/BasicInputs/RigSpecifications/CPumps.i90 b/CSharp/BasicInputs/RigSpecifications/CPumps.i90 index 2971f18..7e08510 100644 --- a/CSharp/BasicInputs/RigSpecifications/CPumps.i90 +++ b/CSharp/BasicInputs/RigSpecifications/CPumps.i90 @@ -6,56 +6,6 @@ module CPumps public contains -! subroutine PumpsToJson(parent) - -! type(json_value),pointer :: parent -! type(json_core) :: json -! type(json_value),pointer :: p - -! ! 1. create new node -! call json%create_object(p,'Pumps') - -! ! 2. add member of data type to new node -! ! call StringConfigurationToJson(p) -! ! call FormationToJson(p) -! call json%add(p,"MudPump1LinerDiameter",data%Configuration%Pumps%MudPump1LinerDiameter) -! call json%add(p,"MudPump1Stroke",data%Configuration%Pumps%MudPump1Stroke) -! call json%add(p,"MudPump1MechanicalEfficiency",data%Configuration%Pumps%MudPump1MechanicalEfficiency) -! call json%add(p,"MudPump1VolumetricEfficiency",data%Configuration%Pumps%MudPump1VolumetricEfficiency) -! call json%add(p,"MudPump1Output",data%Configuration%Pumps%MudPump1Output) -! call json%add(p,"MudPump1OutputBblStroke",data%Configuration%Pumps%MudPump1OutputBblStroke) -! call json%add(p,"MudPump1Maximum",data%Configuration%Pumps%MudPump1Maximum) -! call json%add(p,"MudPump1ReliefValvePressure",data%Configuration%Pumps%MudPump1ReliefValvePressure) -! call json%add(p,"MudPump2LinerDiameter",data%Configuration%Pumps%MudPump2LinerDiameter) -! call json%add(p,"MudPump2Stroke",data%Configuration%Pumps%MudPump2Stroke) -! call json%add(p,"MudPump2MechanicalEfficiency",data%Configuration%Pumps%MudPump2MechanicalEfficiency) -! ! call json%add(p,"MudPump2VolumetricEfficiency",data%Configuration%Pumps%MudPump2VolumetricEfficiency) -! call json%add(p,"MudPump2Output",data%Configuration%Pumps%MudPump2Output) -! call json%add(p,"MudPump2OutputBblStroke",data%Configuration%Pumps%MudPump2OutputBblStroke) -! call json%add(p,"MudPump2Maximum",data%Configuration%Pumps%MudPump2Maximum) -! call json%add(p,"MudPump2ReliefValvePressure",data%Configuration%Pumps%MudPump2ReliefValvePressure) -! call json%add(p,"CementPumpLinerDiameter",data%Configuration%Pumps%CementPumpLinerDiameter) -! call json%add(p,"CementPumpStroke",data%Configuration%Pumps%CementPumpStroke) -! call json%add(p,"CementPumpMechanicalEfficiency",data%Configuration%Pumps%CementPumpMechanicalEfficiency) -! ! call json%add(p,"CementPumpVolumetricEfficiency",data%Configuration%Pumps%CementPumpVolumetricEfficiency) -! call json%add(p,"CementPumpOutput",data%Configuration%Pumps%CementPumpOutput) -! call json%add(p,"CementPumpOutputBblStroke",data%Configuration%Pumps%CementPumpOutputBblStroke) -! call json%add(p,"CementPumpMaximum",data%Configuration%Pumps%CementPumpMaximum) -! call json%add(p,"CementPumpReliefValvePressure ",data%Configuration%Pumps%CementPumpReliefValvePressure ) -! call json%add(p,"MudPump1ReliefValveIsSet",data%Configuration%Pumps%MudPump1ReliefValveIsSet) -! call json%add(p,"MudPump2ReliefValveIsSet",data%Configuration%Pumps%MudPump2ReliefValveIsSet) -! call json%add(p,"CementPumpReliefValveIsSet",data%Configuration%Pumps%CementPumpReliefValveIsSet) -! ! call json%add(p,"ManualPumpPower",data%Configuration%Pumps%ManualPumpPower) -! ! call json%add(p,"Valve1",data%Configuration%Pumps%Valve1) -! ! call json%add(p,"Valve2",data%Configuration%Pumps%Valve2) -! ! call json%add(p,"Valve3",data%Configuration%Pumps%Valve3) -! ! call json%add(p,"Valve4",data%Configuration%Pumps%Valve4) -! ! call json%add(p,"Valve5",data%Configuration%Pumps%Valve5) - -! ! 3. add new node to parent -! call json%add(parent,p) -! end subroutine - subroutine PumpsFromJson(parent) use json_module,IK =>json_ik type(json_value),pointer :: parent @@ -70,8 +20,6 @@ module CPumps call json%get(pitem,data%Configuration%Pumps%MudPump1Stroke) call json%get(p,"MudPump1MechanicalEfficiency",pitem) call json%get(pitem,data%Configuration%Pumps%MudPump1MechanicalEfficiency) -! call json%get(p,"MudPump1VolumetricEfficiency",pitem) -! call json%get(pitem,data%Configuration%Pumps%MudPump1VolumetricEfficiency) call json%get(p,"MudPump1Output",pitem) call json%get(pitem,data%Configuration%Pumps%MudPump1Output) call json%get(p,"MudPump1OutputBblStroke",pitem) @@ -86,8 +34,6 @@ module CPumps call json%get(pitem,data%Configuration%Pumps%MudPump2Stroke) call json%get(p,"MudPump2MechanicalEfficiency",pitem) call json%get(pitem,data%Configuration%Pumps%MudPump2MechanicalEfficiency) -! call json%get(p,"MudPump2VolumetricEfficiency",pitem) -! call json%get(pitem,data%Configuration%Pumps%MudPump2VolumetricEfficiency) call json%get(p,"MudPump2Output",pitem) call json%get(pitem,data%Configuration%Pumps%MudPump2Output) call json%get(p,"MudPump2OutputBblStroke",pitem) @@ -102,8 +48,6 @@ module CPumps call json%get(pitem,data%Configuration%Pumps%CementPumpStroke) call json%get(p,"CementPumpMechanicalEfficiency",pitem) call json%get(pitem,data%Configuration%Pumps%CementPumpMechanicalEfficiency) -! call json%get(p,"CementPumpVolumetricEfficiency",pitem) -! call json%get(pitem,data%Configuration%Pumps%CementPumpVolumetricEfficiency) call json%get(p,"CementPumpOutput",pitem) call json%get(pitem,data%Configuration%Pumps%CementPumpOutput) call json%get(p,"CementPumpOutputBblStroke",pitem) @@ -119,17 +63,39 @@ module CPumps call json%get(p,"CementPumpReliefValveIsSet",pitem) call json%get(pitem,data%Configuration%Pumps%CementPumpReliefValveIsSet) call json%get(p,"ManualPumpPower",pitem) -! call json%get(pitem,data%Configuration%Pumps%ManualPumpPower) -! call json%get(p,"Valve1",pitem) -! call json%get(pitem,data%Configuration%Pumps%Valve1) -! call json%get(p,"Valve2",pitem) -! call json%get(pitem,data%Configuration%Pumps%Valve2) -! call json%get(p,"Valve3",pitem) -! call json%get(pitem,data%Configuration%Pumps%Valve3) -! call json%get(p,"Valve4",pitem) -! call json%get(pitem,data%Configuration%Pumps%Valve4) -! call json%get(p,"Valve5",pitem) -! call json%get(pitem,data%Configuration%Pumps%Valve5) + +! Newly added + call json%get(p,"MudPump1VolumetricOutput",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump1VolumetricOutput) + call json%get(p,"MudPump2VolumetricOutput",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump2VolumetricOutput) + call json%get(p,"CementPumpVolumetricOutput",pitem) + call json%get(pitem,data%Configuration%Pumps%CementPumpVolumetricOutput) + call json%get(p,"MudPump1MaximumPressure",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump1MaximumPressure) + call json%get(p,"MudPump1PumpRateChange",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump1PumpRateChange) + call json%get(p,"MudPump1SurfaceLineLength",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump1SurfaceLineLength) + call json%get(p,"MudPump1DelayToShutdown",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump1DelayToShutdown) + call json%get(p,"MudPump2MaximumPressure",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump2MaximumPressure) + call json%get(p,"MudPump2PumpRateChange",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump2PumpRateChange) + call json%get(p,"MudPump2SurfaceLineLength",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump2SurfaceLineLength) + call json%get(p,"MudPump2DelayToShutdown",pitem) + call json%get(pitem,data%Configuration%Pumps%MudPump2DelayToShutdown) + call json%get(p,"CementPumpMaximumPressure",pitem) + call json%get(pitem,data%Configuration%Pumps%CementPumpMaximumPressure) + call json%get(p,"CementPumpPumpRateChange",pitem) + call json%get(pitem,data%Configuration%Pumps%CementPumpPumpRateChange) + call json%get(p,"CementPumpSurfaceLineLength",pitem) + call json%get(pitem,data%Configuration%Pumps%CementPumpSurfaceLineLength) + call json%get(p,"CementPumpDelayToShutdown",pitem) + call json%get(pitem,data%Configuration%Pumps%CementPumpDelayToShutdown) + end subroutine diff --git a/CSharp/BasicInputs/RigSpecifications/CPumpsVariables.i90 b/CSharp/BasicInputs/RigSpecifications/CPumpsVariables.i90 index 91dfe99..dcae9a1 100644 --- a/CSharp/BasicInputs/RigSpecifications/CPumpsVariables.i90 +++ b/CSharp/BasicInputs/RigSpecifications/CPumpsVariables.i90 @@ -38,12 +38,13 @@ module CPumpsVariables logical :: MudPump2ReliefValveIsSet logical :: CementPumpReliefValveIsSet - real(8) :: MudPump1VolumetricOutput + real(8) :: MudPump1VolumetricOutput,MudPump2VolumetricOutput,CementPumpVolumetricOutput ! Newly added Real(8) :: MudPump1MaximumPressure,MudPump1PumpRateChange,MudPump1SurfaceLineLength,MudPump1DelayToShutdown Real(8) :: MudPump2MaximumPressure,MudPump2PumpRateChange,MudPump2SurfaceLineLength,MudPump2DelayToShutdown Real(8) :: CementPumpMaximumPressure,CementPumpPumpRateChange,CementPumpSurfaceLineLength,CementPumpDelayToShutdown + End type PumpSpecificationType ! Type(PumpSpecificationType)::PumpsSpecification diff --git a/CSharp/BasicInputs/WellProfile/CWellSurveyData.i90 b/CSharp/BasicInputs/WellProfile/CWellSurveyData.i90 new file mode 100644 index 0000000..d4e22c8 --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CWellSurveyData.i90 @@ -0,0 +1,35 @@ +# 1 "/home/admin/SimulationCore2/CSharp/BasicInputs/WellProfile/CWellSurveyData.f90" +module CWellSurveyData + use CWellSurveyDataVariables + implicit none + public + contains +! integer function SetSurveyData(count, array) +! !DEC$ ATTRIBUTES DLLEXPORT::SetSurveyData +! !DEC$ ATTRIBUTES ALIAS: 'SetSurveyData' :: SetSurveyData +! implicit none +! integer, intent(in) :: count +! integer :: i +! type(CSurveyDataItem), intent(inout), target :: array(count) +! type(CSurveyDataItem), pointer :: item +! WellSurveyData%Count = count +! if(size(WellSurveyData%Items) > 0) then +! deallocate(WellSurveyData%Items) +! end if +! if(count > 0) then +! allocate(WellSurveyData%Items(count)) +! do i = 1, count +! item => array(i) +! WellSurveyData%Items(i)%MeasuredDepth = item%MeasuredDepth +! WellSurveyData%Items(i)%Inclination = item%Inclination +! WellSurveyData%Items(i)%Azimoth = item%Azimoth +! WellSurveyData%Items(i)%TotalVerticalDepth = item%TotalVerticalDepth +! WellSurveyData%Items(i)%X = item%X +! WellSurveyData%Items(i)%Y = item%Y +! WellSurveyData%Items(i)%Z = item%Z +! end do +! end if + +! SetSurveyData = 0 +! end function SetSurveyData +end module CWellSurveyData diff --git a/CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.i90 b/CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.i90 new file mode 100644 index 0000000..cd91055 --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.i90 @@ -0,0 +1,24 @@ +# 1 "/home/admin/SimulationCore2/CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.f90" +module CWellSurveyDataVariables + implicit none + public + +! types + type, bind(c), public :: CSurveyDataItem + real(8) :: MeasuredDepth + real(8) :: Inclination + real(8) :: Azimoth + real(8) :: TotalVerticalDepth + real(8) :: X + real(8) :: Y + real(8) :: Z + end type CSurveyDataItem + + Type :: WellSurveyDataType + integer :: Count = 0 + type(CSurveyDataItem), allocatable :: Items(:) + End Type WellSurveyDataType + +! Type(WellSurveyDataType)::WellSurveyData + contains +end module CWellSurveyDataVariables diff --git a/CSharp/Equipments/ControlPanels/CBopControlPanel.f90 b/CSharp/Equipments/ControlPanels/CBopControlPanel.f90 index fbf07f6..9865669 100644 --- a/CSharp/Equipments/ControlPanels/CBopControlPanel.f90 +++ b/CSharp/Equipments/ControlPanels/CBopControlPanel.f90 @@ -12,8 +12,6 @@ module CBopControlPanel ! 1. get related root call json%get(parent,'BopControl',p) - call json%get(p,'AnnularRegulatorSetControl',pval) - call json%get(pval,data%Equipments%BopControlPanel%AnnularRegulatorSetControl) call json%get(p,'AirMasterValve',pval) call json%get(pval,data%Equipments%BopControlPanel%AirMasterValve) call json%get(p,'ByePassValve',pval) @@ -71,6 +69,8 @@ module CBopControlPanel ! call json%get(p,'LowerRamsStatus',pval) ! call json%get(pval,data%Equipments%BopControlPanel%LowerRamsStatus) + call json%get(p,'AnnularRegulatorSetControl',pval) + call json%get(pval,data%Equipments%BopControlPanel%AnnularRegulatorSetControl) ! 2. get member of data type from node end subroutine @@ -84,8 +84,8 @@ module CBopControlPanel call json%create_object(p,'BopControl') ! call json%add(p,"AnnularRegulatorSetControl",data%Equipments%BopControlPanel%AnnularRegulatorSetControl) - ! call json%add(p,"AirMasterValve",data%Equipments%BopControlPanel%AirMasterValve) - ! call json%add(p,"ByePassValve",data%Equipments%BopControlPanel%ByePassValve) + call json%add(p,"AirMasterValve",data%Equipments%BopControlPanel%AirMasterValve) + call json%add(p,"ByePassValve",data%Equipments%BopControlPanel%ByePassValve) ! call json%add(p,"AnnularValve",data%Equipments%BopControlPanel%AnnularValve) ! call json%add(p,"UpperRamsValve",data%Equipments%BopControlPanel%UpperRamsValve) ! call json%add(p,"MiddleRamsValve",data%Equipments%BopControlPanel%MiddleRamsValve) diff --git a/CSharp/Equipments/ControlPanels/CBopControlPanel.i90 b/CSharp/Equipments/ControlPanels/CBopControlPanel.i90 index de69055..2950c76 100644 --- a/CSharp/Equipments/ControlPanels/CBopControlPanel.i90 +++ b/CSharp/Equipments/ControlPanels/CBopControlPanel.i90 @@ -13,8 +13,6 @@ module CBopControlPanel ! 1. get related root call json%get(parent,'BopControl',p) - call json%get(p,'AnnularRegulatorSetControl',pval) - call json%get(pval,data%Equipments%BopControlPanel%AnnularRegulatorSetControl) call json%get(p,'AirMasterValve',pval) call json%get(pval,data%Equipments%BopControlPanel%AirMasterValve) call json%get(p,'ByePassValve',pval) @@ -72,6 +70,8 @@ module CBopControlPanel ! call json%get(p,'LowerRamsStatus',pval) ! call json%get(pval,data%Equipments%BopControlPanel%LowerRamsStatus) + call json%get(p,'AnnularRegulatorSetControl',pval) + call json%get(pval,data%Equipments%BopControlPanel%AnnularRegulatorSetControl) ! 2. get member of data type from node end subroutine @@ -85,8 +85,8 @@ module CBopControlPanel call json%create_object(p,'BopControl') ! call json%add(p,"AnnularRegulatorSetControl",data%Equipments%BopControlPanel%AnnularRegulatorSetControl) -! call json%add(p,"AirMasterValve",data%Equipments%BopControlPanel%AirMasterValve) -! call json%add(p,"ByePassValve",data%Equipments%BopControlPanel%ByePassValve) + call json%add(p,"AirMasterValve",data%Equipments%BopControlPanel%AirMasterValve) + call json%add(p,"ByePassValve",data%Equipments%BopControlPanel%ByePassValve) ! call json%add(p,"AnnularValve",data%Equipments%BopControlPanel%AnnularValve) ! call json%add(p,"UpperRamsValve",data%Equipments%BopControlPanel%UpperRamsValve) ! call json%add(p,"MiddleRamsValve",data%Equipments%BopControlPanel%MiddleRamsValve) diff --git a/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.i90 b/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.i90 index fc115f4..e62f21b 100644 --- a/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.i90 +++ b/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.f90" +# 1 "/home/admin/SimulationCore2/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.f90" module CBopControlPanelVariables implicit none public diff --git a/CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 b/CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 index a556923..8931649 100644 --- a/CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 +++ b/CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 @@ -13,6 +13,13 @@ module CChokeControlPanel call json%get(parent,'ChokeControl',p) ! 2. get member of data type from node + call json%get(p,'ChokeControlLever',pval) + call json%get(pval,data%Equipments%ChokeControlPanel%ChokeControlLever) + + call json%get(p,'ChokePanelRigAirSwitch',pval) + call json%get(pval,data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) + + call json%get(p,'ChokePanelPumpSelectorSwitch',pval) call json%get(pval,data%Equipments%ChokeControlPanel%ChokePanelPumpSelectorSwitch) call json%get(p,'ChokePanelStrokeResetSwitch',pval) @@ -21,10 +28,7 @@ module CChokeControlPanel call json%get(pval,data%Equipments%ChokeControlPanel%ChokeSelectorSwitch) call json%get(p,'ChokeRateControlKnob',pval) call json%get(pval,data%Equipments%ChokeControlPanel%ChokeRateControlKnob) - call json%get(p,'ChokeControlLever',pval) - call json%get(pval,data%Equipments%ChokeControlPanel%ChokeControlLever) - call json%get(p,'ChokePanelRigAirSwitch',pval) - call json%get(pval,data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) + ! call json%get(p,'EnableAutoChoke',pval) ! call json%get(pval,data%Equipments%ChokeControlPanel%EnableAutoChoke) ! call json%get(p,'StandPipePressure',pval) @@ -51,12 +55,12 @@ module CChokeControlPanel ! 1. create new node call json%create_object(p,'ChokeControl') - ! call json%add(p,"ChokePanelPumpSelectorSwitch",data%Equipments%ChokeControlPanel%ChokePanelPumpSelectorSwitch) + call json%add(p,"ChokePanelPumpSelectorSwitch",data%Equipments%ChokeControlPanel%ChokePanelPumpSelectorSwitch) ! call json%add(p,"ChokePanelStrokeResetSwitch",data%Equipments%ChokeControlPanel%ChokePanelStrokeResetSwitch) - ! call json%add(p,"ChokeSelectorSwitch",data%Equipments%ChokeControlPanel%ChokeSelectorSwitch) + call json%add(p,"ChokeSelectorSwitch",data%Equipments%ChokeControlPanel%ChokeSelectorSwitch) ! call json%add(p,"ChokeRateControlKnob",data%Equipments%ChokeControlPanel%ChokeRateControlKnob) - ! call json%add(p,"ChokeControlLever",data%Equipments%ChokeControlPanel%ChokeControlLever) - ! call json%add(p,"ChokePanelRigAirSwitch",data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) + call json%add(p,"ChokeControlLever",data%Equipments%ChokeControlPanel%ChokeControlLever) + call json%add(p,"ChokePanelRigAirSwitch",data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) ! call json%add(p,"EnableAutoChoke",data%Equipments%ChokeControlPanel%EnableAutoChoke) call json%add(p,"StandPipePressure",data%Equipments%ChokeControlPanel%StandPipePressure) call json%add(p,"CasingPressure",data%Equipments%ChokeControlPanel%CasingPressure) diff --git a/CSharp/Equipments/ControlPanels/CChokeControlPanel.i90 b/CSharp/Equipments/ControlPanels/CChokeControlPanel.i90 index 4a4fa45..902d25e 100644 --- a/CSharp/Equipments/ControlPanels/CChokeControlPanel.i90 +++ b/CSharp/Equipments/ControlPanels/CChokeControlPanel.i90 @@ -14,6 +14,13 @@ module CChokeControlPanel call json%get(parent,'ChokeControl',p) ! 2. get member of data type from node + call json%get(p,'ChokeControlLever',pval) + call json%get(pval,data%Equipments%ChokeControlPanel%ChokeControlLever) + + call json%get(p,'ChokePanelRigAirSwitch',pval) + call json%get(pval,data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) + + call json%get(p,'ChokePanelPumpSelectorSwitch',pval) call json%get(pval,data%Equipments%ChokeControlPanel%ChokePanelPumpSelectorSwitch) call json%get(p,'ChokePanelStrokeResetSwitch',pval) @@ -22,10 +29,7 @@ module CChokeControlPanel call json%get(pval,data%Equipments%ChokeControlPanel%ChokeSelectorSwitch) call json%get(p,'ChokeRateControlKnob',pval) call json%get(pval,data%Equipments%ChokeControlPanel%ChokeRateControlKnob) - call json%get(p,'ChokeControlLever',pval) - call json%get(pval,data%Equipments%ChokeControlPanel%ChokeControlLever) - call json%get(p,'ChokePanelRigAirSwitch',pval) - call json%get(pval,data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) + ! call json%get(p,'EnableAutoChoke',pval) ! call json%get(pval,data%Equipments%ChokeControlPanel%EnableAutoChoke) ! call json%get(p,'StandPipePressure',pval) @@ -52,12 +56,12 @@ module CChokeControlPanel ! 1. create new node call json%create_object(p,'ChokeControl') -! call json%add(p,"ChokePanelPumpSelectorSwitch",data%Equipments%ChokeControlPanel%ChokePanelPumpSelectorSwitch) + call json%add(p,"ChokePanelPumpSelectorSwitch",data%Equipments%ChokeControlPanel%ChokePanelPumpSelectorSwitch) ! call json%add(p,"ChokePanelStrokeResetSwitch",data%Equipments%ChokeControlPanel%ChokePanelStrokeResetSwitch) -! call json%add(p,"ChokeSelectorSwitch",data%Equipments%ChokeControlPanel%ChokeSelectorSwitch) + call json%add(p,"ChokeSelectorSwitch",data%Equipments%ChokeControlPanel%ChokeSelectorSwitch) ! call json%add(p,"ChokeRateControlKnob",data%Equipments%ChokeControlPanel%ChokeRateControlKnob) -! call json%add(p,"ChokeControlLever",data%Equipments%ChokeControlPanel%ChokeControlLever) -! call json%add(p,"ChokePanelRigAirSwitch",data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) + call json%add(p,"ChokeControlLever",data%Equipments%ChokeControlPanel%ChokeControlLever) + call json%add(p,"ChokePanelRigAirSwitch",data%Equipments%ChokeControlPanel%ChokePanelRigAirSwitch) ! call json%add(p,"EnableAutoChoke",data%Equipments%ChokeControlPanel%EnableAutoChoke) call json%add(p,"StandPipePressure",data%Equipments%ChokeControlPanel%StandPipePressure) call json%add(p,"CasingPressure",data%Equipments%ChokeControlPanel%CasingPressure) diff --git a/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.i90 b/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.i90 index 94b172b..48c8eba 100644 --- a/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.i90 +++ b/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.f90" +# 1 "/home/admin/SimulationCore2/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.f90" module CChokeControlPanelVariables implicit none type, public :: ChokeControlPanelType diff --git a/CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 b/CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 index 2bc7456..8688b0c 100644 --- a/CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 +++ b/CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 @@ -9,9 +9,37 @@ module CDataDisplayConsole type(json_value),pointer :: parent type(json_core) :: json type(json_value),pointer :: p,pval + ! type(json_file)::parent ! 1. get related root call json%get(parent,'DataDisplay',p) + + call json%get(p,'ResetWob',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%ResetWob) + + call json%get(p,'TotalStrokeCounterResetSwitch',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%TotalStrokeCounterResetSwitch) + + call json%get(p,'MVTSetAlarmSwitch',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmSwitch) + + call json%get(p,'MFFISetAlarmSwitch',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmSwitch) + + + ! Alarms Upper - lower bounds + call json%get(p,'MFFIAlarmLow',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MFFIAlarmLow) + + call json%get(p,'MFFIAlarmHigh',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MFFIAlarmHigh) + + call json%get(p,'MVTAlarmLow',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MVTAlarmLow) + + call json%get(p,'MVTAlarmHigh',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MVTAlarmHigh) + ! 2. get member of data type from node call json%get(p,'TripTankSetAlarmLow',pval) @@ -28,16 +56,14 @@ module CDataDisplayConsole call json%get(pval,data%Equipments%DataDisplayConsole%TripTankHornSwitch) call json%get(p,'AcidGasDetectionHornSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%AcidGasDetectionHornSwitch) - call json%get(p,'TotalStrokeCounterResetSwitch',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%TotalStrokeCounterResetSwitch) + call json%get(p,'DrillingTrippingSelectorSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%DrillingTrippingSelectorSwitch) call json%get(p,'MVTSetAlarmLowKnob',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmLowKnob) call json%get(p,'MVTSetAlarmHighKnob',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmHighKnob) - call json%get(p,'MVTSetAlarmSwitch',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmSwitch) + call json%get(p,'MudTank1Switch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MudTank1Switch) call json%get(p,'MudTank2Switch',pval) @@ -68,15 +94,18 @@ module CDataDisplayConsole call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmLowKnob) call json%get(p,'MFFISetAlarmHighKnob',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmHighKnob) - call json%get(p,'MFFISetAlarmSwitch',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmSwitch) + call json%get(p,'MFFIPowerSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MFFIPowerSwitch) call json%get(p,'MFFIHornSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MFFIHornSwitch) - call json%get(p,'ResetWob',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%ResetWob) + call json%get(p,'Clutch',pval) + + + + ! call jsonfile%get('Equipments.DataDisplay.MVTAlarmHigh',data%Equipments%DataDisplayConsole%MVTAlarmHigh,found) + end subroutine subroutine DataDisplayConsoleToJson(parent) @@ -127,8 +156,15 @@ module CDataDisplayConsole call json%add(p,"Buzzer2",data%Equipments%DataDisplayConsole%Buzzer2) call json%add(p,"Buzzer3",data%Equipments%DataDisplayConsole%Buzzer3) call json%add(p,"Buzzer4",data%Equipments%DataDisplayConsole%Buzzer4) - + call json%add(p,"MFFIAlarmLow",data%Equipments%DataDisplayConsole%MFFIAlarmLow) + call json%add(p,"MFFIAlarmHigh",data%Equipments%DataDisplayConsole%MFFIAlarmHigh) + call json%add(p,"MVTAlarmLow",data%Equipments%DataDisplayConsole%MVTAlarmLow) + call json%add(p,"MVTAlarmHigh",data%Equipments%DataDisplayConsole%MVTAlarmHigh) + + call json%add(p,"MFFISetAlarmSwitch",data%Equipments%DataDisplayConsole%MFFISetAlarmSwitch) + call json%add(p,"MVTSetAlarmSwitch",data%Equipments%DataDisplayConsole%MVTSetAlarmSwitch) + call json%add(parent,p) end subroutine diff --git a/CSharp/Equipments/ControlPanels/CDataDisplayConsole.i90 b/CSharp/Equipments/ControlPanels/CDataDisplayConsole.i90 index 75fdbba..5a75731 100644 --- a/CSharp/Equipments/ControlPanels/CDataDisplayConsole.i90 +++ b/CSharp/Equipments/ControlPanels/CDataDisplayConsole.i90 @@ -10,9 +10,37 @@ module CDataDisplayConsole type(json_value),pointer :: parent type(json_core) :: json type(json_value),pointer :: p,pval +! type(json_file)::parent ! 1. get related root call json%get(parent,'DataDisplay',p) + + call json%get(p,'ResetWob',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%ResetWob) + + call json%get(p,'TotalStrokeCounterResetSwitch',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%TotalStrokeCounterResetSwitch) + + call json%get(p,'MVTSetAlarmSwitch',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmSwitch) + + call json%get(p,'MFFISetAlarmSwitch',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmSwitch) + + +! Alarms Upper - lower bounds + call json%get(p,'MFFIAlarmLow',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MFFIAlarmLow) + + call json%get(p,'MFFIAlarmHigh',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MFFIAlarmHigh) + + call json%get(p,'MVTAlarmLow',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MVTAlarmLow) + + call json%get(p,'MVTAlarmHigh',pval) + call json%get(pval,data%Equipments%DataDisplayConsole%MVTAlarmHigh) + ! 2. get member of data type from node call json%get(p,'TripTankSetAlarmLow',pval) @@ -29,16 +57,14 @@ module CDataDisplayConsole call json%get(pval,data%Equipments%DataDisplayConsole%TripTankHornSwitch) call json%get(p,'AcidGasDetectionHornSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%AcidGasDetectionHornSwitch) - call json%get(p,'TotalStrokeCounterResetSwitch',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%TotalStrokeCounterResetSwitch) + call json%get(p,'DrillingTrippingSelectorSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%DrillingTrippingSelectorSwitch) call json%get(p,'MVTSetAlarmLowKnob',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmLowKnob) call json%get(p,'MVTSetAlarmHighKnob',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmHighKnob) - call json%get(p,'MVTSetAlarmSwitch',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%MVTSetAlarmSwitch) + call json%get(p,'MudTank1Switch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MudTank1Switch) call json%get(p,'MudTank2Switch',pval) @@ -69,15 +95,18 @@ module CDataDisplayConsole call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmLowKnob) call json%get(p,'MFFISetAlarmHighKnob',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmHighKnob) - call json%get(p,'MFFISetAlarmSwitch',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%MFFISetAlarmSwitch) + call json%get(p,'MFFIPowerSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MFFIPowerSwitch) call json%get(p,'MFFIHornSwitch',pval) call json%get(pval,data%Equipments%DataDisplayConsole%MFFIHornSwitch) - call json%get(p,'ResetWob',pval) - call json%get(pval,data%Equipments%DataDisplayConsole%ResetWob) + call json%get(p,'Clutch',pval) + + + +! call jsonfile%get('Equipments.DataDisplay.MVTAlarmHigh',data%Equipments%DataDisplayConsole%MVTAlarmHigh,found) + end subroutine subroutine DataDisplayConsoleToJson(parent) @@ -128,8 +157,15 @@ module CDataDisplayConsole call json%add(p,"Buzzer2",data%Equipments%DataDisplayConsole%Buzzer2) call json%add(p,"Buzzer3",data%Equipments%DataDisplayConsole%Buzzer3) call json%add(p,"Buzzer4",data%Equipments%DataDisplayConsole%Buzzer4) - + call json%add(p,"MFFIAlarmLow",data%Equipments%DataDisplayConsole%MFFIAlarmLow) + call json%add(p,"MFFIAlarmHigh",data%Equipments%DataDisplayConsole%MFFIAlarmHigh) + call json%add(p,"MVTAlarmLow",data%Equipments%DataDisplayConsole%MVTAlarmLow) + call json%add(p,"MVTAlarmHigh",data%Equipments%DataDisplayConsole%MVTAlarmHigh) + + call json%add(p,"MFFISetAlarmSwitch",data%Equipments%DataDisplayConsole%MFFISetAlarmSwitch) + call json%add(p,"MVTSetAlarmSwitch",data%Equipments%DataDisplayConsole%MVTSetAlarmSwitch) + call json%add(parent,p) end subroutine diff --git a/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 b/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 index 6b3ce09..c5f88c0 100644 --- a/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 +++ b/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 @@ -46,6 +46,13 @@ module CDataDisplayConsoleVariables logical :: MFFIFillSPMSelectorSwitch real(8) :: MFFISetAlarmLowKnob real(8) :: MFFISetAlarmHighKnob + + real(8) :: MFFIAlarmLow + real(8) :: MFFIAlarmHigh + + real(8) :: MVTAlarmLow + real(8) :: MVTAlarmHigh + integer :: MFFISetAlarmSwitch logical :: MFFIPowerSwitch logical :: MFFIHornSwitch diff --git a/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.i90 b/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.i90 index 6c39f45..f52c40f 100644 --- a/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.i90 +++ b/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.i90 @@ -47,6 +47,13 @@ module CDataDisplayConsoleVariables logical :: MFFIFillSPMSelectorSwitch real(8) :: MFFISetAlarmLowKnob real(8) :: MFFISetAlarmHighKnob + + real(8) :: MFFIAlarmLow + real(8) :: MFFIAlarmHigh + + real(8) :: MVTAlarmLow + real(8) :: MVTAlarmHigh + integer :: MFFISetAlarmSwitch logical :: MFFIPowerSwitch logical :: MFFIHornSwitch diff --git a/CSharp/Equipments/ControlPanels/CDrillingConsole.f90 b/CSharp/Equipments/ControlPanels/CDrillingConsole.f90 index 27d4489..78d0fbc 100644 --- a/CSharp/Equipments/ControlPanels/CDrillingConsole.f90 +++ b/CSharp/Equipments/ControlPanels/CDrillingConsole.f90 @@ -24,10 +24,6 @@ module CDrillingConsole if ( .not. found ) call logg(4,"Not found: EmergencySwitch") call jsonfile%get('Equipments.Drilling.RTTorqueLimitKnob',data%Equipments%DrillingConsole%RTTorqueLimitKnob,found) if ( .not. found ) call logg(4,"Not found: RTTorqueLimitKnob") - call jsonfile%get('Equipments.Drilling.MP1CPSwitchI',data%Equipments%DrillingConsole%MP1CPSwitchI,found) - if ( .not. found ) call logg(4,"Not found: MP1CPSwitchI") - call jsonfile%get('Equipments.Drilling.MP1CPSwitchT',data%Equipments%DrillingConsole%MP1CPSwitchT,found) - if ( .not. found ) call logg(4,"Not found: MP1CPSwitchT") call jsonfile%get('Equipments.Drilling.MP1CPSwitch',data%Equipments%DrillingConsole%MP1CPSwitch,found) if ( .not. found ) call logg(4,"Not found: MP1CPSwitch") call jsonfile%get('Equipments.Drilling.MP1ThrottleUpdate',data%Equipments%DrillingConsole%MP1ThrottleUpdate,found) @@ -36,10 +32,6 @@ module CDrillingConsole if ( .not. found ) then call logg(4,"Not found: MP1Throttle") endif - call jsonfile%get('Equipments.Drilling.MP2SwitchI',data%Equipments%DrillingConsole%MP2SwitchI,found) - if ( .not. found ) call logg(4,"Not found: MP2SwitchI") - call jsonfile%get('Equipments.Drilling.MP2SwitchT',data%Equipments%DrillingConsole%MP2SwitchT,found) - if ( .not. found ) call logg(4,"Not found: MP2SwitchT") call jsonfile%get('Equipments.Drilling.MP2Switch',data%Equipments%DrillingConsole%MP2Switch,found) if ( .not. found ) call logg(4,"Not found: MP2Switch") call jsonfile%get('Equipments.Drilling.MP2ThrottleUpdate',data%Equipments%DrillingConsole%MP2ThrottleUpdate,found) @@ -48,8 +40,8 @@ module CDrillingConsole if ( .not. found ) then call logg(4,"Not found: MP2Throttle") endif - ! call jsonfile%get('Equipments.Drilling.DWSwitch',data%Equipments%DrillingConsole%DWSwitch,found) - ! if ( .not. found ) call logg(4,"Not found: DWSwitch") + call jsonfile%get('Equipments.Drilling.DWSwitch',data%Equipments%DrillingConsole%DWSwitch,found) + if ( .not. found ) call logg(4,"Not found: DWSwitch") call jsonfile%get('Equipments.Drilling.DWThrottle',data%Equipments%DrillingConsole%DWThrottle,found) if ( .not. found ) call logg(4,"Not found: DWThrottle") call jsonfile%get('Equipments.Drilling.RTSwitch',data%Equipments%DrillingConsole%RTSwitch,found) @@ -132,11 +124,11 @@ module CDrillingConsole ! call jsonfile%destroy() - data%Equipments%DrillingConsole%DWSwitch = -1 + ! data%Equipments%DrillingConsole%DWSwitch = -1 data%Equipments%DrillingConsole%AssignmentSwitch = 1 - data%Equipments%DrillingConsole%MP1CPSwitch = -1 - data%Equipments%DrillingConsole%MP2Switch = -1 - data%Equipments%DrillingConsole%RTSwitch = -1 + ! data%Equipments%DrillingConsole%MP1CPSwitch = -1 + ! data%Equipments%DrillingConsole%MP2Switch = -1 + ! data%Equipments%DrillingConsole%RTSwitch = -1 end subroutine subroutine DrillingConsoleToJson(parent) @@ -179,6 +171,18 @@ module CDrillingConsole call json%add(p,"UnlatchPipeLED",data%Equipments%DrillingConsole%UnlatchPipeLED) call json%add(p,"SwingLed",data%Equipments%DrillingConsole%SwingLed) call json%add(p,"FillMouseHoleLed",data%Equipments%DrillingConsole%FillMouseHoleLed) + call json%add(p,"MP1CPSwitch",data%Equipments%DrillingConsole%MP1CPSwitch) + call json%add(p,"MP2Switch",data%Equipments%DrillingConsole%MP2Switch) + call json%add(p,"DWSwitch",data%Equipments%DrillingConsole%DWSwitch) + call json%add(p,"RTSwitch",data%Equipments%DrillingConsole%RTSwitch) + + call json%add(p,"RTSwitch",data%Equipments%DrillingConsole%RTSwitch) + + ! Trottle ------------- + call json%add(p,"MP1Throttle",data%Equipments%DrillingConsole%MP1Throttle) + call json%add(p,"MP2Throttle",data%Equipments%DrillingConsole%MP2Throttle) + call json%add(p,"RTThrottle",data%Equipments%DrillingConsole%RTThrottle) + call json%add(p,"DWThrottle",data%Equipments%DrillingConsole%DWThrottle) call json%add(parent,p) end subroutine diff --git a/CSharp/Equipments/ControlPanels/CDrillingConsole.i90 b/CSharp/Equipments/ControlPanels/CDrillingConsole.i90 index cc2234e..a433070 100644 --- a/CSharp/Equipments/ControlPanels/CDrillingConsole.i90 +++ b/CSharp/Equipments/ControlPanels/CDrillingConsole.i90 @@ -25,10 +25,6 @@ module CDrillingConsole if ( .not. found ) call logg(4,"Not found: EmergencySwitch") call jsonfile%get('Equipments.Drilling.RTTorqueLimitKnob',data%Equipments%DrillingConsole%RTTorqueLimitKnob,found) if ( .not. found ) call logg(4,"Not found: RTTorqueLimitKnob") - call jsonfile%get('Equipments.Drilling.MP1CPSwitchI',data%Equipments%DrillingConsole%MP1CPSwitchI,found) - if ( .not. found ) call logg(4,"Not found: MP1CPSwitchI") - call jsonfile%get('Equipments.Drilling.MP1CPSwitchT',data%Equipments%DrillingConsole%MP1CPSwitchT,found) - if ( .not. found ) call logg(4,"Not found: MP1CPSwitchT") call jsonfile%get('Equipments.Drilling.MP1CPSwitch',data%Equipments%DrillingConsole%MP1CPSwitch,found) if ( .not. found ) call logg(4,"Not found: MP1CPSwitch") call jsonfile%get('Equipments.Drilling.MP1ThrottleUpdate',data%Equipments%DrillingConsole%MP1ThrottleUpdate,found) @@ -37,10 +33,6 @@ module CDrillingConsole if ( .not. found ) then call logg(4,"Not found: MP1Throttle") endif - call jsonfile%get('Equipments.Drilling.MP2SwitchI',data%Equipments%DrillingConsole%MP2SwitchI,found) - if ( .not. found ) call logg(4,"Not found: MP2SwitchI") - call jsonfile%get('Equipments.Drilling.MP2SwitchT',data%Equipments%DrillingConsole%MP2SwitchT,found) - if ( .not. found ) call logg(4,"Not found: MP2SwitchT") call jsonfile%get('Equipments.Drilling.MP2Switch',data%Equipments%DrillingConsole%MP2Switch,found) if ( .not. found ) call logg(4,"Not found: MP2Switch") call jsonfile%get('Equipments.Drilling.MP2ThrottleUpdate',data%Equipments%DrillingConsole%MP2ThrottleUpdate,found) @@ -49,8 +41,8 @@ module CDrillingConsole if ( .not. found ) then call logg(4,"Not found: MP2Throttle") endif -! call jsonfile%get('Equipments.Drilling.DWSwitch',data%Equipments%DrillingConsole%DWSwitch,found) -! if ( .not. found ) call logg(4,"Not found: DWSwitch") + call jsonfile%get('Equipments.Drilling.DWSwitch',data%Equipments%DrillingConsole%DWSwitch,found) + if ( .not. found ) call logg(4,"Not found: DWSwitch") call jsonfile%get('Equipments.Drilling.DWThrottle',data%Equipments%DrillingConsole%DWThrottle,found) if ( .not. found ) call logg(4,"Not found: DWThrottle") call jsonfile%get('Equipments.Drilling.RTSwitch',data%Equipments%DrillingConsole%RTSwitch,found) @@ -133,11 +125,11 @@ module CDrillingConsole ! call jsonfile%destroy() - data%Equipments%DrillingConsole%DWSwitch = -1 +! data%Equipments%DrillingConsole%DWSwitch = -1 data%Equipments%DrillingConsole%AssignmentSwitch = 1 - data%Equipments%DrillingConsole%MP1CPSwitch = -1 - data%Equipments%DrillingConsole%MP2Switch = -1 - data%Equipments%DrillingConsole%RTSwitch = -1 +! data%Equipments%DrillingConsole%MP1CPSwitch = -1 +! data%Equipments%DrillingConsole%MP2Switch = -1 +! data%Equipments%DrillingConsole%RTSwitch = -1 end subroutine subroutine DrillingConsoleToJson(parent) @@ -180,6 +172,18 @@ module CDrillingConsole call json%add(p,"UnlatchPipeLED",data%Equipments%DrillingConsole%UnlatchPipeLED) call json%add(p,"SwingLed",data%Equipments%DrillingConsole%SwingLed) call json%add(p,"FillMouseHoleLed",data%Equipments%DrillingConsole%FillMouseHoleLed) + call json%add(p,"MP1CPSwitch",data%Equipments%DrillingConsole%MP1CPSwitch) + call json%add(p,"MP2Switch",data%Equipments%DrillingConsole%MP2Switch) + call json%add(p,"DWSwitch",data%Equipments%DrillingConsole%DWSwitch) + call json%add(p,"RTSwitch",data%Equipments%DrillingConsole%RTSwitch) + + call json%add(p,"RTSwitch",data%Equipments%DrillingConsole%RTSwitch) + +! Trottle ------------- + call json%add(p,"MP1Throttle",data%Equipments%DrillingConsole%MP1Throttle) + call json%add(p,"MP2Throttle",data%Equipments%DrillingConsole%MP2Throttle) + call json%add(p,"RTThrottle",data%Equipments%DrillingConsole%RTThrottle) + call json%add(p,"DWThrottle",data%Equipments%DrillingConsole%DWThrottle) call json%add(parent,p) end subroutine diff --git a/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 b/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 index ef8dcae..984bcc2 100644 --- a/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 +++ b/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 @@ -9,14 +9,14 @@ module CDrillingConsoleVariables integer :: AssignmentSwitch logical :: EmergencySwitch real(8) :: RTTorqueLimitKnob - integer :: MP1CPSwitchI = 0 !for not turning on pump1 on simulation start - integer :: MP1CPSwitchT !for not turning on pump1 on simulation start + ! integer :: MP1CPSwitchI = 0 !for not turning on pump1 on simulation start + ! integer :: MP1CPSwitchT !for not turning on pump1 on simulation start integer :: MP1CPSwitch logical :: MP1ThrottleUpdate = .false. real(8) :: MP1Throttle = -1.0 - integer :: MP2SwitchI = 0 !for not turning on pump2 on simulation start - logical :: MP2SwitchT !for not turning on pump2 on simulation start - logical :: MP2Switch + ! integer :: MP2SwitchI = 0 !for not turning on pump2 on simulation start + ! logical :: MP2SwitchT !for not turning on pump2 on simulation start + integer :: MP2Switch logical :: MP2ThrottleUpdate = .false. real(8) :: MP2Throttle = -1.0 integer :: DWSwitch diff --git a/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.i90 b/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.i90 index ea1b61c..a732f40 100644 --- a/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.i90 +++ b/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.i90 @@ -10,14 +10,14 @@ module CDrillingConsoleVariables integer :: AssignmentSwitch logical :: EmergencySwitch real(8) :: RTTorqueLimitKnob - integer :: MP1CPSwitchI = 0 !for not turning on pump1 on simulation start - integer :: MP1CPSwitchT !for not turning on pump1 on simulation start +! integer :: MP1CPSwitchI = 0 !for not turning on pump1 on simulation start +! integer :: MP1CPSwitchT !for not turning on pump1 on simulation start integer :: MP1CPSwitch logical :: MP1ThrottleUpdate = .false. real(8) :: MP1Throttle = -1.0 - integer :: MP2SwitchI = 0 !for not turning on pump2 on simulation start - logical :: MP2SwitchT !for not turning on pump2 on simulation start - logical :: MP2Switch +! integer :: MP2SwitchI = 0 !for not turning on pump2 on simulation start +! logical :: MP2SwitchT !for not turning on pump2 on simulation start + integer :: MP2Switch logical :: MP2ThrottleUpdate = .false. real(8) :: MP2Throttle = -1.0 integer :: DWSwitch diff --git a/CSharp/Equipments/ControlPanels/CHookVariables.i90 b/CSharp/Equipments/ControlPanels/CHookVariables.i90 index 8e080c8..0838033 100644 --- a/CSharp/Equipments/ControlPanels/CHookVariables.i90 +++ b/CSharp/Equipments/ControlPanels/CHookVariables.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/Equipments/ControlPanels/CHookVariables.f90" +# 1 "/home/admin/SimulationCore2/CSharp/Equipments/ControlPanels/CHookVariables.f90" module CHookVariables !**use CRealEventHandlerCollection ! use CHookActions diff --git a/CSharp/Equipments/DrillWatch/CDrillWatchVariables.i90 b/CSharp/Equipments/DrillWatch/CDrillWatchVariables.i90 index e2e1d7e..29b9379 100644 --- a/CSharp/Equipments/DrillWatch/CDrillWatchVariables.i90 +++ b/CSharp/Equipments/DrillWatch/CDrillWatchVariables.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/Equipments/DrillWatch/CDrillWatchVariables.f90" +# 1 "/home/admin/SimulationCore2/CSharp/Equipments/DrillWatch/CDrillWatchVariables.f90" module CDrillWatchVariables implicit none diff --git a/CSharp/OperationScenarios/Common/COperationScenariosMain.f90 b/CSharp/OperationScenarios/Common/COperationScenariosMain.f90 index a8995eb..33bda44 100644 --- a/CSharp/OperationScenarios/Common/COperationScenariosMain.f90 +++ b/CSharp/OperationScenarios/Common/COperationScenariosMain.f90 @@ -160,12 +160,10 @@ module COperationScenariosMain ! end subroutine subroutine Kelly_ConnectionNothing - ! use CSwingEnumVariables - ! use CSlipsEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -211,18 +209,11 @@ module COperationScenariosMain end subroutine Kelly_ConnectionNothing - - - - subroutine Kelly_ConnectionString - ! use CSwingEnumVariables - ! use CSlipsEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables - ! use CTongEnumVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -277,17 +268,14 @@ module COperationScenariosMain end subroutine Kelly_ConnectionString - - - subroutine Kelly_ConnectionSingle ! use CSwingEnumVariables ! use CSlipsEnumVariables ! use CTongEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -356,13 +344,10 @@ module COperationScenariosMain end subroutine Kelly_ConnectionSingle subroutine Elevator_ConnectionNothing - ! use CSwingEnumVariables - ! use CSlipsEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables - ! use CKellyEnumVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -376,27 +361,6 @@ module COperationScenariosMain call sleep(1) - !TODO: possibly goto a position to activate swing - - !! first goto mouse hole - !call Set_Swing(SWING_MOUSE_HOLE_BEGIN) - !!@call UpdateUnity() - !loop2: do - ! if(Get_Swing() == SWING_MOUSE_HOLE_END) exit loop2 - ! call sleepqq(100) - !enddo loop2 - !call sleep(1) - ! - !! then goto rat hole - !call Set_Swing(SWING_RAT_HOLE_BEGIN) - !!@call UpdateUnity() - !loop3: do - ! if(Get_Swing() == SWING_RAT_HOLE_END) exit loop3 - ! call sleepqq(100) - !enddo loop3 - !call sleep(1) - - ! kelly back call Set_Kelly(KELLY_REMOVE) call sleepqq(100) @@ -425,8 +389,6 @@ module COperationScenariosMain endif call sleepqq(100) - - ! move to final hook height call Update_HookHeight_From_Snapshot() call sleep(3) diff --git a/CSharp/OperationScenarios/Common/COperationScenariosMain.i90 b/CSharp/OperationScenarios/Common/COperationScenariosMain.i90 index 071dd61..afd07c2 100644 --- a/CSharp/OperationScenarios/Common/COperationScenariosMain.i90 +++ b/CSharp/OperationScenarios/Common/COperationScenariosMain.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/Common/COperationScenariosMain.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Common/COperationScenariosMain.f90" module COperationScenariosMain use CIActionReference implicit none @@ -161,12 +161,10 @@ module COperationScenariosMain ! end subroutine subroutine Kelly_ConnectionNothing -! use CSwingEnumVariables -! use CSlipsEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -212,18 +210,11 @@ module COperationScenariosMain end subroutine Kelly_ConnectionNothing - - - - subroutine Kelly_ConnectionString -! use CSwingEnumVariables -! use CSlipsEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables -! use CTongEnumVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -278,17 +269,14 @@ module COperationScenariosMain end subroutine Kelly_ConnectionString - - - subroutine Kelly_ConnectionSingle ! use CSwingEnumVariables ! use CSlipsEnumVariables ! use CTongEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -357,13 +345,10 @@ module COperationScenariosMain end subroutine Kelly_ConnectionSingle subroutine Elevator_ConnectionNothing -! use CSwingEnumVariables -! use CSlipsEnumVariables use UnitySignalVariables - use UnitySignalsModule + use UnitySignalsModule use CHook - use SimulationVariables -! use CKellyEnumVariables + use SimulationVariables implicit none call Set_HookHeight(75.0) @@ -377,27 +362,6 @@ module COperationScenariosMain call sleep(1) -!TODO: possibly goto a position to activate swing - -!! first goto mouse hole -!call Set_Swing(SWING_MOUSE_HOLE_BEGIN) -!!@call UpdateUnity() -!loop2: do -! if(Get_Swing() == SWING_MOUSE_HOLE_END) exit loop2 -! call sleepqq(100) -!enddo loop2 -!call sleep(1) -! -!! then goto rat hole -!call Set_Swing(SWING_RAT_HOLE_BEGIN) -!!@call UpdateUnity() -!loop3: do -! if(Get_Swing() == SWING_RAT_HOLE_END) exit loop3 -! call sleepqq(100) -!enddo loop3 -!call sleep(1) - -! kelly back call Set_Kelly(KELLY_REMOVE) call sleepqq(100) @@ -426,8 +390,6 @@ module COperationScenariosMain endif call sleepqq(100) - - ! move to final hook height call Update_HookHeight_From_Snapshot() call sleep(3) diff --git a/CSharp/OperationScenarios/Common/OperationScenarios.f90 b/CSharp/OperationScenarios/Common/OperationScenarios.f90 index 7603bf1..8804898 100644 --- a/CSharp/OperationScenarios/Common/OperationScenarios.f90 +++ b/CSharp/OperationScenarios/Common/OperationScenarios.f90 @@ -70,29 +70,15 @@ module OperationScenariosModule subroutine Evaluate_KellyConnection() implicit none if (data%Configuration%Hoisting%DriveType == TopDrive_DriveType) then -#ifdef OST - print*, 'Evaluate_KellyConnection=TopDrive' -#endif + #ifdef OST + print*, 'Evaluate_KellyConnection=TopDrive' + #endif endif if (data%Configuration%Hoisting%DriveType == Kelly_DriveType) then -#ifdef OST - print*, 'Evaluate_KellyConnection=Kelly' -#endif + #ifdef OST + print*, 'Evaluate_KellyConnection=Kelly' + #endif - !!OPERATION-CODE=4 - !if (Get_OperationCondition() == OPERATION_DRILL .and.& - ! Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& - ! Get_Swing() == SWING_MOUSE_HOLE_END .and.& - ! Get_TongNotification() .and.& - ! Get_FillMouseHoleLed() == .false. .and.& - ! Get_Tong() == TONG_BREAKOUT_END) then - ! - ! call Set_FillMouseHoleLed(.true.) - ! return - !end if - - - !OPERATION-CODE=1 if (Get_OperationCondition() == OPERATION_DRILL .and.& !Get_JointConnectionPossible() .and.& diff --git a/CSharp/OperationScenarios/Common/OperationScenarios.i90 b/CSharp/OperationScenarios/Common/OperationScenarios.i90 index 045cd10..9dd0a5a 100644 --- a/CSharp/OperationScenarios/Common/OperationScenarios.i90 +++ b/CSharp/OperationScenarios/Common/OperationScenarios.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/Common/OperationScenarios.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Common/OperationScenarios.f90" module OperationScenariosModule !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! Paseted From ....Variables.f90 @@ -71,27 +71,15 @@ module OperationScenariosModule subroutine Evaluate_KellyConnection() implicit none if (data%Configuration%Hoisting%DriveType == TopDrive_DriveType) then -# 75 - + #ifdef OST + print*, 'Evaluate_KellyConnection=TopDrive' + #endif endif if (data%Configuration%Hoisting%DriveType == Kelly_DriveType) then -# 80 - + #ifdef OST + print*, 'Evaluate_KellyConnection=Kelly' + #endif -!!OPERATION-CODE=4 -!if (Get_OperationCondition() == OPERATION_DRILL .and.& -! Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& -! Get_Swing() == SWING_MOUSE_HOLE_END .and.& -! Get_TongNotification() .and.& -! Get_FillMouseHoleLed() == .false. .and.& -! Get_Tong() == TONG_BREAKOUT_END) then -! -! call Set_FillMouseHoleLed(.true.) -! return -!end if - - - !OPERATION-CODE=1 if (Get_OperationCondition() == OPERATION_DRILL .and.& !Get_JointConnectionPossible() .and.& @@ -195,13 +183,13 @@ module OperationScenariosModule subroutine ButtonPress_Breakout() implicit none -# 201 +# 187 end subroutine subroutine ButtonPress_Makeup() implicit none -# 208 +# 194 end subroutine diff --git a/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.i90 b/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.i90 index 24a3f24..a5a80e9 100644 --- a/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.i90 +++ b/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.f90" module CElevatorConnectionEnum use OperationScenariosModule use CLog3 diff --git a/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.i90 b/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.i90 index d83517a..0117c0a 100644 --- a/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.i90 +++ b/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.f90" module CCloseKellyCockLedNotification use OperationScenariosModule implicit none diff --git a/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.i90 b/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.i90 new file mode 100644 index 0000000..77d07e1 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.i90 @@ -0,0 +1,159 @@ +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.f90" +module CIrSafetyValveLedNotification + use OperationScenariosModule +!use UnitySignalsModuleVariables + implicit none + contains + + subroutine Evaluate_IrSafetyValveLed() + implicit none + + + + + + if (data%Configuration%Hoisting%DriveType == TopDrive_DriveType) then +# 17 + + + + + + + + + + endif + + + + + + + + if (data%Configuration%Hoisting%DriveType == Kelly_DriveType) then +# 37 + + +!OPERATION-CODE=56 + if (Get_OperationCondition() == OPERATION_DRILL) then + call Set_IrSafetyValveLed(.true.) + return + end if + + + + +!call Set_IrSafetyValveLed(.false.) + + endif + + + + + + + + + + + + + end subroutine + +! subroutine Subscribe_IrSafetyValveLed() +! use CDrillingConsoleVariables +!@ use ConfigurationVariables +!@ use ConfigurationVariables +! implicit none +! call OnIRSafetyValvePress%Add(ButtonPress_IrSafetyValve) +! call OnOperationConditionChangeInt%Add(Set_Operation_IrSafetyValveLed) +! end subroutine + + subroutine Set_Operation_IrSafetyValveLed(v) + implicit none + integer , intent(in) :: v +# 79 + + data%State%notifications%operation_IrSafetyValveLed = v +# 83 + + end subroutine + + subroutine ButtonPress_IrSafetyValve() + implicit none + + + + + if (data%Configuration%Hoisting%DriveType == TopDrive_DriveType) then +# 95 + + + + +!TOPDRIVE-CODE=53 + if (Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed()) then + + call Set_IrSafetyValveLed(.false.) + return + end if + + + + + + + + +!TOPDRIVE-CODE=54 + if (Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed() == .false.) then + + call Set_IrSafetyValveLed(.true.) + return + end if + + + endif + + + + + + + + if (data%Configuration%Hoisting%DriveType == Kelly_DriveType) then +# 134 + + +!OPERATION-CODE=54 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed()) then + call Set_IrSafetyValveLed(.false.) + return + end if + + +!OPERATION-CODE=55 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed() == .false. ) then + call Set_IrSafetyValveLed(.true.) + return + end if + + endif + + + + + + + + + end subroutine + +end module CIrSafetyValveLedNotification diff --git a/CSharp/OperationScenarios/Notifications/CTongNotification.i90 b/CSharp/OperationScenarios/Notifications/CTongNotification.i90 index 4146d08..27d2ee5 100644 --- a/CSharp/OperationScenarios/Notifications/CTongNotification.i90 +++ b/CSharp/OperationScenarios/Notifications/CTongNotification.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/Notifications/CTongNotification.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Notifications/CTongNotification.f90" module CTongNotification use OperationScenariosModule implicit none diff --git a/CSharp/OperationScenarios/SoftwareInputsVariables.i90 b/CSharp/OperationScenarios/SoftwareInputsVariables.i90 index 5109f0c..2bd8411 100644 --- a/CSharp/OperationScenarios/SoftwareInputsVariables.i90 +++ b/CSharp/OperationScenarios/SoftwareInputsVariables.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/SoftwareInputsVariables.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/SoftwareInputsVariables.f90" module SoftwareInputsVariables ! use CVoidEventHandlerCollection type:: SoftwareInputsType diff --git a/CSharp/OperationScenarios/Unity/CUnityInputs.i90 b/CSharp/OperationScenarios/Unity/CUnityInputs.i90 index 1e9dd6e..a0a117f 100644 --- a/CSharp/OperationScenarios/Unity/CUnityInputs.i90 +++ b/CSharp/OperationScenarios/Unity/CUnityInputs.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/Unity/CUnityInputs.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Unity/CUnityInputs.f90" module CUnityInputs ! use CVoidEventHandlerCollection implicit none diff --git a/CSharp/OperationScenarios/Unity/CUnityOutputs.i90 b/CSharp/OperationScenarios/Unity/CUnityOutputs.i90 index 47e4347..b9bcb8d 100644 --- a/CSharp/OperationScenarios/Unity/CUnityOutputs.i90 +++ b/CSharp/OperationScenarios/Unity/CUnityOutputs.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/OperationScenarios/Unity/CUnityOutputs.f90" +# 1 "/home/admin/SimulationCore2/CSharp/OperationScenarios/Unity/CUnityOutputs.f90" module CUnityOutputs implicit none type :: UnityOutputsType diff --git a/CSharp/OperationScenarios/UnitySignals/UnitySignals.f90 b/CSharp/OperationScenarios/UnitySignals/UnitySignals.f90 index 0e00620..02fc1ba 100644 --- a/CSharp/OperationScenarios/UnitySignals/UnitySignals.f90 +++ b/CSharp/OperationScenarios/UnitySignals/UnitySignals.f90 @@ -6,9 +6,9 @@ contains subroutine Set_TdsElevatorModes(v) implicit none integer , intent(in) :: v -#ifdef ExcludeExtraChanges - if(data%State%unitySignals%TdsElevatorModes == v) return -#endif + #ifdef ExcludeExtraChanges + if(data%State%unitySignals%TdsElevatorModes == v) return + #endif data%State%unitySignals%TdsElevatorModes = v !**call TdsElevatorModesEnum%OnTdsElevatorModesChange%RunAll() end subroutine diff --git a/CSharp/OperationScenarios/UnitySignals/UnitySignals.i90 b/CSharp/OperationScenarios/UnitySignals/UnitySignals.i90 index b45c840..bf874b9 100644 --- a/CSharp/OperationScenarios/UnitySignals/UnitySignals.i90 +++ b/CSharp/OperationScenarios/UnitySignals/UnitySignals.i90 @@ -7,8 +7,9 @@ contains subroutine Set_TdsElevatorModes(v) implicit none integer , intent(in) :: v -# 11 - + #ifdef ExcludeExtraChanges + if(data%State%unitySignals%TdsElevatorModes == v) return + #endif data%State%unitySignals%TdsElevatorModes = v !**call TdsElevatorModesEnum%OnTdsElevatorModesChange%RunAll() end subroutine diff --git a/CSharp/OperationScenarios/UnitySignals/UnitySignalsVariables.i90 b/CSharp/OperationScenarios/UnitySignals/UnitySignalsVariables.i90 index 9e1dc00..ebe41cd 100644 --- a/CSharp/OperationScenarios/UnitySignals/UnitySignalsVariables.i90 +++ b/CSharp/OperationScenarios/UnitySignals/UnitySignalsVariables.i90 @@ -34,7 +34,8 @@ module UnitySignalVariables enumerator TONG_BREAKOUT_END enumerator TONG_MAKEUP_BEGIN enumerator TONG_MAKEUP_END - + end enum + enum, bind(c) enumerator TDS_SWING_NEUTRAL enumerator TDS_SWING_OFF_BEGIN enumerator TDS_SWING_OFF_END @@ -42,18 +43,21 @@ module UnitySignalVariables enumerator TDS_SWING_DRILL_END enumerator TDS_SWING_TILT_BEGIN enumerator TDS_SWING_TILT_END - + end enum + enum, bind(c) enumerator TDS_SPINE_NEUTRAL enumerator TDS_SPINE_CONNECT_BEGIN enumerator TDS_SPINE_CONNECT_END enumerator TDS_SPINE_DISCONNECT_BEGIN enumerator TDS_SPINE_DISCONNECT_END - + end enum + enum, bind(c) enumerator BACKUP_CLAMP_OFF_END enumerator BACKUP_CLAMP_OFF_BEGIN enumerator BACKUP_CLAMP_FW_BEGIN enumerator BACKUP_CLAMP_FW_END - + end enum + enum, bind(c) enumerator SWING_NEUTRAL enumerator SWING_MOUSE_HOLE_BEGIN enumerator SWING_MOUSE_HOLE_END @@ -67,11 +71,11 @@ module UnitySignalVariables enumerator TDS_TONG_BREAKOUT_BEGIN enumerator TDS_TONG_MAKEUP_BEGIN enumerator TDS_TONG_MAKEUP_END - + end enum + enum, bind(c) enumerator SAFETY_VALVE_NEUTRAL enumerator SAFETY_VALVE_REMOVE enumerator SAFETY_VALVE_INSTALL - end enum enum, bind(c) enumerator OPERATION_DRILL diff --git a/CSharp/StudentStation/CStudentStationVariables.i90 b/CSharp/StudentStation/CStudentStationVariables.i90 new file mode 100644 index 0000000..0ea7f3a --- /dev/null +++ b/CSharp/StudentStation/CStudentStationVariables.i90 @@ -0,0 +1,16 @@ +# 1 "/home/admin/SimulationCore2/CSharp/StudentStation/CStudentStationVariables.f90" +module CStudentStationVariables +! use CVoidEventHandlerCollection + implicit none + public + +! Input vars + type StudentStationType + logical :: FillupHeadInstallation + logical :: PitGainLossZero + logical :: MudBoxInstallation + logical :: TapSelector + end type StudentStationType + + contains +end module CStudentStationVariables diff --git a/Equipments/BopStack/ANNULAR.i90 b/Equipments/BopStack/ANNULAR.i90 index f8e1ad8..1f493c7 100644 --- a/Equipments/BopStack/ANNULAR.i90 +++ b/Equipments/BopStack/ANNULAR.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/BopStack/ANNULAR.f90" +# 1 "/home/admin/SimulationCore2/Equipments/BopStack/ANNULAR.f90" SUBROUTINE ANNULAR_SUB1 use SimulationVariables use CBopControlPanel diff --git a/Equipments/BopStack/BOP.i90 b/Equipments/BopStack/BOP.i90 index 5fb042d..53c9ad7 100644 --- a/Equipments/BopStack/BOP.i90 +++ b/Equipments/BopStack/BOP.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/BopStack/BOP.f90" +# 1 "/home/admin/SimulationCore2/Equipments/BopStack/BOP.f90" module BOP contains diff --git a/Equipments/BopStack/BOPstartup.i90 b/Equipments/BopStack/BOPstartup.i90 index 1335086..812a6d2 100644 --- a/Equipments/BopStack/BOPstartup.i90 +++ b/Equipments/BopStack/BOPstartup.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/BopStack/BOPstartup.f90" +# 1 "/home/admin/SimulationCore2/Equipments/BopStack/BOPstartup.f90" SUBROUTINE BOP_StartUp() use SimulationVariables diff --git a/Equipments/BopStack/LOSS_INPUTS.i90 b/Equipments/BopStack/LOSS_INPUTS.i90 index 05fc3da..1e8db28 100644 --- a/Equipments/BopStack/LOSS_INPUTS.i90 +++ b/Equipments/BopStack/LOSS_INPUTS.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/BopStack/LOSS_INPUTS.f90" +# 1 "/home/admin/SimulationCore2/Equipments/BopStack/LOSS_INPUTS.f90" SUBROUTINE DEALLOCATE_ARRAYS() use SimulationVariables use UnityModule diff --git a/Equipments/BopStack/PipeRams1Main.i90 b/Equipments/BopStack/PipeRams1Main.i90 new file mode 100644 index 0000000..d30452e --- /dev/null +++ b/Equipments/BopStack/PipeRams1Main.i90 @@ -0,0 +1,80 @@ +# 1 "/home/admin/SimulationCore2/Equipments/BopStack/PipeRams1Main.f90" +module PipeRams1Main + implicit none + public + contains + +! subroutine PipeRams1_Setup() +! ! use CSimulationVariables +! implicit none +! call OnSimulationInitialization%Add(PipeRams1_Init) +! call OnSimulationStop%Add(PipeRams1_Init) +! call OnPipeRams1Step%Add(PipeRams1_Step) +! call OnPipeRams1Output%Add(PipeRams1_Output) +! call OnPipeRams1Main%Add(PipeRams1MainBody) +! end subroutine + + subroutine PipeRams1_Init + call BOP_StartUp() + end subroutine PipeRams1_Init + + subroutine PipeRams1_Step + use SimulationVariables + implicit none + if (data%State%PipeRam1%finished/=0) then + call PIPE_RAMS1 + if (data%State%PipeRam1%IsOpening .or. data%State%PipeRam1%IsClosing .or. data%State%RAM(2)%Bottles_Charged_MalfActive) then + if(data%State%PipeRam1%finished==0) then + call PIPE_RAMS1_SUB !only body of loop2 + endif + endif + else + call PIPE_RAMS1_SUB + endif + end subroutine PipeRams1_Step + +! subroutine PipeRams1_Output + +! end subroutine PipeRams1_Output + +! subroutine PipeRams1MainBody + +! USE ifport +! USE ifmt +! ! use CSimulationVariables +! ! USE BOP + +! implicit none + +! INTEGER :: PipeRam1Duration +! integer,dimension(8) :: PipeRam1StartTime , PipeRam1EndTime + +! ! CALL BOP_StartUp() +! loop1: DO + +! CALL DATE_AND_TIME(values=PipeRam1StartTime) +! CALL PIPE_RAMS1 +! CALL DATE_AND_TIME(values=PipeRam1EndTime) + +! PipeRam1Duration = 3600000 * (PipeRam1EndTime(5) - PipeRam1StartTime(5)) + 60000 * (PipeRam1EndTime(6) - PipeRam1StartTime(6)) + 1000 * (PipeRam1EndTime(7) - PipeRam1StartTime(7)) + (PipeRam1EndTime(8) - PipeRam1StartTime(8)) + +! if (PipeRam1Duration < 100) then +! call sleepqq(100 - PipeRam1Duration) +! ELSE +! WRITE (*,*) 'PipeRam1 BOP run duration exceeded 100 ms and =', PipeRam1Duration +! end if + + +! IF (IsStopped==.true.) THEN +! EXIT loop1 +! ENDIF + + +! ENDDO loop1 + + +! ! CALL DEALLOCATE_ARRAYS() + +! end subroutine PipeRams1MainBody + +end module PipeRams1Main diff --git a/Equipments/BopStack/VARIABLES.i90 b/Equipments/BopStack/VARIABLES.i90 index b345fec..fac6114 100644 --- a/Equipments/BopStack/VARIABLES.i90 +++ b/Equipments/BopStack/VARIABLES.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/BopStack/VARIABLES.f90" +# 1 "/home/admin/SimulationCore2/Equipments/BopStack/VARIABLES.f90" MODULE BopVariables use DynamicDoubleArray, only:DynamicDoubleArrayType IMPLICIT NONE diff --git a/Equipments/DrillingConsole_ScrLEDs.i90 b/Equipments/DrillingConsole_ScrLEDs.i90 index 7b9763f..d14d779 100644 --- a/Equipments/DrillingConsole_ScrLEDs.i90 +++ b/Equipments/DrillingConsole_ScrLEDs.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/DrillingConsole_ScrLEDs.f90" +# 1 "/home/admin/SimulationCore2/Equipments/DrillingConsole_ScrLEDs.f90" subroutine DrillingConsole_ScrLEDs use CDrillingConsoleVariables diff --git a/Equipments/Pumps/Pump_OffMode_Solver.i90 b/Equipments/Pumps/Pump_OffMode_Solver.i90 index 7de401c..70dc923 100644 --- a/Equipments/Pumps/Pump_OffMode_Solver.i90 +++ b/Equipments/Pumps/Pump_OffMode_Solver.i90 @@ -31,7 +31,7 @@ subroutine Pump_OffMode_Solver(Pump_No) data%State%Pump(Pump_No)%Speed = ( data%State%Pump(Pump_No)%Flow_Rate/(data%State%Pump(Pump_No)%FlowRatePerSTK*4118.d0*0.01d0) )*data%State%Pump(Pump_No)%Trans_Ratio ![rpm] end if - data%State%Pump(Pump_No)%SoundSPM = INT(data%State%Pump(Pump_No)%Speed/data%State%Pump(Pump_No)%Trans_Ratio) + data%State%Pump(Pump_No)%SoundSPM = INT(data%State%Pump(Pump_No)%Speed/data%State%Pump(Pump_No)%Trans_Ratio) ![SPM] If (data%State%Pump(Pump_No)%Flow_Rate>0.d0) Then data%State%Pump(Pump_No)%Open_Close = 1 diff --git a/Equipments/Pumps/Pump_OnMode_Solver.i90 b/Equipments/Pumps/Pump_OnMode_Solver.i90 new file mode 100644 index 0000000..bdde4cf --- /dev/null +++ b/Equipments/Pumps/Pump_OnMode_Solver.i90 @@ -0,0 +1,34 @@ +# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pump_OnMode_Solver.f90" +subroutine Pump_OnMode_Solver(Pump_No) + + use SimulationVariables + + IMPLICIT NONE + INTEGER :: Pump_No + + + + data%State%Pump(Pump_No)%Flow_Rate = data%State%Pump(Pump_No)%FlowRatePerSTK*4118.d0*0.01d0*(data%State%Pump(Pump_No)%Speed/data%State%Pump(Pump_No)%Trans_Ratio) ![gpm] + data%State%Pump(Pump_No)%Max_FlowRate = data%State%Pump(Pump_No)%FlowRatePerSTK*4118.d0*0.01d0*data%State%Pump(Pump_No)%MaxSPM ![gpm] + data%State%Pump(Pump_No)%HorsePower = ((data%State%Pump(Pump_No)%Flow_Rate/0.01d0)*data%State%Pump(Pump_No)%StandPipe_Pressure)/(168067.d0*data%State%Pump(Pump_No)%Mech_Efficiency) ![HHP] +!data%State%Pump(Pump_No)%Max_Horsepower = ((data%State%Pump(Pump_No)%Flow_Rate/0.01d0)*data%State%Pump(Pump_No)%Max_Pressure)/(168067.d0*data%State%Pump(Pump_No)%Mech_Efficiency) ![HHP] + data%State%Pump(Pump_No)%Max_Horsepower = (data%State%Pump(Pump_No)%Flow_Rate*data%State%Pump(Pump_No)%Max_Pressure)/(1714.d0*data%State%Pump(Pump_No)%Mech_Efficiency) +! if ( data%State%Pump(Pump_No)%StandPipe_Pressure>data%State%Pump(Pump_No)%Max_Pressure ) then ! in shart check shavad +! !if ( (data%State%Pump(Pump_No)%StandPipe_Pressure*data%State%Pump(Pump_No)%Flow_Rate)>(1714.d0*data%State%Pump(Pump_No)%Max_Horsepower*data%State%Pump(Pump_No)%Mech_Efficiency) ) then +! data%State%Pump(Pump_No)%Flow_Rate = (1714.d0*data%State%Pump(Pump_No)%Mech_Efficiency*data%State%Pump(Pump_No)%Max_Horsepower)/data%State%Pump(Pump_No)%StandPipe_Pressure ![gpm] +! data%State%Pump(Pump_No)%Speed = ( data%State%Pump(Pump_No)%Flow_Rate/(data%State%Pump(Pump_No)%FlowRatePerSTK*4118.d0*0.01d0) )*data%State%Pump(Pump_No)%Trans_Ratio ![rpm] +! end if + + data%State%Pump(Pump_No)%SoundSPM = INT(data%State%Pump(Pump_No)%Speed/data%State%Pump(Pump_No)%Trans_Ratio) ![SPM] ![spm] + + If (data%State%Pump(Pump_No)%Flow_Rate>0.d0) Then + data%State%Pump(Pump_No)%Open_Close = 1 + Else + data%State%Pump(Pump_No)%Open_Close = 0 + End if + + + + + +end subroutine Pump_OnMode_Solver diff --git a/Equipments/Pumps/Pumps_Inputs.f90 b/Equipments/Pumps/Pumps_Inputs.f90 index 53307d9..d851d0e 100644 --- a/Equipments/Pumps/Pumps_Inputs.f90 +++ b/Equipments/Pumps/Pumps_Inputs.f90 @@ -2,8 +2,6 @@ subroutine Pumps_Inputs use CDrillingConsoleVariables use SimulationVariables - use SimulationVariables - use SimulationVariables Use MudSystemModule IMPLICIT NONE @@ -27,7 +25,8 @@ subroutine Pumps_Inputs data%State%Pump(1)%Switch = data%Equipments%DrillingConsole%MP1CPSwitch - data%State%Pump(1)%Throttle = data%Equipments%DrillingConsole%MP1Throttle ![RPM] 0 Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad @@ -58,7 +57,8 @@ subroutine Pumps_Inputs data%State%Pump(2)%Switch = data%Equipments%DrillingConsole%MP2Switch - data%State%Pump(2)%Throttle = data%Equipments%DrillingConsole%MP2Throttle ![RPM] 0 Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad @@ -87,7 +87,8 @@ subroutine Pumps_Inputs data%State%Pump(3)%Switch = data%Equipments%DrillingConsole%MP1CPSwitch - data%State%Pump(3)%Throttle = data%Equipments%DrillingConsole%MP1Throttle ![RPM] 0 Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad diff --git a/Equipments/Pumps/Pumps_Inputs.i90 b/Equipments/Pumps/Pumps_Inputs.i90 index 50f333f..b2aa76b 100644 --- a/Equipments/Pumps/Pumps_Inputs.i90 +++ b/Equipments/Pumps/Pumps_Inputs.i90 @@ -1,113 +1,114 @@ -# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_Inputs.f90" -subroutine Pumps_Inputs - - use CDrillingConsoleVariables - use SimulationVariables - use SimulationVariables - use SimulationVariables - Use MudSystemModule - - IMPLICIT NONE - - - -!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< - -!data%State%Pump(1)%BlowPopOffMalf = 0 !??????? motaghayere voroudi - - if ( data%State%Pump(1)%BlowPopOffMalf==1 ) then ! Pump1 Malfunction ----> Blow Pop-offs (Relief Valves) - data%State%Pump(1)%StandPipe_Pressure = 0.d0 - else - data%State%Pump(1)%StandPipe_Pressure = PumpPressure1 ![psi] - if ( data%State%Pump(1)%StandPipe_Pressure<=14.d0 ) then - data%State%Pump(1)%StandPipe_Pressure = 14.d0 - end if - end if - - data%State%Pump(1)%AssignmentSwitchh = data%Equipments%DrillingConsole%AssignmentSwitch - - data%State%Pump(1)%Switch = data%Equipments%DrillingConsole%MP1CPSwitch - - data%State%Pump(1)%Throttle = data%Equipments%DrillingConsole%MP1Throttle ![RPM] - -!data%State%Pump(1)%PowerFailMalf = 0 !??????? motaghayere voroudi (Pump1 Malfunction ----> Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad - - data%State%Pump(1)%Failure = data%Warnings%Pump1Failure !(Pump1 Warning ----> Failure) - - data%State%Pump(1)%N_new = data%State%Pump(1)%Throttle - - - - - - - -!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< - -!data%State%Pump(2)%BlowPopOffMalf = 0 !??????? motaghayere voroudi - - if ( data%State%Pump(2)%BlowPopOffMalf==1 ) then ! Pump2 Malfunction ----> Blow Pop-offs (Relief Valves) - data%State%Pump(2)%StandPipe_Pressure = 0.d0 - else - data%State%Pump(2)%StandPipe_Pressure = PumpPressure2 ![psi] - if ( data%State%Pump(2)%StandPipe_Pressure<=14.d0 ) then - data%State%Pump(2)%StandPipe_Pressure = 14.d0 - end if - end if - - data%State%Pump(2)%AssignmentSwitchh = data%Equipments%DrillingConsole%AssignmentSwitch - - data%State%Pump(2)%Switch = data%Equipments%DrillingConsole%MP2Switch - - data%State%Pump(2)%Throttle = data%Equipments%DrillingConsole%MP2Throttle ![RPM] - -!data%State%Pump(2)%PowerFailMalf = 0 !??????? motaghayere voroudi (Pump2 Malfunction ----> Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad - - data%State%Pump(2)%Failure = data%Warnings%Pump2Failure !(Pump2 Warning ----> Failure) - - data%State%Pump(2)%N_new = data%State%Pump(2)%Throttle - - - - - - - -!!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< - -!data%State%Pump(3)%BlowPopOffMalf = 0 !??????? motaghayere voroudi - - if ( data%State%Pump(3)%BlowPopOffMalf==1 ) then ! Pump3 Malfunction ----> Blow Pop-offs (Relief Valves) - data%State%Pump(3)%StandPipe_Pressure = 0.d0 - else - data%State%Pump(3)%StandPipe_Pressure = PumpPressure3 ![psi] - if ( data%State%Pump(3)%StandPipe_Pressure<=14.d0 ) then - data%State%Pump(3)%StandPipe_Pressure = 14.d0 - end if - end if - - data%State%Pump(3)%Switch = data%Equipments%DrillingConsole%MP1CPSwitch - - data%State%Pump(3)%Throttle = data%Equipments%DrillingConsole%MP1Throttle ![RPM] - -!data%State%Pump(3)%PowerFailMalf = 0 !??????? motaghayere voroudi (Pump3 Malfunction ----> Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad - - data%State%Pump(3)%Failure = data%Warnings%Pump3Failure !(Pump1 Warning ----> Failure) - - data%State%Pump(3)%N_new = data%State%Pump(3)%Throttle - - - - - - -!>>>>>>>>>>>>>>>>>>>>>>> Total Pumps <<<<<<<<<<<<<<<<<<<<<<<<<<< - - - - - - - - -end subroutine Pumps_Inputs +# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_Inputs.f90" +subroutine Pumps_Inputs + + use CDrillingConsoleVariables + use SimulationVariables + Use MudSystemModule + + IMPLICIT NONE + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< + +!data%State%Pump(1)%BlowPopOffMalf = 0 !??????? motaghayere voroudi + + if ( data%State%Pump(1)%BlowPopOffMalf==1 ) then ! Pump1 Malfunction ----> Blow Pop-offs (Relief Valves) + data%State%Pump(1)%StandPipe_Pressure = 0.d0 + else + data%State%Pump(1)%StandPipe_Pressure = PumpPressure1 ![psi] + if ( data%State%Pump(1)%StandPipe_Pressure<=14.d0 ) then + data%State%Pump(1)%StandPipe_Pressure = 14.d0 + end if + end if + + data%State%Pump(1)%AssignmentSwitchh = data%Equipments%DrillingConsole%AssignmentSwitch + + data%State%Pump(1)%Switch = data%Equipments%DrillingConsole%MP1CPSwitch + + data%State%Pump(1)%Throttle = data%Equipments%DrillingConsole%MP1Throttle ![SPM] 0 Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad + + data%State%Pump(1)%Failure = data%Warnings%Pump1Failure !(Pump1 Warning ----> Failure) + + data%State%Pump(1)%N_new = data%State%Pump(1)%Throttle + + + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< + +!data%State%Pump(2)%BlowPopOffMalf = 0 !??????? motaghayere voroudi + + if ( data%State%Pump(2)%BlowPopOffMalf==1 ) then ! Pump2 Malfunction ----> Blow Pop-offs (Relief Valves) + data%State%Pump(2)%StandPipe_Pressure = 0.d0 + else + data%State%Pump(2)%StandPipe_Pressure = PumpPressure2 ![psi] + if ( data%State%Pump(2)%StandPipe_Pressure<=14.d0 ) then + data%State%Pump(2)%StandPipe_Pressure = 14.d0 + end if + end if + + data%State%Pump(2)%AssignmentSwitchh = data%Equipments%DrillingConsole%AssignmentSwitch + + data%State%Pump(2)%Switch = data%Equipments%DrillingConsole%MP2Switch + + data%State%Pump(2)%Throttle = data%Equipments%DrillingConsole%MP2Throttle ![SPM] 0 Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad + + data%State%Pump(2)%Failure = data%Warnings%Pump2Failure !(Pump2 Warning ----> Failure) + + data%State%Pump(2)%N_new = data%State%Pump(2)%Throttle + + + + + + + +!!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< + +!data%State%Pump(3)%BlowPopOffMalf = 0 !??????? motaghayere voroudi + + if ( data%State%Pump(3)%BlowPopOffMalf==1 ) then ! Pump3 Malfunction ----> Blow Pop-offs (Relief Valves) + data%State%Pump(3)%StandPipe_Pressure = 0.d0 + else + data%State%Pump(3)%StandPipe_Pressure = PumpPressure3 ![psi] + if ( data%State%Pump(3)%StandPipe_Pressure<=14.d0 ) then + data%State%Pump(3)%StandPipe_Pressure = 14.d0 + end if + end if + + data%State%Pump(3)%Switch = data%Equipments%DrillingConsole%MP1CPSwitch + + data%State%Pump(3)%Throttle = data%Equipments%DrillingConsole%MP1Throttle ![SPM] 0 Power Failure) !dar CPumpProblemsVariables meghdardehi mishavad + + data%State%Pump(3)%Failure = data%Warnings%Pump3Failure !(Pump1 Warning ----> Failure) + + data%State%Pump(3)%N_new = data%State%Pump(3)%Throttle + + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> Total Pumps <<<<<<<<<<<<<<<<<<<<<<<<<<< + + + + + + + + +end subroutine Pumps_Inputs diff --git a/Equipments/Pumps/Pumps_Outputs.f90 b/Equipments/Pumps/Pumps_Outputs.f90 index 4aa6a96..6b3bb42 100644 --- a/Equipments/Pumps/Pumps_Outputs.f90 +++ b/Equipments/Pumps/Pumps_Outputs.f90 @@ -3,9 +3,7 @@ subroutine Pumps_Outputs use CDataDisplayConsole use SimulationVariables ! Use CSimulationVariables - use SimulationVariables Use MudSystemModule - use SimulationVariables !@ Use CSounds IMPLICIT NONE diff --git a/Equipments/Pumps/Pumps_Outputs.i90 b/Equipments/Pumps/Pumps_Outputs.i90 index c2143c0..d4a17f9 100644 --- a/Equipments/Pumps/Pumps_Outputs.i90 +++ b/Equipments/Pumps/Pumps_Outputs.i90 @@ -1,97 +1,95 @@ -# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_Outputs.f90" -subroutine Pumps_Outputs - - use CDataDisplayConsole - use SimulationVariables -! Use CSimulationVariables - use SimulationVariables - Use MudSystemModule - use SimulationVariables !@ - Use CSounds - - IMPLICIT NONE - - - -!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< - - If (data%State%Pump(1)%Open_Close==1) then - Call OpenPump1() - Else if (data%State%Pump(1)%Open_Close==0) then - Call ClosePump1() - End if - - data%Equipments%DrillingConsole%MP1BLWR = data%State%Pump(1)%BLWR - - Call SetSoundBlowerMP1( data%State%Pump(1)%SoundBlower ) !.true. or .false. - Call SetSoundMP1( data%State%Pump(1)%SoundSPM ) ![spm] , integer - - if ((data%State%Pump(1)%Switch==-1) .or. (data%State%Pump(1)%Switch==0)) then - Call Set_MP1SPMGauge( sngl(1-data%State%Pump(1)%SPMGaugeMalf)*real((data%State%Pump(1)%Speed/data%State%Pump(1)%Trans_Ratio),8) ) ![spm] , real - data%Equipments%DrillingWatch%SPM1 = data%Equipments%DataDisplayConsole%MP1SPMGauge - end if - -!data%State%Pump(1)%Flow_Rate !to other modules , [gpm] - - - - - - - -!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< - - If (data%State%Pump(2)%Open_Close==1) then - Call OpenPump2() - Else if (data%State%Pump(2)%Open_Close==0) then - Call ClosePump2() - End if - - data%Equipments%DrillingConsole%MP2BLWR = data%State%Pump(2)%BLWR - - Call SetSoundBlowerMP2( data%State%Pump(2)%SoundBlower ) - Call SetSoundMP2( data%State%Pump(2)%SoundSPM ) - - Call Set_MP2SPMGauge( sngl(1-data%State%Pump(2)%SPMGaugeMalf)*real((data%State%Pump(2)%Speed/data%State%Pump(2)%Trans_Ratio),8) ) - data%Equipments%DrillingWatch%SPM2 = data%Equipments%DataDisplayConsole%MP2SPMGauge - -!data%State%Pump(2)%Flow_Rate !to other modules - - - - - - -!!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< - - If (data%State%Pump(3)%Open_Close==1) then - Call OpenCementPump() - Else if (data%State%Pump(3)%Open_Close==0) then - Call CloseCementPump() - End if - - Call SetSoundMP3( data%State%Pump(3)%SoundSPM ) - - if (data%State%Pump(3)%Switch==1) then - Call Set_MP1SPMGauge( real((data%State%Pump(3)%Speed/data%State%Pump(3)%Trans_Ratio),8) ) - data%Equipments%DrillingWatch%SPM1 = data%Equipments%DataDisplayConsole%MP1SPMGauge - end if - -!data%State%Pump(3)%Flow_Rate !to other modules - - - -!>>>>>>>>>>>>>>>>>>>>>>> Total Pumps <<<<<<<<<<<<<<<<<<<<<<<<<<< - -!data%State%MPumps%Total_Pump_Gpm = 100.d0 !??????????? -!data%State%MPumps%Total_Pump_SPM = 1000.d0 !????????????? - -!SCR1LED=1 -!SCR2LED=1 -!SCR3LED=1 -!SCR4LED=1 - - - - -end subroutine Pumps_Outputs +# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_Outputs.f90" +subroutine Pumps_Outputs + + use CDataDisplayConsole + use SimulationVariables +! Use CSimulationVariables + Use MudSystemModule + Use CSounds + + IMPLICIT NONE + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + If (data%State%Pump(1)%Open_Close==1) then + Call OpenPump1() + Else if (data%State%Pump(1)%Open_Close==0) then + Call ClosePump1() + End if + + data%Equipments%DrillingConsole%MP1BLWR = data%State%Pump(1)%BLWR + + Call SetSoundBlowerMP1( data%State%Pump(1)%SoundBlower ) !.true. or .false. + Call SetSoundMP1( data%State%Pump(1)%SoundSPM ) ![SPM] , integer + + if ((data%State%Pump(1)%Switch==-1) .or. (data%State%Pump(1)%Switch==0)) then + Call Set_MP1SPMGauge( sngl(1-data%State%Pump(1)%SPMGaugeMalf)*real((data%State%Pump(1)%Speed/data%State%Pump(1)%Trans_Ratio),8) ) ![spm] , real + data%Equipments%DrillingWatch%SPM1 = data%Equipments%DataDisplayConsole%MP1SPMGauge + end if + +!data%State%Pump(1)%Flow_Rate !to other modules , [gpm] + + + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + If (data%State%Pump(2)%Open_Close==1) then + Call OpenPump2() + Else if (data%State%Pump(2)%Open_Close==0) then + Call ClosePump2() + End if + + data%Equipments%DrillingConsole%MP2BLWR = data%State%Pump(2)%BLWR + + Call SetSoundBlowerMP2( data%State%Pump(2)%SoundBlower ) + Call SetSoundMP2( data%State%Pump(2)%SoundSPM ) ![SPM] + + Call Set_MP2SPMGauge( sngl(1-data%State%Pump(2)%SPMGaugeMalf)*real((data%State%Pump(2)%Speed/data%State%Pump(2)%Trans_Ratio),8) ) ![SPM] + data%Equipments%DrillingWatch%SPM2 = data%Equipments%DataDisplayConsole%MP2SPMGauge + +!data%State%Pump(2)%Flow_Rate !to other modules + + + + + + +!!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + If (data%State%Pump(3)%Open_Close==1) then + Call OpenCementPump() + Else if (data%State%Pump(3)%Open_Close==0) then + Call CloseCementPump() + End if + + Call SetSoundMP3( data%State%Pump(3)%SoundSPM ) + + if (data%State%Pump(3)%Switch==1) then + Call Set_MP1SPMGauge( real((data%State%Pump(3)%Speed/data%State%Pump(3)%Trans_Ratio),8) ) ![SPM] SPMGaugeMalf Malf nadarad???? + data%Equipments%DrillingWatch%SPM1 = data%Equipments%DataDisplayConsole%MP1SPMGauge + end if + +!data%State%Pump(3)%Flow_Rate !to other modules + + + +!>>>>>>>>>>>>>>>>>>>>>>> Total Pumps <<<<<<<<<<<<<<<<<<<<<<<<<<< + +!data%State%MPumps%Total_Pump_Gpm = 100.d0 !??????????? +!data%State%MPumps%Total_Pump_SPM = 1000.d0 !????????????? + +!SCR1LED=1 +!SCR2LED=1 +!SCR3LED=1 +!SCR4LED=1 + + + + +end subroutine Pumps_Outputs diff --git a/Equipments/Pumps/Pumps_StartUp.f90 b/Equipments/Pumps/Pumps_StartUp.f90 index 7efc82d..78997ab 100644 --- a/Equipments/Pumps/Pumps_StartUp.f90 +++ b/Equipments/Pumps/Pumps_StartUp.f90 @@ -16,7 +16,7 @@ subroutine Pumps_StartUp data%State%Pump(1)%Trans_Ratio = 965.d0/data%State%Pump(1)%MaxSPM data%State%Pump(1)%time_step = 0.1d0 !?????? niaz hast ya na?? - data%State%Pump(1)%RateChange = (data%State%Pump(1)%RateChange*data%State%Pump(1)%Trans_Ratio)/60.d0 ![rpm/s ??] 24/60 + data%State%Pump(1)%RateChange = (data%State%Pump(1)%RateChange*data%State%Pump(1)%Trans_Ratio)/60.d0 ![rpm/s ??] 24/60 data%State%Pump(1)%DelayToShutdown = data%State%Pump(1)%DelayToShutdown/60.d0 ![s] data%State%Pump(1)%K_throttle = 0 data%State%Pump(1)%N_old = 0.d0 @@ -34,7 +34,7 @@ subroutine Pumps_StartUp data%State%Pump(2)%Trans_Ratio = 965.d0/data%State%Pump(2)%MaxSPM data%State%Pump(2)%time_step = 0.1d0 !?????? niaz hast ya na?? - data%State%Pump(2)%RateChange = (data%State%Pump(2)%RateChange*data%State%Pump(2)%Trans_Ratio)/60.d0 ![rpm/s ??] + data%State%Pump(2)%RateChange = (data%State%Pump(2)%RateChange*data%State%Pump(2)%Trans_Ratio)/60.d0 ![rpm/s ??] data%State%Pump(2)%DelayToShutdown = data%State%Pump(2)%DelayToShutdown/60.d0 ![s] data%State%Pump(2)%K_throttle = 0 data%State%Pump(2)%N_old = 0.d0 @@ -52,7 +52,7 @@ subroutine Pumps_StartUp data%State%Pump(3)%Trans_Ratio = 965.d0/data%State%Pump(3)%MaxSPM data%State%Pump(3)%time_step = 0.1d0 !?????? niaz hast ya na?? - data%State%Pump(3)%RateChange = (data%State%Pump(3)%RateChange*data%State%Pump(3)%Trans_Ratio)/60.d0 ![rpm/s ??] + data%State%Pump(3)%RateChange = (data%State%Pump(3)%RateChange*data%State%Pump(3)%Trans_Ratio)/60.d0 ![rpm/s ??] data%State%Pump(3)%DelayToShutdown = data%State%Pump(3)%DelayToShutdown/60.d0 ![s] data%State%Pump(3)%K_throttle = 0 data%State%Pump(3)%N_old = 0.d0 diff --git a/Equipments/Pumps/Pumps_StartUp.i90 b/Equipments/Pumps/Pumps_StartUp.i90 index 2f3059d..f466e5b 100644 --- a/Equipments/Pumps/Pumps_StartUp.i90 +++ b/Equipments/Pumps/Pumps_StartUp.i90 @@ -1,50 +1,63 @@ -# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_StartUp.f90" -subroutine Pumps_StartUp - use CPumpsVariables - use CPumps - use SimulationVariables - IMPLICIT NONE -!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< - data%State%Pump(1)%FlowRatePerSTK = .04d0 ![bbl] !??????? motaghayere voroudi -!data%State%Pump(1)%FlowRatePerSTK = data%State%Pump(1)%FlowRatePerSTK*0.0292d0 ![gpm] - data%State%Pump(1)%RateChange = 4.d0 ![stk/min2 ??] !??????? motaghayere voroudi - data%State%Pump(1)%Mech_Efficiency = data%Configuration%Pumps%MudPump1MechanicalEfficiency ![dimensionless] -!data%State%Pump(1)%Vol_Efficiency = MudPump1VolumetricEfficiency !bayad hazf beshe ? - data%State%Pump(1)%Max_Pressure = 6000.d0 ![psi] !??????? motaghayere voroudi - data%State%Pump(1)%MaxSPM = data%Configuration%Pumps%MudPump1Maximum ![spm] - data%State%Pump(1)%Trans_Ratio = 965.d0/data%State%Pump(1)%MaxSPM - data%State%Pump(1)%time_step = 0.1d0 !?????? niaz hast ya na?? - - data%State%Pump(1)%RateChange = 193.d0!data%State%Pump(1)%RateChange*data%State%Pump(1)%Trans_Ratio ! [rpm/min ??] ??????????????? rpm/s - data%State%Pump(1)%K_throttle = 0 - data%State%Pump(1)%N_old = 0.d0 - Call Pump_OffMode_Solver(1) -!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< - data%State%Pump(2)%FlowRatePerSTK = .04d0 ![bbl] !??????? motaghayere voroudi -!data%State%Pump(2)%FlowRatePerSTK = data%State%Pump(2)%FlowRatePerSTK*0.0292d0 ![gpm] - data%State%Pump(2)%RateChange = 4.d0 ![stk/min2 ??] !??????? motaghayere voroudi - data%State%Pump(2)%Mech_Efficiency = data%Configuration%Pumps%MudPump2MechanicalEfficiency ![dimensionless] -!data%State%Pump(2)%Vol_Efficiency = MudPump2VolumetricEfficiency !bayad hazf beshe ? - data%State%Pump(2)%Max_Pressure = 6000.d0 ![psi] !??????? motaghayere voroudi - data%State%Pump(2)%MaxSPM = data%Configuration%Pumps%MudPump2Maximum ![spm] - data%State%Pump(2)%Trans_Ratio = 965.d0/data%State%Pump(2)%MaxSPM - data%State%Pump(2)%time_step = 0.1d0 !?????? niaz hast ya na?? - data%State%Pump(2)%RateChange = 193.d0!data%State%Pump(2)%RateChange*data%State%Pump(2)%Trans_Ratio ! [rpm/min ??] ??????????????? rpm/s - data%State%Pump(2)%K_throttle = 0 - data%State%Pump(2)%N_old = 0.d0 - Call Pump_OffMode_Solver(2) -!!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< - data%State%Pump(3)%FlowRatePerSTK = .04d0 ![bbl] !??????? motaghayere voroudi -!data%State%Pump(3)%FlowRatePerSTK = data%State%Pump(3)%FlowRatePerSTK*0.0292d0 ![gpm] - data%State%Pump(3)%RateChange = 4.d0 ![stk/min2 ??] !??????? motaghayere voroudi - data%State%Pump(3)%Mech_Efficiency = data%Configuration%Pumps%CementPumpMechanicalEfficiency ![dimensionless] -!data%State%Pump(3)%Vol_Efficiency = CementPumpVolumetricEfficiency !bayad hazf beshe ? - data%State%Pump(3)%Max_Pressure = 6000.d0 ![psi] !??????? motaghayere voroudi - data%State%Pump(3)%MaxSPM = data%Configuration%Pumps%CementPumpMaximum ![spm] - data%State%Pump(3)%Trans_Ratio = 965.d0/data%State%Pump(3)%MaxSPM - data%State%Pump(3)%time_step = 0.1d0 !?????? niaz hast ya na?? - data%State%Pump(3)%RateChange = 193.d0!data%State%Pump(3)%RateChange*data%State%Pump(3)%Trans_Ratio ! [rpm/min ??] ??????????????? rpm/s - data%State%Pump(3)%K_throttle = 0 - data%State%Pump(3)%N_old = 0.d0 - Call Pump_OffMode_Solver(3) -end subroutine Pumps_StartUp +# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_StartUp.f90" +subroutine Pumps_StartUp + use CPumpsVariables + use CPumps + use SimulationVariables + IMPLICIT NONE + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< + data%State%Pump(1)%FlowRatePerSTK = data%Configuration%Pumps%MudPump1VolumetricOutput !.1d0 ![bbl/stk] + data%State%Pump(1)%RateChange = data%Configuration%Pumps%MudPump1PumpRateChange ![stk/min2 ??] + data%State%Pump(1)%DelayToShutdown = data%Configuration%Pumps%MudPump1DelayToShutdown ![min] + data%State%Pump(1)%Mech_Efficiency = data%Configuration%Pumps%MudPump1MechanicalEfficiency ![dimensionless] +!data%State%Pump(1)%Vol_Efficiency = MudPump1VolumetricEfficiency !bayad hazf beshe ? + data%State%Pump(1)%Max_Pressure = data%Configuration%Pumps%MudPump1MaximumPressure !6000.d0 ![psi] + data%State%Pump(1)%MaxSPM = data%Configuration%Pumps%MudPump1Maximum ![spm] + data%State%Pump(1)%Trans_Ratio = 965.d0/data%State%Pump(1)%MaxSPM + data%State%Pump(1)%time_step = 0.1d0 !?????? niaz hast ya na?? + + data%State%Pump(1)%RateChange = (data%State%Pump(1)%RateChange*data%State%Pump(1)%Trans_Ratio)/60.d0 ![rpm/s ??] 24/60 + data%State%Pump(1)%DelayToShutdown = data%State%Pump(1)%DelayToShutdown/60.d0 ![s] + data%State%Pump(1)%K_throttle = 0 + data%State%Pump(1)%N_old = 0.d0 + Call Pump_OffMode_Solver(1) + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< + data%State%Pump(2)%FlowRatePerSTK = data%Configuration%Pumps%MudPump2VolumetricOutput !.1d0 ![bbl/stk] + data%State%Pump(2)%RateChange = data%Configuration%Pumps%MudPump2PumpRateChange ![stk/min2 ??] + data%State%Pump(2)%DelayToShutdown = data%Configuration%Pumps%MudPump2DelayToShutdown ![min] + data%State%Pump(2)%Mech_Efficiency = data%Configuration%Pumps%MudPump2MechanicalEfficiency ![dimensionless] +!data%State%Pump(2)%Vol_Efficiency = MudPump2VolumetricEfficiency !bayad hazf beshe ? + data%State%Pump(2)%Max_Pressure = data%Configuration%Pumps%MudPump2MaximumPressure !6000.d0 ![psi] + data%State%Pump(2)%MaxSPM = data%Configuration%Pumps%MudPump2Maximum ![spm] + data%State%Pump(2)%Trans_Ratio = 965.d0/data%State%Pump(2)%MaxSPM + data%State%Pump(2)%time_step = 0.1d0 !?????? niaz hast ya na?? + + data%State%Pump(2)%RateChange = (data%State%Pump(2)%RateChange*data%State%Pump(2)%Trans_Ratio)/60.d0 ![rpm/s ??] + data%State%Pump(2)%DelayToShutdown = data%State%Pump(2)%DelayToShutdown/60.d0 ![s] + data%State%Pump(2)%K_throttle = 0 + data%State%Pump(2)%N_old = 0.d0 + Call Pump_OffMode_Solver(2) + + +!!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< + data%State%Pump(3)%FlowRatePerSTK = data%Configuration%Pumps%CementPumpVolumetricOutput !.1d0 ![bbl/stk] + data%State%Pump(3)%RateChange = data%Configuration%Pumps%CementPumpPumpRateChange ![stk/min2 ??] + data%State%Pump(3)%DelayToShutdown = data%Configuration%Pumps%CementPumpDelayToShutdown ![min] + data%State%Pump(3)%Mech_Efficiency = data%Configuration%Pumps%CementPumpMechanicalEfficiency ![dimensionless] +!data%State%Pump(3)%Vol_Efficiency = CementPumpVolumetricEfficiency !bayad hazf beshe ? + data%State%Pump(3)%Max_Pressure = data%Configuration%Pumps%CementPumpMaximumPressure !6000.d0 ![psi] + data%State%Pump(3)%MaxSPM = data%Configuration%Pumps%CementPumpMaximum ![spm] + data%State%Pump(3)%Trans_Ratio = 965.d0/data%State%Pump(3)%MaxSPM + data%State%Pump(3)%time_step = 0.1d0 !?????? niaz hast ya na?? + + data%State%Pump(3)%RateChange = (data%State%Pump(3)%RateChange*data%State%Pump(3)%Trans_Ratio)/60.d0 ![rpm/s ??] + data%State%Pump(3)%DelayToShutdown = data%State%Pump(3)%DelayToShutdown/60.d0 ![s] + data%State%Pump(3)%K_throttle = 0 + data%State%Pump(3)%N_old = 0.d0 + Call Pump_OffMode_Solver(3) + + +end subroutine Pumps_StartUp diff --git a/Equipments/Pumps/Pumps_VARIABLES.i90 b/Equipments/Pumps/Pumps_VARIABLES.i90 index 111fd60..bea4591 100644 --- a/Equipments/Pumps/Pumps_VARIABLES.i90 +++ b/Equipments/Pumps/Pumps_VARIABLES.i90 @@ -1,49 +1,49 @@ -# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_VARIABLES.f90" -MODULE Pumps_VARIABLES - - IMPLICIT NONE - PUBLIC - - - - -! REAL , PARAMETER :: pi=3.14159265d0 - - - Type, public:: Pumps_Var - REAL :: Total_Pump_GPM, Total_Pump_SPM, Total_Stroke_Counter_For_Plot - end Type Pumps_Var - Type(Pumps_Var) :: MPumps - - - -!**************************************************************************************************** -!**************** Define PUMP Array ************************************************************ - TYPE, PUBLIC :: Pump_Var - -!***** Pump_VARIABLES *************************** - INTEGER :: AssignmentSwitchh, Switch, K_throttle - INTEGER :: PowerFailMalf , BlowPopOffMalf , SPMGaugeMalf , Failure - - REAL :: Throttle, RateChange - REAL :: Mech_Efficiency, Vol_Efficiency, Trans_Ratio - REAL :: StandPipe_Pressure , Max_Pressure - REAL :: Speed, N_new, N_old, MaxSPM - REAL :: Flow_Rate, Hydraulic_HorsePower, Max_Horsepower, FlowRatePerSTK, Max_FlowRate, HorsePower - REAL :: time_step - - - - INTEGER :: BLWR ! 1=On , 0=Off - INTEGER :: Open_Close ! 1=Open , 0=Close - -!************* Sound_VARIABLES ********************** - INTEGER :: SoundSPM - Logical :: SoundBlower - - END TYPE Pump_Var - -!*********************************************************************************************** -!*********************************************************************************************** - -END MODULE Pumps_VARIABLES +# 1 "/home/admin/SimulationCore2/Equipments/Pumps/Pumps_VARIABLES.f90" +MODULE Pumps_VARIABLES + + IMPLICIT NONE + PUBLIC + + + + +! REAL , PARAMETER :: pi=3.14159265d0 + + + Type, public:: Pumps_Var + REAL :: Total_Pump_GPM, Total_Pump_SPM, Total_Stroke_Counter_For_Plot + end Type Pumps_Var + Type(Pumps_Var) :: MPumps + + + +!**************************************************************************************************** +!**************** Define PUMP Array ************************************************************ + TYPE, PUBLIC :: Pump_Var + +!***** Pump_VARIABLES *************************** + INTEGER :: AssignmentSwitchh, Switch, K_throttle + INTEGER :: PowerFailMalf , BlowPopOffMalf , SPMGaugeMalf , Failure + + REAL :: Throttle, RateChange, DelayToShutdown + REAL :: Mech_Efficiency, Vol_Efficiency, Trans_Ratio + REAL :: StandPipe_Pressure , Max_Pressure + REAL :: Speed, N_new, N_old, MaxSPM + REAL :: Flow_Rate, Hydraulic_HorsePower, Max_Horsepower, FlowRatePerSTK, Max_FlowRate, HorsePower + REAL :: time_step + + + + INTEGER :: BLWR ! 1=On , 0=Off + INTEGER :: Open_Close ! 1=Open , 0=Close + +!************* Sound_VARIABLES ********************** + INTEGER :: SoundSPM + Logical :: SoundBlower + + END TYPE Pump_Var + +!*********************************************************************************************** +!*********************************************************************************************** + +END MODULE Pumps_VARIABLES diff --git a/Equipments/RotaryTable/RTable_Inputs.f90 b/Equipments/RotaryTable/RTable_Inputs.f90 index 7bf5086..5f99804 100644 --- a/Equipments/RotaryTable/RTable_Inputs.f90 +++ b/Equipments/RotaryTable/RTable_Inputs.f90 @@ -2,29 +2,29 @@ subroutine RTable_INPUTS use CDrillingConsoleVariables use SimulationVariables - use SimulationVariables - ! use CSimulationVariables use UnitySignalsModule - ! use CTdsElevatorModesEnumVariables use CHoistingVariables - use SimulationVariables - use SimulationVariables !@ use TD_DrillStemComponents - use CUnityInputs + use UnityModule use CWarnings use UnitySignalVariables - use UnitySignalsModule + IMPLICIT NONE integer :: i + data%State%RTable%AssignmentSwitch = data%Equipments%DrillingConsole%AssignmentSwitch + + data%State%RTable%Switch = data%Equipments%DrillingConsole%RTSwitch - data%State%RTable%AssignmentSwitch = data%EquipmentControl%DrillingConsole%AssignmentSwitch - data%State%RTable%Switch = data%EquipmentControl%DrillingConsole%RTSwitch !data%State%RTable%GearsAbuse = RotaryGearsAbuse - data%State%RTable%Throttle = data%EquipmentControl%DrillingConsole%RTThrottle ![RPM] + + data%State%RTable%Throttle = data%Equipments%DrillingConsole%RTThrottle ![RPM] 0 [lb.in] ????????? + !data%State%RTable%RpmGaugeMalf !:dar module haye C meghdardehi mishe @@ -72,9 +72,6 @@ subroutine RTable_INPUTS end if - !===> Transmission Mode - data%State%RTable%Conv_Ratio = data%State%RTable%High_Conv_Ratio - end subroutine RTable_INPUTS \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_Inputs.i90 b/Equipments/RotaryTable/RTable_Inputs.i90 index 970b12c..61a8ea7 100644 --- a/Equipments/RotaryTable/RTable_Inputs.i90 +++ b/Equipments/RotaryTable/RTable_Inputs.i90 @@ -1,78 +1,78 @@ -# 1 "/home/admin/SimulationCore2/Equipments/RotaryTable/RTable_Inputs.f90" -subroutine RTable_INPUTS - - use CDrillingConsoleVariables - use SimulationVariables -! use CSimulationVariables - use UnitySignalsModule -! use CTdsElevatorModesEnumVariables - use CHoistingVariables - use TD_DrillStemComponents - use UnityModule - use CWarnings - use UnitySignalVariables - use UnitySignalsModule - - IMPLICIT NONE - integer :: i - - - - data%State%RTable%AssignmentSwitch = data%Equipments%DrillingConsole%AssignmentSwitch - data%State%RTable%Switch = data%Equipments%DrillingConsole%RTSwitch -!data%State%RTable%GearsAbuse = RotaryGearsAbuse - data%State%RTable%Throttle = data%Equipments%DrillingConsole%RTThrottle ![RPM] - data%State%RTable%String_Torque = data%State%TD_String%StringTorque*12.d0 ![lb.ft]*12 ---> [lb.in] ????????? -!data%State%RTable%RpmGaugeMalf !:dar module haye C meghdardehi mishe - - - - - data%State%RTable%N_new = data%State%RTable%Throttle - if ( data%State%RTable%MotorFaileMalf==1 ) then - data%State%RTable%N_new = 0.d0 - end if - data%State%RTable%String_Torque = 0.112984d0*data%State%RTable%String_Torque ![N.m] - - - -!===> String_JCoef Calculation - if ( data%Configuration%Hoisting%DriveType==0 ) then - if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then - data%State%RTable%RotaryMode = 1 - data%State%RTable%String_JCoef = 0.d0 - Do i = 1,data%State%TD_String%StringConfigurationCount - data%State%RTable%String_JCoef = data%State%RTable%String_JCoef+( (data%State%TD_DrillStem(i)%TotalWeight*((data%State%TD_DrillStem(i)%Id**2.d0)+(data%State%TD_DrillStem(i)%Od**2.d0)))/8.d0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) - End Do - data%State%RTable%String_JCoef = data%State%RTable%String_JCoef*0.0421401d0 ![kg.m^2] - else if ( Get_Slips() /= SLIPS_SET_END ) then - data%State%RTable%RotaryMode = 2 - data%State%RTable%String_JCoef = 0.d0 - data%State%RTable%String_Torque = 0.d0 - else - data%State%RTable%RotaryMode = 3 - data%State%RTable%String_JCoef = 0.d0 - data%State%RTable%String_Torque = 0.d0 - end if - else if ( data%Configuration%Hoisting%DriveType==1 ) then - if ( Get_IsKellyBushingSetInTable() .or. Get_Slips() == SLIPS_SET_END ) then !if rotary connected to string - data%State%RTable%RotaryMode = 4 - data%State%RTable%String_JCoef = 0.d0 - Do i = 1,data%State%TD_String%StringConfigurationCount - data%State%RTable%String_JCoef = data%State%RTable%String_JCoef+( (data%State%TD_DrillStem(i)%TotalWeight*((data%State%TD_DrillStem(i)%Id**2.d0)+(data%State%TD_DrillStem(i)%Od**2.d0)))/8.d0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) - End Do - data%State%RTable%String_JCoef = data%State%RTable%String_JCoef*0.0421401e0 ![kg.m^2] - else - data%State%RTable%RotaryMode = 5 - data%State%RTable%String_JCoef = 0.d0 - data%State%RTable%String_Torque = 0.d0 - end if - end if - - -!===> Transmission Mode - data%State%RTable%Conv_Ratio = data%State%RTable%High_Conv_Ratio - - - -end subroutine RTable_INPUTS +# 1 "/home/admin/SimulationCore2/Equipments/RotaryTable/RTable_Inputs.f90" +subroutine RTable_INPUTS + + use CDrillingConsoleVariables + use SimulationVariables + use UnitySignalsModule + use CHoistingVariables + use TD_DrillStemComponents + use UnityModule + use CWarnings + use UnitySignalVariables + + + IMPLICIT NONE + integer :: i + + + data%State%RTable%AssignmentSwitch = data%Equipments%DrillingConsole%AssignmentSwitch + + data%State%RTable%Switch = data%Equipments%DrillingConsole%RTSwitch + +!data%State%RTable%GearsAbuse = RotaryGearsAbuse + + data%State%RTable%Throttle = data%Equipments%DrillingConsole%RTThrottle ![RPM] 0 [lb.in] ????????? + +!data%State%RTable%RpmGaugeMalf !:dar module haye C meghdardehi mishe + + + + + data%State%RTable%N_new = data%State%RTable%Throttle + if ( data%State%RTable%MotorFaileMalf==1 ) then + data%State%RTable%N_new = 0.d0 + end if + data%State%RTable%String_Torque = 0.112984d0*data%State%RTable%String_Torque ![N.m] + + + +!===> String_JCoef Calculation + if ( data%Configuration%Hoisting%DriveType==0 ) then + if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + data%State%RTable%RotaryMode = 1 + data%State%RTable%String_JCoef = 0.d0 + Do i = 1,data%State%TD_String%StringConfigurationCount + data%State%RTable%String_JCoef = data%State%RTable%String_JCoef+( (data%State%TD_DrillStem(i)%TotalWeight*((data%State%TD_DrillStem(i)%Id**2.d0)+(data%State%TD_DrillStem(i)%Od**2.d0)))/8.d0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) + End Do + data%State%RTable%String_JCoef = data%State%RTable%String_JCoef*0.0421401d0 ![kg.m^2] + else if ( Get_Slips() /= SLIPS_SET_END ) then + data%State%RTable%RotaryMode = 2 + data%State%RTable%String_JCoef = 0.d0 + data%State%RTable%String_Torque = 0.d0 + else + data%State%RTable%RotaryMode = 3 + data%State%RTable%String_JCoef = 0.d0 + data%State%RTable%String_Torque = 0.d0 + end if + else if ( data%Configuration%Hoisting%DriveType==1 ) then + if ( Get_IsKellyBushingSetInTable() .or. Get_Slips() == SLIPS_SET_END ) then !if rotary connected to string + data%State%RTable%RotaryMode = 4 + data%State%RTable%String_JCoef = 0.d0 + Do i = 1,data%State%TD_String%StringConfigurationCount + data%State%RTable%String_JCoef = data%State%RTable%String_JCoef+( (data%State%TD_DrillStem(i)%TotalWeight*((data%State%TD_DrillStem(i)%Id**2.d0)+(data%State%TD_DrillStem(i)%Od**2.d0)))/8.d0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) + End Do + data%State%RTable%String_JCoef = data%State%RTable%String_JCoef*0.0421401e0 ![kg.m^2] + else + data%State%RTable%RotaryMode = 5 + data%State%RTable%String_JCoef = 0.d0 + data%State%RTable%String_Torque = 0.d0 + end if + end if + + + + +end subroutine RTable_INPUTS diff --git a/Equipments/RotaryTable/RTable_Outputs.f90 b/Equipments/RotaryTable/RTable_Outputs.f90 index 63b4166..b1318fc 100644 --- a/Equipments/RotaryTable/RTable_Outputs.f90 +++ b/Equipments/RotaryTable/RTable_Outputs.f90 @@ -2,11 +2,7 @@ subroutine RTable_Outputs use CDrillingConsoleVariables use SimulationVariables - use SimulationVariables use CDataDisplayConsole - use SimulationVariables - use SimulationVariables !@ - use SimulationVariables !@ Use CSounds IMPLICIT NONE @@ -21,7 +17,7 @@ subroutine RTable_Outputs !data%State%RTable%Speed !to other modules Call Set_RotaryRPMGauge( sngl(1-data%State%RTable%RpmGaugeMalf)*real(data%State%RTable%RpmGaugeOutput,8) ) ![RPM] - data%Equipments%DataDisplayConsole%RotaryTorqueGauge = data%State%RTable%TorqueGaugeOutput ![ft.lbf] + data%Equipments%DataDisplayConsole%RotaryTorqueGauge = data%State%RTable%TorqueGaugeOutput ![ft.lbf] data%Equipments%DrillingWatch%Torque = data%State%RTable%TorqueGaugeOutput Call Set_RotaryTorque(sngl(1-data%State%RTable%TorqueGaugeMalf)*real(data%State%RTable%TorqueGaugeOutput,8)) ![ft.lbf] diff --git a/Equipments/RotaryTable/RTable_Outputs.i90 b/Equipments/RotaryTable/RTable_Outputs.i90 index 6c83038..75a3fc5 100644 --- a/Equipments/RotaryTable/RTable_Outputs.i90 +++ b/Equipments/RotaryTable/RTable_Outputs.i90 @@ -1,33 +1,29 @@ -# 1 "/home/admin/SimulationCore2/Equipments/RotaryTable/RTable_Outputs.f90" -subroutine RTable_Outputs - - use CDrillingConsoleVariables - use SimulationVariables - use SimulationVariables - use CDataDisplayConsole - use SimulationVariables - use SimulationVariables !@ - use SimulationVariables !@ - Use CSounds - - IMPLICIT NONE - - - - data%Equipments%DrillingConsole%RTBLWR = data%State%RTable%BLWR - - Call SetSoundBlowerRT(data%State%RTable%SoundBlower) !.true. or .false. - Call SetSoundRT( data%State%RTable%SoundRPM ) ![RPM] , integer - -!data%State%RTable%Speed !to other modules - Call Set_RotaryRPMGauge( sngl(1-data%State%RTable%RpmGaugeMalf)*real(data%State%RTable%RpmGaugeOutput,8) ) ![RPM] - - data%Equipments%DataDisplayConsole%RotaryTorqueGauge = data%State%RTable%TorqueGaugeOutput ![ft.lbf] - data%Equipments%DrillingWatch%Torque = data%State%RTable%TorqueGaugeOutput - Call Set_RotaryTorque(sngl(1-data%State%RTable%TorqueGaugeMalf)*real(data%State%RTable%TorqueGaugeOutput,8)) ![ft.lbf] - -!RT_RPMUnityOutput = sngl(data%State%RTable%Switch)*-1.d0*RotaryRPMGauge - - - -end subroutine RTable_Outputs +# 1 "/home/admin/SimulationCore2/Equipments/RotaryTable/RTable_Outputs.f90" +subroutine RTable_Outputs + + use CDrillingConsoleVariables + use SimulationVariables + use CDataDisplayConsole + Use CSounds + + IMPLICIT NONE + + + + data%Equipments%DrillingConsole%RTBLWR = data%State%RTable%BLWR + + Call SetSoundBlowerRT(data%State%RTable%SoundBlower) !.true. or .false. + Call SetSoundRT( data%State%RTable%SoundRPM ) ![RPM] , integer + +!data%State%RTable%Speed !to other modules + Call Set_RotaryRPMGauge( sngl(1-data%State%RTable%RpmGaugeMalf)*real(data%State%RTable%RpmGaugeOutput,8) ) ![RPM] + + data%Equipments%DataDisplayConsole%RotaryTorqueGauge = data%State%RTable%TorqueGaugeOutput ![ft.lbf] + data%Equipments%DrillingWatch%Torque = data%State%RTable%TorqueGaugeOutput + Call Set_RotaryTorque(sngl(1-data%State%RTable%TorqueGaugeMalf)*real(data%State%RTable%TorqueGaugeOutput,8)) ![ft.lbf] + +!RT_RPMUnityOutput = sngl(data%State%RTable%Switch)*-1.d0*RotaryRPMGauge + + + +end subroutine RTable_Outputs diff --git a/Equipments/RotaryTable/RTable_StartUp.f90 b/Equipments/RotaryTable/RTable_StartUp.f90 index 81d1763..34c142a 100644 --- a/Equipments/RotaryTable/RTable_StartUp.f90 +++ b/Equipments/RotaryTable/RTable_StartUp.f90 @@ -12,14 +12,14 @@ subroutine RTable_StartUp data%State%RTable%High_Conv_Ratio = 4.825d0 data%State%RTable%Low_Conv_Ratio = 7.31d0 data%State%RTable%time_step = 0.1d0 ![s] - data%State%RTable%MaxRPM = 200.d0 ![RPM] !??????? motaghayere voroudi + data%State%RTable%MaxRPM = 130.d0 ![RPM] !??????? motaghayere voroudi data%State%RTable%MaxTorque = 1500.d0 ![ft.lbf] !??????? motaghayere voroudi data%State%RTable%RateChange = 193.d0 !data%State%RTable%RateChange/60.d0 ![RPM/s] ![cycle/min]=[RPM] !1[Hz]=60[RPM] data%State%RTable%J_coef = data%State%RTable%Inertia_Moment+(1.d0*(data%State%RTable%Inertia_Moment)) - data%State%RTable%Conv_Ratio = data%State%RTable%Low_Conv_Ratio + data%State%RTable%Conv_Ratio = 7.423d0 ! 965rpm/130(max output rpm) = 7.423 !data%State%RTable%Low_Conv_Ratio data%State%RTable%String_JCoef = 0.d0 data%State%RTable%Torque = 0.d0 data%State%RTable%K_throttle = 0 diff --git a/Equipments/RotaryTable/RTable_StartUp.i90 b/Equipments/RotaryTable/RTable_StartUp.i90 new file mode 100644 index 0000000..1250d77 --- /dev/null +++ b/Equipments/RotaryTable/RTable_StartUp.i90 @@ -0,0 +1,33 @@ +# 1 "/home/admin/SimulationCore2/Equipments/RotaryTable/RTable_StartUp.f90" +subroutine RTable_StartUp + + Use SimulationVariables + + IMPLICIT NONE + + + + data%State%RTable%Inertia_Moment = 23.261341d0 ! 23.261341[kg.m^2] = 552[lb.ft^2] + data%State%RTable%Mech_Efficiency = 0.93d0 + data%State%RTable%RateChange = 1.d0 ![RPM/min] !??????? motaghayere voroudi + data%State%RTable%High_Conv_Ratio = 4.825d0 + data%State%RTable%Low_Conv_Ratio = 7.31d0 + data%State%RTable%time_step = 0.1d0 ![s] + data%State%RTable%MaxRPM = 130.d0 ![RPM] !??????? motaghayere voroudi + data%State%RTable%MaxTorque = 1500.d0 ![ft.lbf] !??????? motaghayere voroudi + + + + data%State%RTable%RateChange = 193.d0 !data%State%RTable%RateChange/60.d0 ![RPM/s] ![cycle/min]=[RPM] !1[Hz]=60[RPM] + data%State%RTable%J_coef = data%State%RTable%Inertia_Moment+(1.d0*(data%State%RTable%Inertia_Moment)) + data%State%RTable%Conv_Ratio = 7.423d0 ! 965rpm/130(max output rpm) = 7.423 !data%State%RTable%Low_Conv_Ratio + data%State%RTable%String_JCoef = 0.d0 + data%State%RTable%Torque = 0.d0 + data%State%RTable%K_throttle = 0 + data%State%RTable%Speed = 0.d0 + data%State%RTable%TorqueGaugeOutput = 0.d0 + call RTable_OffMode + + + +end subroutine RTable_StartUp diff --git a/Equipments/RotaryTable/RotaryTableMain.i90 b/Equipments/RotaryTable/RotaryTableMain.i90 index 7bcdbe5..7f52074 100644 --- a/Equipments/RotaryTable/RotaryTableMain.i90 +++ b/Equipments/RotaryTable/RotaryTableMain.i90 @@ -1,49 +1,49 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/Equipments/RotaryTable/RotaryTableMain.f90" -module RotaryTableMain - implicit none - public - contains - - subroutine RotaryTable_Setup() -!use CSimulationVariables -!call OnSimulationInitialization%Add(RotaryTable_Init) -!call OnSimulationStop%Add(RotaryTable_Init) -!call OnRotaryTableStep%Add(RotaryTable_Step) -!call OnRotaryTableOutput%Add(RotaryTable_Output) -!call OnRotaryTableMain%Add(RotaryTableMainBody) - end subroutine - - subroutine RotaryTable_Init - Call RTable_StartUp - end subroutine RotaryTable_Init - - subroutine RotaryTable_Step - Call Rtable_MainSolver - end subroutine RotaryTable_Step - - subroutine RotaryTable_Output - implicit none - end subroutine RotaryTable_Output - - - subroutine RotaryTableMainBody - - use SimulationVariables !@ - - implicit none - - - Call RTable_StartUp - - loopRtablestart : do - - Call RTable_MainSolver - - end do loopRtablestart - - - end subroutine RotaryTableMainBody - - - -end module RotaryTableMain +# 1 "/home/admin/SimulationCore2/Equipments/RotaryTable/RotaryTableMain.f90" +module RotaryTableMain + implicit none + public + contains + + subroutine RotaryTable_Setup() +!use CSimulationVariables +!call OnSimulationInitialization%Add(RotaryTable_Init) +!call OnSimulationStop%Add(RotaryTable_Init) +!call OnRotaryTableStep%Add(RotaryTable_Step) +!call OnRotaryTableOutput%Add(RotaryTable_Output) +!call OnRotaryTableMain%Add(RotaryTableMainBody) + end subroutine + + subroutine RotaryTable_Init + Call RTable_StartUp + end subroutine RotaryTable_Init + + subroutine RotaryTable_Step + Call Rtable_MainSolver + end subroutine RotaryTable_Step + + subroutine RotaryTable_Output + implicit none + end subroutine RotaryTable_Output + + + subroutine RotaryTableMainBody + + use SimulationVariables !@ + + implicit none + + + Call RTable_StartUp + + loopRtablestart : do + + Call RTable_MainSolver + + end do loopRtablestart + + + end subroutine RotaryTableMainBody + + + +end module RotaryTableMain diff --git a/FluidFlow/Well_Pressure_Data_Transfer.i90 b/FluidFlow/Well_Pressure_Data_Transfer.i90 index cce7882..df4910d 100644 --- a/FluidFlow/Well_Pressure_Data_Transfer.i90 +++ b/FluidFlow/Well_Pressure_Data_Transfer.i90 @@ -1,4 +1,4 @@ -# 1 "/mnt/c/Projects/VSIM/SimulationCore2/FluidFlow/Well_Pressure_Data_Transfer.f90" +# 1 "/home/admin/SimulationCore2/FluidFlow/Well_Pressure_Data_Transfer.f90" SUBROUTINE WellPressureDataTransfer !! This subroutine calculates pressure distribution in well diff --git a/SimulationCore2 b/SimulationCore2 index 07ef364..3affe50 100755 Binary files a/SimulationCore2 and b/SimulationCore2 differ diff --git a/config-asiatech.json b/config-asiatech.json index 79f62de..cbdd4b7 100644 --- a/config-asiatech.json +++ b/config-asiatech.json @@ -7,5 +7,5 @@ "logging":3, "process_name": "SimulationCore2", "work_dir" : ".", - "step_time" : 1000 + "step_time" : 100 } \ No newline at end of file diff --git a/redisContent.json b/redisContent.json index aea87f1..1894109 100644 --- a/redisContent.json +++ b/redisContent.json @@ -1 +1 @@ -{"status":1,"speed":1,"endstep":0,"Configuration":{"StringConfiguration":{"StringConfigurationItems":[{"ComponentLength":1.0,"ComponentType":0,"Grade":null,"LengthPerJoint":1.0,"NominalId":203.0,"NominalOd":0.0,"NominalToolJointOd":0.0,"NumberOfJoint":1.0,"WeightPerLength":74.41},{"ComponentLength":600.0,"ComponentType":2,"Grade":null,"LengthPerJoint":30.0,"NominalId":203.0,"NominalOd":0.0,"NominalToolJointOd":0.0,"NumberOfJoint":20.0,"WeightPerLength":74.41},{"ComponentLength":600.0,"ComponentType":3,"Grade":null,"LengthPerJoint":30.0,"NominalId":228.0,"NominalOd":0.0,"NominalToolJointOd":0.0,"NumberOfJoint":20.0,"WeightPerLength":74.41}],"BitDefenition":{"BitCodeHundreds":1,"BitCodeOnes":3,"BitCodeTens":2,"BitLength":1.0,"BitNozzleNo":3,"BitNozzleSize":355.6,"BitSize":215.9,"BitType":0,"BitWeightPerLength":74.41,"FloatValve":true}},"Formations":[{"Abrasiveness":80.0,"Drillablity":5.0,"PorePressureGradient":10.43,"Thickness":990.0,"ThresholdWeight":0.5,"Top":10.0},{"Abrasiveness":85.0,"Drillablity":30.0,"PorePressureGradient":11.31,"Thickness":600.0,"ThresholdWeight":0.7,"Top":1000.0},{"Abrasiveness":85.0,"Drillablity":30.0,"PorePressureGradient":12.44,"Thickness":1.0,"ThresholdWeight":0.8,"Top":1600.0},{"Abrasiveness":90.0,"Drillablity":15.0,"PorePressureGradient":14.7,"Thickness":200.0,"ThresholdWeight":0.8,"Top":1601.0}],"Reservoir":{"AutoMigrationRate":100.0,"FluidGradient":0.0,"FluidType":0,"FluidViscosity":0.0,"FormationNo":3,"FormationPermeability":500.0,"FormationTop":1601.0,"GeothermalGradient":0.0,"InactiveInflux":false,"IsAutoMigrationRateSelected":false,"MakeKickSinglePacket":false,"PressureGradient":14.7},"Shoe":{"Breakdown":6.21,"FormationNo":0,"FracturePropagation":5.86,"InactiveFracture":false,"LeakOff":6.21,"ShoeDepth":5200.0},"Accumulator":{"AccumulatorMinimumOperatingPressure":8273.0,"AccumulatorSystemSize":1.0,"AirPlungerPumpOutput":1.0,"ElectricPumpOutput":0.0,"NumberOfBottels":20,"OilTankVolume":1.0,"PrechargePressure":6901.0,"StartPressure":19305.0,"StartPressure2":17926.0,"StopPressure":20684.0,"StopPressure2":20070.0},"BopStack":{"AboveAnnularHeight":10.0,"AnnularPreventerClose":2.86,"AnnularPreventerHeight":10.0,"AnnularPreventerOpen":2.25,"AnnularStringDrag":100.0,"BlindRamClose":0.92,"BlindRamHeight":16.24,"BlindRamOpen":0.87,"ChokeClose":0.24,"ChokeLineId":2800.0,"ChokeLineLength":12.0,"ChokeOpen":0.24,"GroundLevel":30.0,"KillClose":0.24,"KillHeight":18.8,"KillOpen":0.24,"LowerRamClose":0.59,"LowerRamHeight":21.35,"LowerRamOpen":0.56,"RamStringDrag":102800.6484375,"UpperRamClose":0.59,"UpperRamHeight":14.632,"UpperRamOpen":0.56},"Hoisting":{"DrillingLineBreakingLoad":0.0,"DriveType":0,"KellyWeight":0.0,"NumberOfLine":0,"TopDriveWeight":0.0,"TravelingBlockWeight":0.0},"Power":{"CementPump":298.0,"Drawworks":604.0,"GeneratorPowerRating":1200.0,"MudPump1":1194.0,"MudPump2":1194.0,"NumberOfgenerators":4,"RotaryTable":604.0,"TopDrive":775.0},"Pumps":{"MudPump1LinerDiameter":6.4,"MudPump1Stroke":120.0,"MudPump1MechanicalEfficiency":0.9,"MudPump1VolumetricEfficiency":6.4,"MudPump1Output":0.12,"MudPump1OutputBblStroke":0.0,"MudPump1Maximum":140.0,"MudPump1ReliefValvePressure":0.9,"MudPump2LinerDiameter":6.4,"MudPump2Stroke":120.0,"MudPump2MechanicalEfficiency":0.9,"MudPump2VolumetricEfficiency":6.4,"MudPump2Output":0.12,"MudPump2OutputBblStroke":0.0,"MudPump2Maximum":120.0,"MudPump2ReliefValvePressure":0.9,"CementPumpLinerDiameter":6.4,"CementPumpStroke":120.0,"CementPumpMechanicalEfficiency":1.0,"CementPumpVolumetricEfficiency":6.4,"CementPumpOutput":0.12,"CementPumpOutputBblStroke":0.0,"CementPumpMaximum":120.0,"CementPumpReliefValvePressure":0.9,"MudPump1ReliefValveIsSet":false,"MudPump2ReliefValveIsSet":false,"CementPumpReliefValveIsSet":false,"ManualPumpPower":false,"Valve1":false,"Valve2":false,"Valve3":false,"Valve4":false,"Valve5":false,"MudPump1MaximumPressure":0.0,"MudPump1PumpRateChange":0.0,"MudPump1SurfaceLineLength":0.0,"MudPump1DelayToShutdown":0.0,"MudPump2MaximumPressure":0.0,"MudPump2PumpRateChange":0.0,"MudPump2SurfaceLineLength":0.0,"MudPump2DelayToShutdown":0.0,"CementPumpMaximumPressure":0.0,"CementPumpPumpRateChange":0.0,"CementPumpSurfaceLineLength":0.0,"CementPumpDelayToShutdown":0.0,"MudPump1VolumetricOutput":0.0,"MudPump2VolumetricOutput":0.0,"CementPumpVolumetricOutput":0.0},"RigSize":{"RigType":0,"CrownHeight":0.0,"MonkeyBoandHeight":0.0,"RigFloorHeight":0.0},"CasingLinerChoke":{"CasingDepth":4100.0,"CasingId":220.5,"CasingOd":243.84,"CasingWeight":69.94,"CasingCollapsePressure":17236.86,"CasingTensileStrength":1270.06,"LinerTopDepth":0.0,"LinerLength":0.0,"LinerId":0.0,"LinerOd":0.0,"LinerWeight":0.0,"LinerCollapsePressure":0.0,"LinerTensileStrength":0.0,"OpenHoleId":215.9,"OpenHoleLength":1776.49},"Path":{"Items":[{"HoleType":0,"Angle":0.0,"Length":2000.0,"FinalAngle":0.0,"TotalLength":2000.0,"MeasuredDepth":2000.0,"TotalVerticalDepth":0.0}]},"Mud":{"ActiveMudType":0,"ActiveRheologyModel":0,"ActiveMudVolume":68.68,"ActiveMudVolumeGal":2884.5600000000004,"ActiveDensity":1269.461181640625,"ActivePlasticViscosity":23.0,"ActiveYieldPoint":18.3,"ActiveThetaThreeHundred":0.0,"ActiveThetaSixHundred":0.0,"ReserveMudType":0,"ReserveMudVolume":63.59,"ReserveMudVolumeGal":0.0,"ReserveDensity":1497.0059814453125,"ReservePlasticViscosity":23.0,"ReserveYieldPoint":21.13,"ReserveThetaThreeHundred":0.0,"ReserveThetaSixHundred":0.0,"ActiveTotalTankCapacity":190.78,"ActiveTotalTankCapacityGal":8012.76,"ActiveSettledContents":0.0,"ActiveSettledContentsGal":0.0,"ActiveTotalContents":0.0,"ActiveTotalContentsGal":0.0,"ActiveAutoDensity":false,"InitialTripTankMudVolume":23.18,"InitialTripTankMudVolumeGal":133.56,"PedalFlowMeter":1600.0}},"Problems":{"BitProblems":{"JetWashout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"PlugJets":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"JetWashoutCount":0,"PlugJetsCount":0},"BopProblems":{"AnnularWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AnnularFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AnnularLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"UpperRamWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"UpperRamFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"UpperRamLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MiddleRamWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MiddleRamFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MiddleRamLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"LowerRamWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"LowerRamFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"LowerRamLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorPumpFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorPumpLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorSystemFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorSystemLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"ChokeProblems":{"HydraulicChoke1Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke1Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke1Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke2Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke2Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke2Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke2Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke2Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke2Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ChokePanelAirFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1PluggedPercent":0,"HydraulicChoke2PluggedPercent":0,"HydraulicChoke1PluggedPercent":0,"ManualChoke2PluggedPercent":0},"DrillStemsProblems":{"StringDragIncrease":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StringTorqueIncrease":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StringTorqueFluctuation":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StringDragIncreaseTime":0.0,"StringTorqueIncreaseTime":0.0},"GaugesProblems":{"WeightIndicator":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RotaryRpm":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RotaryTorque":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StandPipePressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CasingPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump1Strokes":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump2Strokes":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ReturnLineTemperature":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"TripTank":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"PitGainLoss":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MudTankVolume":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ReturnMudFlow":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"TorqueLimit":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"PowerLimit":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManifoldPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AnnularPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RigAirPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StandPipe1":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StandPipe2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"DrillPipePressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ChokePosition":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CasingPressure2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"HoistingProblems":{"MotorFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ClutchEngage":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ClutchDisengage":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"KickProblems":{"Kick":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"FluidType":0,"FlowRate":0,"OverBalancePressure":0,"IsAutoMigrationRateSelected":false,"AutoMigrationRate":0.0},"LostProblems":{"LostCirculation":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"FlowRate":0.0},"MudTreatmentProblems":{"Degasser":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ShaleShaker":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Desander":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Desilter":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"OtherProblems":{"RigAlarm":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RigWaterSupply":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RigAir":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen1":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen3":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen4":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr1":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr3":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr4":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"PumpProblems":{"Pump1PowerFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump1BlowPopOffValve":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump2PowerFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump2BlowPopOffValve":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CementPumpPowerFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CementPumpBlowPopOffValve":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"RotaryProblems":{"MotorFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"OverideTorqueLimit":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}}},"Equipments":{"BopControl":{"ManifoldPressureGauge":0.0,"AirSupplyPressureGauge":0.0,"AccumulatorPressureGauge":0.0,"AnnularPressureGauge":0.0,"AnnularOpenLED":0,"AnnularCloseLED":0,"UpperRamsOpenLED":0,"UpperRamsCloseLED":0,"MiddleRamsOpenLED":0,"MiddleRamsCloseLED":0,"KillLineOpenLED":0,"KillLineCloseLED":0,"ChokeLineOpenLED":0,"ChokeLineCloseLED":0,"LowerRamsOpenLED":0,"LowerRamsCloseLED":0,"AnnularStatus":0.0,"UpperRamsStatus":0.0,"MiddleRamsStatus":0.0,"LowerRamsStatus":0.0,"AirMasterValve":0.0,"KillLineValve":0.0,"ChokeLineValve":0.0,"UpperRamsValve":1.0,"LowerRamsValve":0.0,"AnnularValve":0.0},"ChokeControl":{"StandPipePressure":0.0,"CasingPressure":0.0,"ChokePosition":0.0,"ChokePanelSPMCounter":0.0,"ChokePanelTotalStrokeCounter":0.0,"Choke1LED":0,"Choke2LED":0,"ChokePanelRigAirSwitch":true,"ChokePanelStrokeResetSwitch":false,"ChokeControlLever":1.0,"ChokePanelPumpSelectorSwitch":1.0},"ChokeManifold":{"HydraulicChock1":0,"HydraulicChock2":0,"HyChock1OnProblem":false,"HyChock2OnProblem":false,"LeftManChokeOnProblem":false,"RightManChokeOnProblem":false,"ChokeManifoldValve1":false,"ChokeManifoldValve2":false,"ChokeManifoldValve3":false,"ChokeManifoldValve4":false,"ChokeManifoldValve5":false,"ChokeManifoldValve6":false,"ChokeManifoldValve7":false,"ChokeManifoldValve8":false,"ChokeManifoldValve9":true,"ChokeManifoldValve10":false,"ChokeManifoldValve11":false,"ChokeManifoldValve12":false,"ChokeManifoldValve13":false,"LeftManualChoke":0.0,"RightManualChoke":0.0},"DataDisplay":{"WOBPointer":0.0,"HookLoadPointer":0.0,"TripTankGauge":0.0,"TripTankAlarmLED":0,"TripTankPumpLED":0,"StandPipePressureGauge":0.0,"CasingPressureGauge":0.0,"MP1SPMGauge":0.0,"MP2SPMGauge":0.0,"ReturnLineTempGauge":0.0,"RotaryTorqueGauge":0.0,"RotaryRPMGauge":0.0,"AcidGasDetectionLED":0,"TotalStrokeCounter":0.0,"PitGainLossGauge":0.0,"MudTanksVolumeGauge":0.0,"MVTAlarmLED":0,"MVTSetAlarmSwitch":0,"ReturnMudFlowGauge":0.0,"FillStrokeCounter":0.0,"MFFITotalStrokeCounter":0.0,"MFFIAlarmLED":0,"MFFISetAlarmSwitch":0,"MFFIPumpLED":0,"TotalWellDepth":0.0,"BitDepth":0.0,"HookLoad":0.0,"StandPipePressure":0.0,"CasingPressure":0.0,"MP1SPM":3.0,"MP2SPM":8.0,"RTTorque":10.0,"RTRPM":8.0,"WOP":0.0,"ROP":0.0,"MudWeightIn":0.0,"MudWeightOut":0.0,"Buzzer1":false,"Buzzer2":false,"Buzzer3":false,"Buzzer4":false,"MVTAlarmHigh":27.0,"MVTAlarmLow":-30.0,"MFFIAlarmHigh":40.0,"MFFIAlarmLow":0.0},"Drilling":{"MP1Throttle":12.0,"MP2Throttle":14.0,"RTThrottle":5.0,"DWThrottle":176.936170212766,"ParkingBrakeLed":false,"GEN1LED":0,"GEN2LED":0,"GEN3LED":0,"GEN4LED":0,"SCR1LED":0,"SCR2LED":0,"SCR3LED":0,"SCR4LED":0,"MP1BLWR":0,"MP2BLWR":0,"DWBLWR":1,"RTBLWR":0,"PWRLIM":0,"PWRLIMMTR":0.0,"RTTorqueLimitGauge":0.0,"AutoDWLED":0,"GEN1BTNLED":0,"GEN2BTNLED":0,"GEN3BTNLED":0,"GEN4BTNLED":0,"OpenKellyCockLed":0,"CloseKellyCockLed":0,"OpenSafetyValveLed":0,"CloseSafetyValveLed":0,"IRSafetyValveLed":0,"IRIBopLed":0,"LatchPipeLED":0,"UnlatchPipeLED":0,"SwingLed":0,"FillMouseHoleLed":0,"MP1CPSwitch":-1,"MP2CPSwitch":-1,"DWSwitch":0,"RTSwitch":0,"ResetWob":0,"TotalStrokeCounterResetSwitch":0},"Hook":{"HookHeight_S":0.0,"HookHeight":0.0},"StandPipeManifold":{"StandPipeGauge1":0.0,"StandPipeGauge2":0.0,"StandPipeManifoldValve1":false,"StandPipeManifoldValve2":true,"StandPipeManifoldValve3":false,"StandPipeManifoldValve4":false,"StandPipeManifoldValve5":true,"StandPipeManifoldValve6":false,"StandPipeManifoldValve7":false,"StandPipeManifoldValve8":false,"StandPipeManifoldValve9":false,"StandPipeManifoldValve10":false,"StandPipeManifoldValve11":false,"StandPipeManifoldValve12":false,"StandPipeManifoldValve13":false,"StandPipeManifoldValve14":false,"StandPipeManifoldValve15":false},"DrillingWatch":{"Depth":0.0,"BitPosition":0.0,"HookLoad":0.0,"WeightOnBit":0.0,"RPM":0.0,"ROP":0.0,"Torque":0.0,"PumpPressure":0.0,"SPM1":0.0,"SPM2":0.0,"CasingPressure":0.0,"PercentFlow":273.0,"PitGainLose":0.0,"PitVolume":125.0,"KillMudVolume":0.0,"TripTankVolume":0.0,"MudWeightIn":0.0,"FillVolume":0.0,"MudWeightOut":0.0}}} +{"status":1,"speed":3,"endstep":0,"Configuration":{"StringConfiguration":{"StringConfigurationItems":[{"ComponentLength":1.0,"ComponentType":0,"Grade":null,"LengthPerJoint":1.0,"NominalId":203.0,"NominalOd":0.0,"NominalToolJointOd":0.0,"NumberOfJoint":1.0,"WeightPerLength":74.41},{"ComponentLength":600.0,"ComponentType":2,"Grade":null,"LengthPerJoint":30.0,"NominalId":203.0,"NominalOd":0.0,"NominalToolJointOd":0.0,"NumberOfJoint":20.0,"WeightPerLength":74.41},{"ComponentLength":600.0,"ComponentType":3,"Grade":null,"LengthPerJoint":30.0,"NominalId":228.0,"NominalOd":0.0,"NominalToolJointOd":0.0,"NumberOfJoint":20.0,"WeightPerLength":74.41}],"BitDefenition":{"BitCodeHundreds":1,"BitCodeOnes":3,"BitCodeTens":2,"BitLength":1.0,"BitNozzleNo":3,"BitNozzleSize":355.6,"BitSize":215.9,"BitType":0,"BitWeightPerLength":74.41,"FloatValve":true}},"Formations":[{"Abrasiveness":80.0,"Drillablity":5.0,"PorePressureGradient":10.43,"Thickness":990.0,"ThresholdWeight":0.5,"Top":10.0},{"Abrasiveness":85.0,"Drillablity":30.0,"PorePressureGradient":11.31,"Thickness":600.0,"ThresholdWeight":0.7,"Top":1000.0},{"Abrasiveness":85.0,"Drillablity":30.0,"PorePressureGradient":12.44,"Thickness":1.0,"ThresholdWeight":0.8,"Top":1600.0},{"Abrasiveness":90.0,"Drillablity":15.0,"PorePressureGradient":14.7,"Thickness":200.0,"ThresholdWeight":0.8,"Top":1601.0}],"Reservoir":{"AutoMigrationRate":100.0,"FluidGradient":0.0,"FluidType":0,"FluidViscosity":0.0,"FormationNo":3,"FormationPermeability":500.0,"FormationTop":1601.0,"GeothermalGradient":0.0,"InactiveInflux":false,"IsAutoMigrationRateSelected":false,"MakeKickSinglePacket":false,"PressureGradient":14.7},"Shoe":{"Breakdown":6.21,"FormationNo":0,"FracturePropagation":5.86,"InactiveFracture":false,"LeakOff":6.21,"ShoeDepth":5200.0},"Accumulator":{"AccumulatorMinimumOperatingPressure":8273.0,"AccumulatorSystemSize":1.0,"AirPlungerPumpOutput":1.0,"ElectricPumpOutput":0.0,"NumberOfBottels":20,"OilTankVolume":1.0,"PrechargePressure":6901.0,"StartPressure":19305.0,"StartPressure2":17926.0,"StopPressure":20684.0,"StopPressure2":20070.0},"BopStack":{"AboveAnnularHeight":10.0,"AnnularPreventerClose":2.86,"AnnularPreventerHeight":10.0,"AnnularPreventerOpen":2.25,"AnnularStringDrag":100.0,"BlindRamClose":0.92,"BlindRamHeight":16.24,"BlindRamOpen":0.87,"ChokeClose":0.24,"ChokeLineId":2800.0,"ChokeLineLength":12.0,"ChokeOpen":0.24,"GroundLevel":30.0,"KillClose":0.24,"KillHeight":18.8,"KillOpen":0.24,"LowerRamClose":0.59,"LowerRamHeight":21.35,"LowerRamOpen":0.56,"RamStringDrag":102800.65,"UpperRamClose":0.59,"UpperRamHeight":14.632,"UpperRamOpen":0.56},"Hoisting":{"DrillingLineBreakingLoad":0.0,"DriveType":0,"KellyWeight":0.0,"NumberOfLine":0,"TopDriveWeight":0.0,"TravelingBlockWeight":0.0},"Power":{"CementPump":298.0,"Drawworks":604.0,"GeneratorPowerRating":1200.0,"MudPump1":1194.0,"MudPump2":1194.0,"NumberOfgenerators":4,"RotaryTable":604.0,"TopDrive":775.0},"Pumps":{"MudPump1LinerDiameter":6.4,"MudPump1Stroke":120.0,"MudPump1MechanicalEfficiency":0.9,"MudPump1VolumetricEfficiency":6.4,"MudPump1Output":10.0,"MudPump1OutputBblStroke":10.0,"MudPump1Maximum":120.0,"MudPump1ReliefValvePressure":41368.469,"MudPump2LinerDiameter":6.4,"MudPump2Stroke":120.0,"MudPump2MechanicalEfficiency":0.9,"MudPump2VolumetricEfficiency":6.4,"MudPump2Output":10.0,"MudPump2OutputBblStroke":10.0,"MudPump2Maximum":120.0,"MudPump2ReliefValvePressure":41368.469,"CementPumpLinerDiameter":6.4,"CementPumpStroke":120.0,"CementPumpMechanicalEfficiency":1.0,"CementPumpVolumetricEfficiency":6.4,"CementPumpOutput":10.0,"CementPumpOutputBblStroke":10.0,"CementPumpMaximum":120.0,"CementPumpReliefValvePressure":68.947,"MudPump1ReliefValveIsSet":true,"MudPump2ReliefValveIsSet":true,"CementPumpReliefValveIsSet":true,"ManualPumpPower":false,"Valve1":false,"Valve2":false,"Valve3":false,"Valve4":false,"Valve5":false,"MudPump1MaximumPressure":41368.469,"MudPump1PumpRateChange":5000.0,"MudPump1SurfaceLineLength":2.0,"MudPump1DelayToShutdown":5.0,"MudPump2MaximumPressure":41368.469,"MudPump2PumpRateChange":5000.0,"MudPump2SurfaceLineLength":4.0,"MudPump2DelayToShutdown":5.0,"CementPumpMaximumPressure":41368.469,"CementPumpPumpRateChange":5000.0,"CementPumpSurfaceLineLength":2.0,"CementPumpDelayToShutdown":5.0,"MudPump1VolumetricOutput":10.0,"MudPump2VolumetricOutput":10.0,"CementPumpVolumetricOutput":10.0},"RigSize":{"RigType":0,"CrownHeight":0.0,"MonkeyBoandHeight":0.0,"RigFloorHeight":0.0},"CasingLinerChoke":{"CasingDepth":4100.0,"CasingId":220.5,"CasingOd":243.84,"CasingWeight":69.94,"CasingCollapsePressure":17236.86,"CasingTensileStrength":1270.06,"LinerTopDepth":0.0,"LinerLength":0.0,"LinerId":0.0,"LinerOd":0.0,"LinerWeight":0.0,"LinerCollapsePressure":0.0,"LinerTensileStrength":0.0,"OpenHoleId":215.9,"OpenHoleLength":1776.49},"Path":{"Items":[{"HoleType":0,"Angle":0.0,"Length":2000.0,"FinalAngle":0.0,"TotalLength":2000.0,"MeasuredDepth":2000.0,"TotalVerticalDepth":0.0}]},"Mud":{"ActiveMudType":0,"ActiveRheologyModel":0,"ActiveMudVolume":68.68,"ActiveMudVolumeGal":2884.5600000000004,"ActiveDensity":1269.461181640625,"ActivePlasticViscosity":23.0,"ActiveYieldPoint":18.3,"ActiveThetaThreeHundred":0.0,"ActiveThetaSixHundred":0.0,"ReserveMudType":0,"ReserveMudVolume":63.59,"ReserveMudVolumeGal":0.0,"ReserveDensity":1497.0059814453125,"ReservePlasticViscosity":23.0,"ReserveYieldPoint":21.13,"ReserveThetaThreeHundred":0.0,"ReserveThetaSixHundred":0.0,"ActiveTotalTankCapacity":190.78,"ActiveTotalTankCapacityGal":8012.76,"ActiveSettledContents":0.0,"ActiveSettledContentsGal":0.0,"ActiveTotalContents":0.0,"ActiveTotalContentsGal":0.0,"ActiveAutoDensity":false,"InitialTripTankMudVolume":3.18,"InitialTripTankMudVolumeGal":133.56,"PedalFlowMeter":1600.0}},"Problems":{"BitProblems":{"JetWashout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"PlugJets":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"JetWashoutCount":0,"PlugJetsCount":0},"BopProblems":{"AnnularWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AnnularFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AnnularLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"UpperRamWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"UpperRamFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"UpperRamLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MiddleRamWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MiddleRamFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MiddleRamLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"LowerRamWash":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"LowerRamFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"LowerRamLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorPumpFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorPumpLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorSystemFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorSystemLeak":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"ChokeProblems":{"HydraulicChoke1Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke1Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke1Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke2Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke2Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"HydraulicChoke2Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke2Plugged":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke2Fail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke2Washout":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ChokePanelAirFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManualChoke1PluggedPercent":0,"HydraulicChoke2PluggedPercent":0,"HydraulicChoke1PluggedPercent":0,"ManualChoke2PluggedPercent":0},"DrillStemsProblems":{"StringDragIncrease":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StringTorqueIncrease":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StringTorqueFluctuation":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StringDragIncreaseTime":0.0,"StringTorqueIncreaseTime":0.0},"GaugesProblems":{"WeightIndicator":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RotaryRpm":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RotaryTorque":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StandPipePressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CasingPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump1Strokes":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump2Strokes":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ReturnLineTemperature":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"TripTank":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"PitGainLoss":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"MudTankVolume":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ReturnMudFlow":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"TorqueLimit":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"PowerLimit":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AccumulatorPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ManifoldPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"AnnularPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RigAirPressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StandPipe1":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"StandPipe2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"DrillPipePressure":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ChokePosition":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CasingPressure2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"HoistingProblems":{"MotorFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ClutchEngage":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ClutchDisengage":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"KickProblems":{"Kick":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"FluidType":0,"FlowRate":0,"OverBalancePressure":0,"IsAutoMigrationRateSelected":false,"AutoMigrationRate":0.0},"LostProblems":{"LostCirculation":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"FlowRate":0.0},"MudTreatmentProblems":{"Degasser":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"ShaleShaker":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Desander":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Desilter":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"OtherProblems":{"RigAlarm":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RigWaterSupply":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"RigAir":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen1":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen3":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Gen4":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr1":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr2":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr3":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Scr4":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"PumpProblems":{"Pump1PowerFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump1BlowPopOffValve":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump2PowerFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"Pump2BlowPopOffValve":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CementPumpPowerFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"CementPumpBlowPopOffValve":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}},"RotaryProblems":{"MotorFail":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0},"OverideTorqueLimit":{"ProblemType":0,"StatusType":0,"Value":0.0,"DueValue":0.0}}},"Equipments":{"BopControl":{"ManifoldPressureGauge":0.0,"AirSupplyPressureGauge":0.0,"AccumulatorPressureGauge":0.0,"AnnularPressureGauge":0.0,"AnnularOpenLED":0,"AnnularCloseLED":0,"UpperRamsOpenLED":0,"UpperRamsCloseLED":0,"MiddleRamsOpenLED":0,"MiddleRamsCloseLED":0,"KillLineOpenLED":0,"KillLineCloseLED":0,"ChokeLineOpenLED":0,"ChokeLineCloseLED":0,"LowerRamsOpenLED":0,"LowerRamsCloseLED":0,"AnnularStatus":0.0,"UpperRamsStatus":0.0,"MiddleRamsStatus":1.0,"LowerRamsStatus":-1.0,"AirMasterValve":-1.0,"KillLineValve":-1.0,"ChokeLineValve":-1.0,"UpperRamsValve":-1.0,"LowerRamsValve":1.0,"AnnularValve":-1.0,"ByePassValve":1.0,"MiddleRamsValve":-1.0},"ChokeControl":{"StandPipePressure":0.0,"CasingPressure":0.0,"ChokePosition":0.0,"ChokePanelSPMCounter":0.0,"ChokePanelTotalStrokeCounter":0.0,"Choke1LED":0,"Choke2LED":0,"ChokePanelRigAirSwitch":true,"ChokePanelStrokeResetSwitch":true,"ChokeControlLever":-1.0,"ChokePanelPumpSelectorSwitch":3.0,"ChokeSelectorSwitch":true},"ChokeManifold":{"HydraulicChock1":0,"HydraulicChock2":0,"HyChock1OnProblem":false,"HyChock2OnProblem":false,"LeftManChokeOnProblem":false,"RightManChokeOnProblem":false,"ChokeManifoldValve1":false,"ChokeManifoldValve2":false,"ChokeManifoldValve3":false,"ChokeManifoldValve4":false,"ChokeManifoldValve5":false,"ChokeManifoldValve6":false,"ChokeManifoldValve7":false,"ChokeManifoldValve8":false,"ChokeManifoldValve9":false,"ChokeManifoldValve10":false,"ChokeManifoldValve11":false,"ChokeManifoldValve12":false,"ChokeManifoldValve13":false,"LeftManualChoke":0.0,"RightManualChoke":0.0},"DataDisplay":{"WOBPointer":0.0,"HookLoadPointer":0.0,"TripTankGauge":0.0,"TripTankAlarmLED":0,"TripTankPumpLED":0,"StandPipePressureGauge":0.0,"CasingPressureGauge":0.0,"MP1SPMGauge":0.0,"MP2SPMGauge":0.0,"ReturnLineTempGauge":0.0,"RotaryTorqueGauge":0.0,"RotaryRPMGauge":0.0,"AcidGasDetectionLED":0,"TotalStrokeCounter":0.0,"PitGainLossGauge":0.0,"MudTanksVolumeGauge":0.0,"MVTAlarmLED":0,"MVTSetAlarmSwitch":0,"ReturnMudFlowGauge":0.0,"FillStrokeCounter":0.0,"MFFITotalStrokeCounter":0.0,"MFFIAlarmLED":0,"MFFISetAlarmSwitch":-1,"MFFIPumpLED":0,"TotalWellDepth":0.0,"BitDepth":0.0,"HookLoad":0.0,"StandPipePressure":0.0,"CasingPressure":0.0,"MP1SPM":0.0,"MP2SPM":0.0,"RTTorque":0.0,"RTRPM":0.0,"WOP":0.0,"ROP":0.0,"MudWeightIn":0.0,"MudWeightOut":0.0,"Buzzer1":false,"Buzzer2":false,"Buzzer3":false,"Buzzer4":false,"MVTAlarmHigh":46.0,"MVTAlarmLow":-28.0,"MFFIAlarmHigh":73.0,"MFFIAlarmLow":35.0,"TotalStrokeCounterResetSwitch":0,"ResetWob":0},"Drilling":{"MP1Throttle":0.0,"MP2Throttle":0.0,"RTThrottle":6.0,"DWThrottle":0.0,"ParkingBrakeLed":false,"GEN1LED":0,"GEN2LED":0,"GEN3LED":0,"GEN4LED":0,"SCR1LED":0,"SCR2LED":0,"SCR3LED":0,"SCR4LED":0,"MP1BLWR":0,"MP2BLWR":0,"DWBLWR":0,"RTBLWR":0,"PWRLIM":0,"PWRLIMMTR":0.0,"RTTorqueLimitGauge":0.0,"AutoDWLED":0,"GEN1BTNLED":0,"GEN2BTNLED":0,"GEN3BTNLED":0,"GEN4BTNLED":0,"OpenKellyCockLed":0,"CloseKellyCockLed":0,"OpenSafetyValveLed":0,"CloseSafetyValveLed":0,"IRSafetyValveLed":0,"IRIBopLed":0,"LatchPipeLED":0,"UnlatchPipeLED":0,"SwingLed":0,"FillMouseHoleLed":0,"MP1CPSwitch":0,"MP2Switch":-1,"DWSwitch":-1,"RTSwitch":-1},"Hook":{"HookHeight_S":0.0,"HookHeight":0.0},"StandPipeManifold":{"StandPipeGauge1":0.0,"StandPipeGauge2":0.0,"StandPipeManifoldValve1":false,"StandPipeManifoldValve2":false,"StandPipeManifoldValve3":false,"StandPipeManifoldValve4":false,"StandPipeManifoldValve5":false,"StandPipeManifoldValve6":false,"StandPipeManifoldValve7":false,"StandPipeManifoldValve8":false,"StandPipeManifoldValve9":false,"StandPipeManifoldValve10":false,"StandPipeManifoldValve11":false,"StandPipeManifoldValve12":false,"StandPipeManifoldValve13":false,"StandPipeManifoldValve14":false,"StandPipeManifoldValve15":false},"DrillingWatch":{"Depth":0.0,"BitPosition":0.0,"HookLoad":0.0,"WeightOnBit":0.0,"RPM":0.0,"ROP":0.0,"Torque":0.0,"PumpPressure":0.0,"SPM1":0.0,"SPM2":0.0,"CasingPressure":0.0,"PercentFlow":0.0,"PitGainLose":0.0,"PitVolume":0.0,"KillMudVolume":0.0,"TripTankVolume":0.0,"MudWeightIn":0.0,"FillVolume":0.0,"MudWeightOut":0.0}}}