|
- # 1 "/mnt/c/Projects/VSIM/SimulationCore2/CSharp/Problems/CKickProblems.f90"
- module CKickProblems
- use SimulationVariables
- implicit none
- public
- !constants
- ! integer :: Gas_FluidType = 0
- ! integer :: Oil_FluidType = 1
- ! integer :: Water_FluidType = 2
-
- contains
- subroutine KickProblemsFromJson(parent)
- type(json_value),pointer :: parent
- type(json_core) :: json
- type(json_value),pointer :: p,pval
-
- call json%get(parent,'KickProblems',p)
- call ProblemFromJson(p,"Kick",data%problems%KickProblems%Kick)
- call json%get(p,'FluidType',pval)
- call json%get(pval,data%problems%KickProblems%FluidType)
- call json%get(p,'FlowRate',pval)
- call json%get(pval,data%problems%KickProblems%FlowRate)
- call json%get(p,'OverBalancePressure',pval)
- call json%get(pval,data%problems%KickProblems%OverBalancePressure)
- call json%get(p,'IsAutoMigrationRateSelected',pval)
- call json%get(pval,data%problems%KickProblems%IsAutoMigrationRateSelected)
- call json%get(p,'AutoMigrationRate',pval)
- call json%get(pval,data%problems%KickProblems%AutoMigrationRate)
- end subroutine
-
- subroutine KickProblemsToJson(parent)
-
- type(json_value),pointer :: parent
- type(json_core) :: json
- type(json_value),pointer :: p
-
- ! 1. create new node
- call json%create_object(p,'KickProblems')
-
- call ProblemToJson(p,"Kick",data%problems%KickProblems%Kick)
- call json%add(p,"FluidType",data%problems%KickProblems%FluidType)
- call json%add(p,"FlowRate",data%problems%KickProblems%FlowRate)
- call json%add(p,"OverBalancePressure",data%problems%KickProblems%OverBalancePressure)
- call json%add(p,"IsAutoMigrationRateSelected",data%problems%KickProblems%IsAutoMigrationRateSelected)
- call json%add(p,"AutoMigrationRate",data%problems%KickProblems%AutoMigrationRate) ! 2. add member of data type to new node
-
- ! 3. add new node to parent
- call json%add(parent,p)
- end subroutine
-
-
- subroutine ProcessKickProblemsDueTime(time)
- implicit none
- integer :: time
-
- if(data%problems%KickProblems%Kick%ProblemType == Time_ProblemType) call ProcessDueTime(data%problems%KickProblems%Kick, ChangeKick, time)
-
- end subroutine
-
- subroutine ProcessKickProblemsDuePumpStrokes(strokes)
- implicit none
- integer :: strokes
-
- if(data%problems%KickProblems%Kick%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(data%problems%KickProblems%Kick, ChangeKick, strokes)
-
- end subroutine
-
- subroutine ProcessKickProblemsDueVolumePumped(volume)
- implicit none
- real(8) :: volume
-
- if(data%problems%KickProblems%Kick%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(data%problems%KickProblems%Kick, ChangeKick, volume)
-
- end subroutine
-
- subroutine ProcessKickProblemsDueDistanceDrilled(distance)
- implicit none
- real(8) :: distance
-
- if(data%problems%KickProblems%Kick%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(data%problems%KickProblems%Kick, ChangeKick, distance)
-
- end subroutine
-
- subroutine ChangeKick(status)
- implicit none
- integer, intent (in) :: status
- ! if(associated(data%problems%KickProblems%KickPtr)) call data%problems%KickProblems%KickPtr(status)
- !if(status == Clear_StatusType) if(print_log) print*,'On_Kick_Clear'
- !if(status == Executed_StatusType) if(print_log) print*,'On_Kick_Execute'
- endsubroutine
-
-
- end module CKickProblems
|