@@ -2,19 +2,7 @@ module CMudPropertiesVariables | |||||
use CIActionReference | use CIActionReference | ||||
!**use CDoubleEventHandlerCollection | !**use CDoubleEventHandlerCollection | ||||
implicit none | implicit none | ||||
public | |||||
!pointers | |||||
! procedure (ActionDouble), pointer :: ActiveMudVolumePtr | |||||
! procedure (ActionDouble), pointer :: ActiveDensityPtr | |||||
! procedure (ActionDouble), pointer :: ReserveMudVolumePtr | |||||
! procedure (ActionDouble), pointer :: ReserveDensityPtr | |||||
!**type(DoubleEventHandlerCollection) :: OnActiveMudVolumeChange | |||||
!**type(DoubleEventHandlerCollection) :: OnActiveDensityChange | |||||
!**type(DoubleEventHandlerCollection) :: OnReserveMudVolumeChange | |||||
!**type(DoubleEventHandlerCollection) :: OnReserveDensityChange | |||||
public | |||||
!constants | !constants | ||||
integer, parameter :: WaterBase_MudType = 0 | integer, parameter :: WaterBase_MudType = 0 | ||||
integer, parameter :: OilBase_MudType = 1 | integer, parameter :: OilBase_MudType = 1 | ||||
@@ -51,60 +39,11 @@ module CMudPropertiesVariables | |||||
real(8) :: ActiveTotalContents | real(8) :: ActiveTotalContents | ||||
real(8) :: ActiveTotalContentsGal | real(8) :: ActiveTotalContentsGal | ||||
logical :: ActiveAutoDensity | logical :: ActiveAutoDensity | ||||
!real(8) :: ReserveTotalTankCapacity | |||||
!real(8) :: ReserveTotalTankCapacityGal | |||||
!real(8) :: ReserveSettledContents | |||||
!real(8) :: ReserveSettledContentsGal | |||||
!real(8) :: ReserveTotalContents | |||||
!real(8) :: ReserveTotalContentsGal | |||||
real(8) :: InitialTripTankMudVolume | real(8) :: InitialTripTankMudVolume | ||||
real(8) :: InitialTripTankMudVolumeGal | real(8) :: InitialTripTankMudVolumeGal | ||||
real(8) :: PedalFlowMeter | real(8) :: PedalFlowMeter | ||||
End type MudPropertiesType | End type MudPropertiesType | ||||
Type(MudPropertiesType)::MudProperties | |||||
contains | |||||
subroutine Set_ActiveMudVolume_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(MudProperties%ActiveMudVolume == v) return | |||||
#endif | |||||
MudProperties%ActiveMudVolume = v | |||||
! if(associated(ActiveMudVolumePtr)) call ActiveMudVolumePtr(MudProperties%ActiveMudVolume) | |||||
end subroutine | |||||
subroutine Set_ActiveDensity_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(MudProperties%ActiveDensity == v) return | |||||
#endif | |||||
MudProperties%ActiveDensity = v | |||||
! if(associated(ActiveDensityPtr)) call ActiveDensityPtr(MudProperties%ActiveDensity) | |||||
end subroutine | |||||
subroutine Set_ReserveMudVolume_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(MudProperties%ReserveMudVolume == v) return | |||||
#endif | |||||
MudProperties%ReserveMudVolume = v | |||||
! if(associated(ReserveMudVolumePtr)) call ReserveMudVolumePtr(MudProperties%ReserveMudVolume) | |||||
end subroutine | |||||
subroutine Set_ReserveDensity_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(MudProperties%ReserveDensity == v) return | |||||
#endif | |||||
MudProperties%ReserveDensity = v | |||||
! if(associated(ReserveDensityPtr)) call ReserveDensityPtr(MudProperties%ReserveDensity) | |||||
end subroutine | |||||
! Type(MudPropertiesType)::MudProperties | |||||
@@ -0,0 +1,91 @@ | |||||
module MudPropertiesModule | |||||
use SimulationVariables | |||||
use json_module | |||||
implicit none | |||||
contains | |||||
subroutine MudPropertiesToJson(parent) | |||||
type(json_value),pointer :: parent | |||||
type(json_core) :: json | |||||
type(json_value),pointer :: p | |||||
! 1. create new node | |||||
call json%create_object(p,'Mud') | |||||
! 2. add member of data type to new node | |||||
call json%add(p,"ActiveMudType",data%Configuration%Mud%ActiveMudType) | |||||
call json%add(p,"ActiveRheologyModel",data%Configuration%Mud%ActiveRheologyModel) | |||||
call json%add(p,"ActiveMudVolume",data%Configuration%Mud%ActiveMudVolume) | |||||
call json%add(p,"ActiveMudVolumeGal",data%Configuration%Mud%ActiveMudVolumeGal) | |||||
call json%add(p,"ActiveDensity",data%Configuration%Mud%ActiveDensity) | |||||
call json%add(p,"ActivePlasticViscosity",data%Configuration%Mud%ActivePlasticViscosity) | |||||
call json%add(p,"ActiveYieldPoint",data%Configuration%Mud%ActiveYieldPoint) | |||||
call json%add(p,"ActiveThetaThreeHundred",data%Configuration%Mud%ActiveThetaThreeHundred) | |||||
call json%add(p,"ActiveThetaSixHundred",data%Configuration%Mud%ActiveThetaSixHundred) | |||||
call json%add(p,"ReserveMudType",data%Configuration%Mud%ReserveMudType) | |||||
call json%add(p,"ReserveMudVolume",data%Configuration%Mud%ReserveMudVolume) | |||||
call json%add(p,"ReserveMudVolumeGal",data%Configuration%Mud%ReserveMudVolumeGal) | |||||
call json%add(p,"ReserveDensity",data%Configuration%Mud%ReserveDensity) | |||||
call json%add(p,"ReservePlasticViscosity",data%Configuration%Mud%ReservePlasticViscosity) | |||||
call json%add(p,"ReserveYieldPoint",data%Configuration%Mud%ReserveYieldPoint) | |||||
call json%add(p,"ReserveThetaThreeHundred",data%Configuration%Mud%ReserveThetaThreeHundred) | |||||
call json%add(p,"ReserveThetaSixHundred",data%Configuration%Mud%ReserveThetaSixHundred) | |||||
call json%add(p,"ActiveTotalTankCapacity",data%Configuration%Mud%ActiveTotalTankCapacity) | |||||
call json%add(p,"ActiveTotalTankCapacityGal",data%Configuration%Mud%ActiveTotalTankCapacityGal) | |||||
call json%add(p,"ActiveSettledContents",data%Configuration%Mud%ActiveSettledContents) | |||||
call json%add(p,"ActiveSettledContentsGal",data%Configuration%Mud%ActiveSettledContentsGal) | |||||
call json%add(p,"ActiveTotalContents",data%Configuration%Mud%ActiveTotalContents) | |||||
call json%add(p,"ActiveTotalContentsGal",data%Configuration%Mud%ActiveTotalContentsGal) | |||||
call json%add(p,"ActiveAutoDensity",data%Configuration%Mud%ActiveAutoDensity) | |||||
call json%add(p,"InitialTripTankMudVolume",data%Configuration%Mud%InitialTripTankMudVolume) | |||||
call json%add(p,"InitialTripTankMudVolumeGal",data%Configuration%Mud%InitialTripTankMudVolumeGal) | |||||
call json%add(p,"PedalFlowMeter",data%Configuration%Mud%PedalFlowMeter) | |||||
! 3. add new node to parent | |||||
call json%add(parent,p) | |||||
end subroutine | |||||
subroutine Set_ActiveMudVolume_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(data%Configuration%Mud%ActiveMudVolume == v) return | |||||
#endif | |||||
data%Configuration%Mud%ActiveMudVolume = v | |||||
! if(associated(ActiveMudVolumePtr)) call ActiveMudVolumePtr(data%Configuration%Mud%ActiveMudVolume) | |||||
end subroutine | |||||
subroutine Set_ActiveDensity_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(data%Configuration%Mud%ActiveDensity == v) return | |||||
#endif | |||||
data%Configuration%Mud%ActiveDensity = v | |||||
! if(associated(ActiveDensityPtr)) call ActiveDensityPtr(data%Configuration%Mud%ActiveDensity) | |||||
end subroutine | |||||
subroutine Set_ReserveMudVolume_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(data%Configuration%Mud%ReserveMudVolume == v) return | |||||
#endif | |||||
data%Configuration%Mud%ReserveMudVolume = v | |||||
! if(associated(ReserveMudVolumePtr)) call ReserveMudVolumePtr(data%Configuration%Mud%ReserveMudVolume) | |||||
end subroutine | |||||
subroutine Set_ReserveDensity_StudentStation(v) | |||||
implicit none | |||||
real*8, intent(in) :: v | |||||
#ifdef ExcludeExtraChanges | |||||
if(data%Configuration%Mud%ReserveDensity == v) return | |||||
#endif | |||||
data%Configuration%Mud%ReserveDensity = v | |||||
! if(associated(ReserveDensityPtr)) call ReserveDensityPtr(data%Configuration%Mud%ReserveDensity) | |||||
end subroutine | |||||
end module MudPropertiesModule |
@@ -9,18 +9,37 @@ module CPathGeneration | |||||
type(json_value),pointer :: parent | type(json_value),pointer :: parent | ||||
type(json_core) :: json | type(json_core) :: json | ||||
type(json_value),pointer :: p | |||||
type(json_value),pointer :: ppath,pitems,pdp,p | |||||
integer::i | |||||
! 1. create new node | ! 1. create new node | ||||
call json%create_object(p,'Path') | |||||
call json%create_object(ppath,'Path') | |||||
call json%create_array(pitems,'Items') | |||||
do i=1,data%Configuration%Path%ItemCount | |||||
call json%create_object(p,'') | |||||
call json%add(p,"HoleType",data%Configuration%Path%items(i)%HoleType) | |||||
call json%add(p,"Angle",data%Configuration%Path%items(i)%Angle) | |||||
call json%add(p,"Length",data%Configuration%Path%items(i)%Length) | |||||
call json%add(p,"FinalAngle",data%Configuration%Path%items(i)%FinalAngle) | |||||
call json%add(p,"TotalLength",data%Configuration%Path%items(i)%TotalLength) | |||||
call json%add(p,"MeasuredDepth",data%Configuration%Path%items(i)%MeasuredDepth) | |||||
call json%add(p,"TotalVerticalDepth",data%Configuration%Path%items(i)%TotalVerticalDepth) | |||||
call json%add(pitems,p) | |||||
end do | |||||
! 2. add member of data type to new node | |||||
! call StringConfigurationToJson(p) | |||||
! call FormationToJson(p) | |||||
! call json%add(p,"",data%Configuration%Formation%Formations(i)%Abrasiveness) | |||||
call json%create_array(pdp,'DataPoints') | |||||
do i=1,data%Configuration%Path%DataPointsCount | |||||
call json%create_object(p,'') | |||||
call json%add(p,"X",data%Configuration%Path%DataPoints(i)%X) | |||||
call json%add(p,"Y",data%Configuration%Path%DataPoints(i)%Y) | |||||
call json%add(pdp,p) | |||||
end do | |||||
! 3. add new node to parent | ! 3. add new node to parent | ||||
call json%add(parent,p) | |||||
call json%add(ppath,pitems) | |||||
call json%add(ppath,pdp) | |||||
call json%add(parent,ppath) | |||||
end subroutine | end subroutine | ||||
end module CPathGeneration | end module CPathGeneration |
@@ -25,6 +25,6 @@ module CPathGenerationVariables | |||||
type(CDataPointItem), allocatable :: DataPoints(:) | type(CDataPointItem), allocatable :: DataPoints(:) | ||||
End type PathGenerationType | End type PathGenerationType | ||||
Type(PathGenerationType)::PathGeneration | |||||
! Type(PathGenerationType)::PathGeneration | |||||
end module CPathGenerationVariables | end module CPathGenerationVariables |
@@ -2,33 +2,33 @@ module CWellSurveyData | |||||
use CWellSurveyDataVariables | use CWellSurveyDataVariables | ||||
implicit none | implicit none | ||||
public | 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 | |||||
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 | |||||
! SetSurveyData = 0 | |||||
! end function SetSurveyData | |||||
end module CWellSurveyData | end module CWellSurveyData |
@@ -139,7 +139,7 @@ ALLOCATE (data%State%MudSystem%Xstart_OpSection(data%State%F_Counts%BottomHoleIn | |||||
call data%State%MudSystem%Hz_Mud_Backhead_section%AddToFirst (1) | call data%State%MudSystem%Hz_Mud_Backhead_section%AddToFirst (1) | ||||
call data%State%MudSystem%Hz_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_PipeSection(1)) | call data%State%MudSystem%Hz_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_PipeSection(1)) | ||||
call data%State%MudSystem%Hz_Mud_Forehead_section%AddToFirst (1) | call data%State%MudSystem%Hz_Mud_Forehead_section%AddToFirst (1) | ||||
call data%State%MudSystem%Hz_Density%AddToFirst (MudProperties%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%Hz_Density%AddToFirst (data%Configuration%Mud%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%Hz_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | call data%State%MudSystem%Hz_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%Hz_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | call data%State%MudSystem%Hz_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%Hz_MudOrKick%AddToFirst (0) | call data%State%MudSystem%Hz_MudOrKick%AddToFirst (0) | ||||
@@ -150,7 +150,7 @@ ALLOCATE (data%State%MudSystem%Xstart_OpSection(data%State%F_Counts%BottomHoleIn | |||||
call data%State%MudSystem%St_Mud_Backhead_section%AddToFirst (2) | call data%State%MudSystem%St_Mud_Backhead_section%AddToFirst (2) | ||||
call data%State%MudSystem%St_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_PipeSection(data%State%F_Counts%StringIntervalCounts)) | call data%State%MudSystem%St_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_PipeSection(data%State%F_Counts%StringIntervalCounts)) | ||||
call data%State%MudSystem%St_Mud_Forehead_section%AddToFirst (data%State%F_Counts%StringIntervalCounts) | call data%State%MudSystem%St_Mud_Forehead_section%AddToFirst (data%State%F_Counts%StringIntervalCounts) | ||||
call data%State%MudSystem%St_Density%AddToFirst (MudProperties%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%St_Density%AddToFirst (data%Configuration%Mud%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | call data%State%MudSystem%St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | call data%State%MudSystem%St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%St_MudOrKick%AddToFirst (0) | call data%State%MudSystem%St_MudOrKick%AddToFirst (0) | ||||
@@ -161,7 +161,7 @@ ALLOCATE (data%State%MudSystem%Xstart_OpSection(data%State%F_Counts%BottomHoleIn | |||||
call data%State%MudSystem%Ann_Mud_Backhead_section%AddToFirst (data%State%F_Counts%StringIntervalCounts+1) | call data%State%MudSystem%Ann_Mud_Backhead_section%AddToFirst (data%State%F_Counts%StringIntervalCounts+1) | ||||
call data%State%MudSystem%Ann_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_PipeSection(data%State%MudSystem%NoPipeSections)) | call data%State%MudSystem%Ann_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_PipeSection(data%State%MudSystem%NoPipeSections)) | ||||
call data%State%MudSystem%Ann_Mud_Forehead_section%AddToFirst (data%State%MudSystem%NoPipeSections) | call data%State%MudSystem%Ann_Mud_Forehead_section%AddToFirst (data%State%MudSystem%NoPipeSections) | ||||
call data%State%MudSystem%Ann_Density%AddToFirst (MudProperties%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%Ann_Density%AddToFirst (data%Configuration%Mud%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | call data%State%MudSystem%Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | call data%State%MudSystem%Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%Ann_MudOrKick%AddToFirst (0) | call data%State%MudSystem%Ann_MudOrKick%AddToFirst (0) | ||||
@@ -177,7 +177,7 @@ ALLOCATE (data%State%MudSystem%Xstart_OpSection(data%State%F_Counts%BottomHoleIn | |||||
call data%State%MudSystem%ChokeLine_Mud_Backhead_section%AddToFirst (1) | call data%State%MudSystem%ChokeLine_Mud_Backhead_section%AddToFirst (1) | ||||
call data%State%MudSystem%ChokeLine_Mud_Forehead_X%AddToFirst (data%Configuration%BopStack%ChokeLineLength) | call data%State%MudSystem%ChokeLine_Mud_Forehead_X%AddToFirst (data%Configuration%BopStack%ChokeLineLength) | ||||
call data%State%MudSystem%ChokeLine_Mud_Forehead_section%AddToFirst (1) | call data%State%MudSystem%ChokeLine_Mud_Forehead_section%AddToFirst (1) | ||||
call data%State%MudSystem%ChokeLine_Density%AddToFirst (MudProperties%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%ChokeLine_Density%AddToFirst (data%Configuration%Mud%ActiveDensity) ! initial(ppg) | |||||
call data%State%MudSystem%ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | call data%State%MudSystem%ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | call data%State%MudSystem%ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%ChokeLine_MudOrKick%AddToFirst (0) | call data%State%MudSystem%ChokeLine_MudOrKick%AddToFirst (0) | ||||
@@ -188,7 +188,7 @@ ALLOCATE (data%State%MudSystem%Xstart_OpSection(data%State%F_Counts%BottomHoleIn | |||||
call data%State%MudSystem%Op_Mud_Backhead_section%AddToFirst (1) | call data%State%MudSystem%Op_Mud_Backhead_section%AddToFirst (1) | ||||
call data%State%MudSystem%Op_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_OpSection(data%State%F_Counts%BottomHoleIntervalCounts)) | call data%State%MudSystem%Op_Mud_Forehead_X%AddToFirst (data%State%MudSystem%Xend_OpSection(data%State%F_Counts%BottomHoleIntervalCounts)) | ||||
call data%State%MudSystem%Op_Mud_Forehead_section%AddToFirst (data%State%F_Counts%BottomHoleIntervalCounts) | call data%State%MudSystem%Op_Mud_Forehead_section%AddToFirst (data%State%F_Counts%BottomHoleIntervalCounts) | ||||
call data%State%MudSystem%Op_Density%AddToFirst (MudProperties%ActiveDensity) | |||||
call data%State%MudSystem%Op_Density%AddToFirst (data%Configuration%Mud%ActiveDensity) | |||||
call data%State%MudSystem%Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | call data%State%MudSystem%Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | call data%State%MudSystem%Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) | ||||
call data%State%MudSystem%Op_MudOrKick%AddToFirst (0) | call data%State%MudSystem%Op_MudOrKick%AddToFirst (0) | ||||
@@ -5,7 +5,7 @@ use SimulationVariables !@@@ | |||||
use PressureDisplayVARIABLESModule | use PressureDisplayVARIABLESModule | ||||
USE FricPressDropVarsModule | USE FricPressDropVarsModule | ||||
USE Fluid_Flow_Startup_Vars | USE Fluid_Flow_Startup_Vars | ||||
USE CMudPropertiesVariables | |||||
! USE CMudPropertiesVariables | |||||
USE CManifolds | USE CManifolds | ||||
use CPumpsVariables | use CPumpsVariables | ||||
use CPumps | use CPumps | ||||
@@ -17,6 +17,7 @@ use SimulationVariables !@@@ | |||||
use CDataDisplayConsole | use CDataDisplayConsole | ||||
use SimulationVariables | use SimulationVariables | ||||
use CStudentStationVariables !, PitGainLossReset=>PitGainLossZero | use CStudentStationVariables !, PitGainLossReset=>PitGainLossZero | ||||
use MudPropertiesModule | |||||
implicit none | implicit none | ||||
@@ -687,7 +688,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ Mp1Coef*data%State%Pump(1)%Flow_Rate*data%State%MudSystem%DeltaT_Mudline/60. + Mp2Coef*data%State%Pump(2)%Flow_Rate*data%State%MudSystem%DeltaT_Mudline/60. | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ Mp1Coef*data%State%Pump(1)%Flow_Rate*data%State%MudSystem%DeltaT_Mudline/60. + Mp2Coef*data%State%Pump(2)%Flow_Rate*data%State%MudSystem%DeltaT_Mudline/60. | ||||
!write(*,*) 'active by j15' | !write(*,*) 'active by j15' | ||||
endif | endif | ||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , MudProperties%ActiveTotalTankCapacityGal-MudProperties%ActiveSettledContentsGal) | |||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , data%Configuration%Mud%ActiveTotalTankCapacityGal-data%Configuration%Mud%ActiveSettledContentsGal) | |||||
!if ActiveTankVolume is higher, excess amount is dumped | !if ActiveTankVolume is higher, excess amount is dumped | ||||
endif | endif | ||||
if (H84 > 0.0) then !CementPumpToCementTank_Through67 | if (H84 > 0.0) then !CementPumpToCementTank_Through67 | ||||
@@ -1039,7 +1040,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((0.5*data%State%MUD(6)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((0.5*data%State%MUD(6)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%BellNippleVolume= data%State%MudSystem%BellNippleVolume+ ((0.5*data%State%MUD(6)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%BellNippleVolume= data%State%MudSystem%BellNippleVolume+ ((0.5*data%State%MUD(6)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
endif | endif | ||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , MudProperties%ActiveTotalTankCapacityGal-MudProperties%ActiveSettledContentsGal) | |||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , data%Configuration%Mud%ActiveTotalTankCapacityGal-data%Configuration%Mud%ActiveSettledContentsGal) | |||||
!if ActiveTankVolume is higher, excess amount is dumped | !if ActiveTankVolume is higher, excess amount is dumped | ||||
endif | endif | ||||
@@ -1075,17 +1076,17 @@ use SimulationVariables !@ | |||||
if (j3 == 1 .and. B71==1) then !(volumes in galon) | if (j3 == 1 .and. B71==1) then !(volumes in galon) | ||||
data%State%MUD(3)%Q = min(data%State%MUD(3)%Q , data%State%MudSystem%PedalMeter) | data%State%MUD(3)%Q = min(data%State%MUD(3)%Q , data%State%MudSystem%PedalMeter) | ||||
!write(*,*) 'data%State%MUD(3)%Q=' , data%State%MUD(3)%Q | !write(*,*) 'data%State%MUD(3)%Q=' , data%State%MUD(3)%Q | ||||
IF (MudProperties%ActiveAutoDensity == .FALSE.) THEN | |||||
IF (data%Configuration%Mud%ActiveAutoDensity == .FALSE.) THEN | |||||
data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%BellNippleDensity*(data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+((data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%BellNippleDensity*(data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+((data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
!write(*,*) 'active increase bell 1=' , ((data%State%MUD(3)%Q/60.)*DeltaT_Mudline) | !write(*,*) 'active increase bell 1=' , ((data%State%MUD(3)%Q/60.)*DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((20.8d0-data%State%MudSystem%BellNippleDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed cutting density = 20.8 ppg | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((20.8d0-data%State%MudSystem%BellNippleDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed cutting density = 20.8 ppg | ||||
!write(*,*) 'active increase bell 2=' , ((20.8d0-BellNippleDensity)/(20.8d0-ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*DeltaT_Mudline) | !write(*,*) 'active increase bell 2=' , ((20.8d0-BellNippleDensity)/(20.8d0-ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity < 5.0) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity < 5.0) THEN | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((2.d0-data%State%MudSystem%BellNippleDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((2.d0-data%State%MudSystem%BellNippleDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | ||||
!write(*,*) 'active increase bell 3=' , ((2.d0-BellNippleDensity)/(2.d0-ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*DeltaT_Mudline) | !write(*,*) 'active increase bell 3=' , ((2.d0-BellNippleDensity)/(2.d0-ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%BellNippleDensity .and. data%State%MudSystem%BellNippleDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%BellNippleDensity .and. data%State%MudSystem%BellNippleDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
!write(*,*) ' Auto true 3' | !write(*,*) ' Auto true 3' | ||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
!write(*,*) 'active increase bell 4=' , ((data%State%MUD(3)%Q/60.d0)*DeltaT_Mudline) | !write(*,*) 'active increase bell 4=' , ((data%State%MUD(3)%Q/60.d0)*DeltaT_Mudline) | ||||
@@ -1093,18 +1094,18 @@ use SimulationVariables !@ | |||||
endif | endif | ||||
if (j3 == 1 .and. B77==1) then | if (j3 == 1 .and. B77==1) then | ||||
data%State%MUD(3)%Q = min(data%State%MUD(3)%Q , data%State%MudSystem%PedalMeter) | data%State%MUD(3)%Q = min(data%State%MUD(3)%Q , data%State%MudSystem%PedalMeter) | ||||
IF (MudProperties%ActiveAutoDensity == .FALSE.) THEN | |||||
IF (data%Configuration%Mud%ActiveAutoDensity == .FALSE.) THEN | |||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%BellNippleDensity*(data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+((data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%BellNippleDensity*(data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+((data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ (data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ (data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((20.8d0-data%State%MudSystem%BellNippleDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | AddedVolumeToTank= ((20.8d0-data%State%MudSystem%BellNippleDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity < 5.0) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity < 5.0) THEN | |||||
AddedVolumeToTank= ((2.d0-data%State%MudSystem%BellNippleDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | AddedVolumeToTank= ((2.d0-data%State%MudSystem%BellNippleDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%BellNippleDensity .and. data%State%MudSystem%BellNippleDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%BellNippleDensity .and. data%State%MudSystem%BellNippleDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | AddedVolumeToTank= ((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | ||||
@@ -1118,7 +1119,7 @@ use SimulationVariables !@ | |||||
data%State%MUD(3)%Q = min(data%State%MUD(3)%Q , data%State%MudSystem%PedalMeter) | data%State%MUD(3)%Q = min(data%State%MUD(3)%Q , data%State%MudSystem%PedalMeter) | ||||
IF (MudProperties%ActiveAutoDensity == .FALSE.) THEN | |||||
IF (data%Configuration%Mud%ActiveAutoDensity == .FALSE.) THEN | |||||
data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%BellNippleDensity*(0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%BellNippleDensity*(0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%BellNippleDensity*(0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%BellNippleDensity*(0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
@@ -1126,7 +1127,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ ((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ ((0.5*data%State%MUD(3)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%BellNippleDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((20.8d0-data%State%MudSystem%BellNippleDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*((0.5d0*data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | AddedVolumeToTank= ((20.8d0-data%State%MudSystem%BellNippleDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*((0.5d0*data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
@@ -1135,7 +1136,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ AddedVolumeToTank | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ AddedVolumeToTank | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((2.d0-data%State%MudSystem%BellNippleDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*((0.5d0*data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | AddedVolumeToTank= ((2.d0-data%State%MudSystem%BellNippleDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*((0.5d0*data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
@@ -1143,7 +1144,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ AddedVolumeToTank | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ AddedVolumeToTank | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ AddedVolumeToTank | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%BellNippleDensity .and. data%State%MudSystem%BellNippleDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%BellNippleDensity .and. data%State%MudSystem%BellNippleDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | AddedVolumeToTank= ((data%State%MUD(3)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
@@ -1180,7 +1181,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%TripTankVolumeCalc = min(data%State%MudSystem%TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal | data%State%MudSystem%TripTankVolumeCalc = min(data%State%MudSystem%TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal | ||||
!if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped | !if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped | ||||
data%State%MudSystem%ActiveTankVolume = min(data%State%MudSystem%ActiveTankVolume , MudProperties%ActiveTotalTankCapacityGal - MudProperties%ActiveSettledContentsGal) | |||||
data%State%MudSystem%ActiveTankVolume = min(data%State%MudSystem%ActiveTankVolume , data%Configuration%Mud%ActiveTotalTankCapacityGal - data%Configuration%Mud%ActiveSettledContentsGal) | |||||
!if ActiveTankVolume is higher, excess amount is dumped | !if ActiveTankVolume is higher, excess amount is dumped | ||||
!write(*,*) 'BellNippleDensity=' , BellNippleDensity | !write(*,*) 'BellNippleDensity=' , BellNippleDensity | ||||
@@ -1284,27 +1285,27 @@ use SimulationVariables !@ | |||||
! IN ALL CONDITIONS EFFECT OF 78 IS COMPUTED BY RealJ4 | ! IN ALL CONDITIONS EFFECT OF 78 IS COMPUTED BY RealJ4 | ||||
if (C71==1 .and. C77==0) then !(volumes in galon) RealJ4: 1 OR 2(IF 78 IS OPEN) | if (C71==1 .and. C77==0) then !(volumes in galon) RealJ4: 1 OR 2(IF 78 IS OPEN) | ||||
IF (MudProperties%ActiveAutoDensity == .FALSE.) THEN | |||||
IF (data%Configuration%Mud%ActiveAutoDensity == .FALSE.) THEN | |||||
data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ (((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ (((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
!write(*,*) 'active increase choke1=' , (((1./RealJ4)*data%State%MUD(4)%Q/60.)*DeltaT_Mudline) | !write(*,*) 'active increase choke1=' , (((1./RealJ4)*data%State%MUD(4)%Q/60.)*DeltaT_Mudline) | ||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((20.8d0-data%State%MudSystem%ChokeOutletDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed cutting density = 20.8 ppg | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((20.8d0-data%State%MudSystem%ChokeOutletDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed cutting density = 20.8 ppg | ||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
!write(*,*) 'active increase choke2=' , ((20.8d0-ChokeOutletDensity)/(20.8d0-ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*DeltaT_Mudline) | !write(*,*) 'active increase choke2=' , ((20.8d0-ChokeOutletDensity)/(20.8d0-ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity < 5.0) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity < 5.0) THEN | |||||
data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((2.d0-data%State%MudSystem%ChokeOutletDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | data%State%MudSystem%ActiveTankVolume= data%State%MudSystem%ActiveTankVolume+ ((2.d0-data%State%MudSystem%ChokeOutletDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | ||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
!write(*,*) 'active increase choke3=' ,((2.d0-ChokeOutletDensity)/(2.d0-ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*DeltaT_Mudline) | !write(*,*) 'active increase choke3=' ,((2.d0-ChokeOutletDensity)/(2.d0-ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ChokeOutletDensity .and. data%State%MudSystem%ChokeOutletDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ChokeOutletDensity .and. data%State%MudSystem%ChokeOutletDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
!write(*,*) ' Auto true 3' | !write(*,*) ' Auto true 3' | ||||
@@ -1321,13 +1322,13 @@ use SimulationVariables !@ | |||||
if (C77==1 .and. C71==0) then !RealJ4: 1 OR 2(IF 78 IS OPEN) | if (C77==1 .and. C71==0) then !RealJ4: 1 OR 2(IF 78 IS OPEN) | ||||
IF (MudProperties%ActiveAutoDensity == .FALSE.) THEN | |||||
IF (data%Configuration%Mud%ActiveAutoDensity == .FALSE.) THEN | |||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ (((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%TripTankVolumeCalc= data%State%MudSystem%TripTankVolumeCalc+ (((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((20.8d0-data%State%MudSystem%ChokeOutletDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | AddedVolumeToTank= ((20.8d0-data%State%MudSystem%ChokeOutletDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
@@ -1337,7 +1338,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity < 5.0) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity < 5.0) THEN | |||||
AddedVolumeToTank= ((2.d0-data%State%MudSystem%ChokeOutletDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | AddedVolumeToTank= ((2.d0-data%State%MudSystem%ChokeOutletDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
@@ -1346,7 +1347,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ChokeOutletDensity .and. data%State%MudSystem%ChokeOutletDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ChokeOutletDensity .and. data%State%MudSystem%ChokeOutletDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= (((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | AddedVolumeToTank= (((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
@@ -1363,7 +1364,7 @@ use SimulationVariables !@ | |||||
if (C71==1 .and. C77==1) then !RealJ4: 2 OR 3(IF 78 IS OPEN) | if (C71==1 .and. C77==1) then !RealJ4: 2 OR 3(IF 78 IS OPEN) | ||||
IF (MudProperties%ActiveAutoDensity == .FALSE.) THEN | |||||
IF (data%Configuration%Mud%ActiveAutoDensity == .FALSE.) THEN | |||||
data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%ActiveTankDensity= ((data%State%MudSystem%ActiveTankDensity*data%State%MudSystem%ActiveTankVolume)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%ActiveTankVolume+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ChokeOutletDensity*((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline))/(data%State%MudSystem%TripTankVolumeCalc+(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline)) | ||||
@@ -1372,7 +1373,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*data%State%MUD(4)%Q/60.)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. data%State%MudSystem%ChokeOutletDensity > data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((20.8d0-data%State%MudSystem%ChokeOutletDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | AddedVolumeToTank= ((20.8d0-data%State%MudSystem%ChokeOutletDensity)/(20.8d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
@@ -1383,7 +1384,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((2.d0-data%State%MudSystem%ChokeOutletDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | AddedVolumeToTank= ((2.d0-data%State%MudSystem%ChokeOutletDensity)/(2.d0-data%State%MudSystem%ActiveTankDensity))*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) ! asumed GAS density = 2.0 ppg | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
@@ -1393,7 +1394,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | data%State%MudSystem%ChokeManifoldDumpVolume= data%State%MudSystem%ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0)*data%State%MudSystem%DeltaT_Mudline) | ||||
ELSEIF (MudProperties%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ChokeOutletDensity .and. data%State%MudSystem%ChokeOutletDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
ELSEIF (data%Configuration%Mud%ActiveAutoDensity .and. 5.0 < data%State%MudSystem%ChokeOutletDensity .and. data%State%MudSystem%ChokeOutletDensity <= data%State%MudSystem%ActiveTankDensity) THEN | |||||
AddedVolumeToTank= ((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0) | AddedVolumeToTank= ((1.d0/RealJ4)*data%State%MUD(4)%Q/60.d0) | ||||
data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | data%State%MudSystem%TripTankDensityCalc= ((data%State%MudSystem%TripTankDensityCalc*data%State%MudSystem%TripTankVolumeCalc)+(data%State%MudSystem%ActiveTankDensity*AddedVolumeToTank))/(data%State%MudSystem%TripTankVolumeCalc+AddedVolumeToTank) | ||||
@@ -1424,7 +1425,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%TripTankVolumeCalc=min(data%State%MudSystem%TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal | data%State%MudSystem%TripTankVolumeCalc=min(data%State%MudSystem%TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal | ||||
!if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped | !if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped | ||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , MudProperties%ActiveTotalTankCapacityGal-MudProperties%ActiveSettledContentsGal) | |||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , data%Configuration%Mud%ActiveTotalTankCapacityGal-data%Configuration%Mud%ActiveSettledContentsGal) | |||||
!if ActiveTankVolume is higher, excess amount is dumped | !if ActiveTankVolume is higher, excess amount is dumped | ||||
endif | endif | ||||
@@ -1535,7 +1536,7 @@ use SimulationVariables !@ | |||||
data%State%MudSystem%TripTankVolumeCalc=min(data%State%MudSystem%TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal | data%State%MudSystem%TripTankVolumeCalc=min(data%State%MudSystem%TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal | ||||
!if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped | !if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped | ||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , MudProperties%ActiveTotalTankCapacityGal-MudProperties%ActiveSettledContentsGal) | |||||
data%State%MudSystem%ActiveTankVolume=min(data%State%MudSystem%ActiveTankVolume , data%Configuration%Mud%ActiveTotalTankCapacityGal-data%Configuration%Mud%ActiveSettledContentsGal) | |||||
!if ActiveTankVolume is higher, excess amount is dumped | !if ActiveTankVolume is higher, excess amount is dumped | ||||
endif | endif | ||||
@@ -2001,8 +2002,8 @@ use SimulationVariables !@ | |||||
IF (Manifold%Valve(67)%Status == .TRUE.) call Activate_Pump3PopOffValveBlown() !Pump2PopOffValveBlown= .TRUE. | IF (Manifold%Valve(67)%Status == .TRUE.) call Activate_Pump3PopOffValveBlown() !Pump2PopOffValveBlown= .TRUE. | ||||
IF (data%State%MudSystem%ActiveTankVolume >= (MudProperties%ActiveTotalTankCapacityGal-MudProperties%ActiveSettledContentsGal)) THEN | |||||
data%State%MudSystem%ActiveTankVolume = (MudProperties%ActiveTotalTankCapacityGal-MudProperties%ActiveSettledContentsGal) | |||||
IF (data%State%MudSystem%ActiveTankVolume >= (data%Configuration%Mud%ActiveTotalTankCapacityGal-data%Configuration%Mud%ActiveSettledContentsGal)) THEN | |||||
data%State%MudSystem%ActiveTankVolume = (data%Configuration%Mud%ActiveTotalTankCapacityGal-data%Configuration%Mud%ActiveSettledContentsGal) | |||||
call Activate_ActiveTankOverflow() | call Activate_ActiveTankOverflow() | ||||
ELSE | ELSE | ||||
call Deactivate_ActiveTankOverflow() | call Deactivate_ActiveTankOverflow() | ||||
@@ -2502,7 +2503,7 @@ use SimulationVariables !@ | |||||
implicit none | implicit none | ||||
real(8), intent (in) :: v | real(8), intent (in) :: v | ||||
!call Log_4('ActiveMudVolumeChanged=', v) | !call Log_4('ActiveMudVolumeChanged=', v) | ||||
data%State%MudSystem%ActiveTankVolume= MudProperties%ActiveMudVolumeGal ! update from student input | |||||
data%State%MudSystem%ActiveTankVolume= data%Configuration%Mud%ActiveMudVolumeGal ! update from student input | |||||
end subroutine | end subroutine | ||||
subroutine ActiveDensityChanged(v) | subroutine ActiveDensityChanged(v) | ||||
@@ -2510,7 +2511,7 @@ use SimulationVariables !@ | |||||
implicit none | implicit none | ||||
real(8), intent (in) :: v | real(8), intent (in) :: v | ||||
!call Log_4('ActiveDensityChanged=', v) | !call Log_4('ActiveDensityChanged=', v) | ||||
data%State%MudSystem%ActiveTankDensity= MudProperties%ActiveDensity ! update from student input | |||||
data%State%MudSystem%ActiveTankDensity= data%Configuration%Mud%ActiveDensity ! update from student input | |||||
end subroutine | end subroutine | ||||
subroutine ReserveMudVolumeChanged(v) | subroutine ReserveMudVolumeChanged(v) | ||||
@@ -2518,7 +2519,7 @@ use SimulationVariables !@ | |||||
implicit none | implicit none | ||||
real(8), intent (in) :: v | real(8), intent (in) :: v | ||||
!call Log_4('ReserveMudVolumeChanged=', v) | !call Log_4('ReserveMudVolumeChanged=', v) | ||||
data%State%MudSystem%ReserveTankVolume= MudProperties%ReserveMudVolumeGal ! update from student input | |||||
data%State%MudSystem%ReserveTankVolume= data%Configuration%Mud%ReserveMudVolumeGal ! update from student input | |||||
end subroutine | end subroutine | ||||
subroutine ReserveDensityChanged(v) | subroutine ReserveDensityChanged(v) | ||||
@@ -2526,7 +2527,7 @@ use SimulationVariables !@ | |||||
implicit none | implicit none | ||||
real(8), intent (in) :: v | real(8), intent (in) :: v | ||||
!call Log_4('ReserveDensityChanged=', v) | !call Log_4('ReserveDensityChanged=', v) | ||||
data%State%MudSystem%ReserveTankDensity= MudProperties%ReserveDensity ! update from student input | |||||
data%State%MudSystem%ReserveTankDensity= data%Configuration%Mud%ReserveDensity ! update from student input | |||||
end subroutine | end subroutine | ||||
! subroutine SetupMudSystem() | ! subroutine SetupMudSystem() | ||||
@@ -94,11 +94,11 @@ data%State%MudSystem%FluidFlowCounter = 0 | |||||
imud=1 | imud=1 | ||||
data%State%MudSystem%iLoc= 1 ! for Kick | data%State%MudSystem%iLoc= 1 ! for Kick | ||||
data%State%MudSystem%Suction_Density_MudSystem= MudProperties%ActiveDensity | |||||
data%State%MudSystem%SuctionDensity_Old= MudProperties%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%StringDensity_Old= MudProperties%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%AnnulusSuctionDensity_Old= MudProperties%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%ChokeLineDensity_Old= MudProperties%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%Suction_Density_MudSystem= data%Configuration%Mud%ActiveDensity | |||||
data%State%MudSystem%SuctionDensity_Old= data%Configuration%Mud%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%StringDensity_Old= data%Configuration%Mud%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%AnnulusSuctionDensity_Old= data%Configuration%Mud%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%ChokeLineDensity_Old= data%Configuration%Mud%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%TotalAddedVolume= 0. | data%State%MudSystem%TotalAddedVolume= 0. | ||||
@@ -176,12 +176,12 @@ data%State%MudSystem%PressureGauge76 = 0.0 | |||||
data%State%MudSystem%TripTank_MaxVol_Allowded= 50. *42. !(bbl to gal, initial value) | data%State%MudSystem%TripTank_MaxVol_Allowded= 50. *42. !(bbl to gal, initial value) | ||||
data%State%MudSystem%ActiveTankFloorArea= (MudProperties%ActiveTotalTankCapacityGal) / (7.48051948*100./12.) ! (ft^2) - Tank Height= 100 inch , 12=inch to ft 7.48051948=gal to ft^3 | |||||
data%State%MudSystem%ActiveTankFloorArea= (data%Configuration%Mud%ActiveTotalTankCapacityGal) / (7.48051948*100./12.) ! (ft^2) - Tank Height= 100 inch , 12=inch to ft 7.48051948=gal to ft^3 | |||||
data%State%MudSystem%TripTankFloorArea= (50.*42.) / (7.48051948*100./12.) ! (ft^2) - 50.*42.=Trip Tank Capacity in BBl*42= Gal , Tank Height= 100 inch , 12=inch to ft 7.48051948=gal to ft^3 | data%State%MudSystem%TripTankFloorArea= (50.*42.) / (7.48051948*100./12.) ! (ft^2) - 50.*42.=Trip Tank Capacity in BBl*42= Gal , Tank Height= 100 inch , 12=inch to ft 7.48051948=gal to ft^3 | ||||
data%State%MudSystem%TripTank_Vol= MudProperties%InitialTripTankMudVolumeGal !(gal) | |||||
data%State%MudSystem%TripTank_Vol= data%Configuration%Mud%InitialTripTankMudVolumeGal !(gal) | |||||
data%State%MudSystem%TripTank_Dens= 1. | data%State%MudSystem%TripTank_Dens= 1. | ||||
data%EquipmentControl%DataDisplayConsole%TripTankGauge=0. | data%EquipmentControl%DataDisplayConsole%TripTankGauge=0. | ||||
@@ -206,8 +206,8 @@ data%State%MudSystem%Mp2Density= 0.0 !(VALVE83) | |||||
data%State%MudSystem%Mp3Density= 0.0 !(VALVE84) | data%State%MudSystem%Mp3Density= 0.0 !(VALVE84) | ||||
data%State%MudSystem%ReserveTankVolume= MudProperties%ReserveMudVolumeGal ! initial volume (gal) | |||||
data%State%MudSystem%ReserveTankDensity= MudProperties%ReserveDensity ! initial | |||||
data%State%MudSystem%ReserveTankVolume= data%Configuration%Mud%ReserveMudVolumeGal ! initial volume (gal) | |||||
data%State%MudSystem%ReserveTankDensity= data%Configuration%Mud%ReserveDensity ! initial | |||||
@@ -219,21 +219,21 @@ data%State%MudSystem%PumpsDumpFlowRate= 0.0 | |||||
data%State%MudSystem%ActiveTankVolume= MudProperties%ActiveMudVolumeGal ! initial volume (gal) | |||||
data%State%MudSystem%ActiveTankVolume= data%Configuration%Mud%ActiveMudVolumeGal ! initial volume (gal) | |||||
data%State%MudSystem%RefrencePitVolume= data%State%MudSystem%ActiveTankVolume/42. !(bbl) | data%State%MudSystem%RefrencePitVolume= data%State%MudSystem%ActiveTankVolume/42. !(bbl) | ||||
data%State%MudSystem%RefrencePitVolume_DrillWatch= data%State%MudSystem%ActiveTankVolume/42. !(bbl) | data%State%MudSystem%RefrencePitVolume_DrillWatch= data%State%MudSystem%ActiveTankVolume/42. !(bbl) | ||||
data%State%MudSystem%MVT_MinVol_Allowded= 0. | data%State%MudSystem%MVT_MinVol_Allowded= 0. | ||||
data%State%MudSystem%MVT_MaxVol_Allowded= 0. | data%State%MudSystem%MVT_MaxVol_Allowded= 0. | ||||
data%State%MudSystem%MudTank1_vol= MudProperties%ActiveMudVolumeGal/3. ! (gal) | |||||
data%State%MudSystem%MudTank2_vol= MudProperties%ActiveMudVolumeGal/3. ! (gal) | |||||
data%State%MudSystem%MudTank3_vol= MudProperties%ActiveMudVolumeGal/3. ! (gal) | |||||
data%State%MudSystem%ActiveTankSettled= MudProperties%ActiveSettledContentsGal ! (gal) | |||||
data%State%MudSystem%MudTank4_vol= MudProperties%InitialTripTankMudVolumeGal ! (gal) | |||||
data%State%MudSystem%MudTank1_vol= data%Configuration%Mud%ActiveMudVolumeGal/3. ! (gal) | |||||
data%State%MudSystem%MudTank2_vol= data%Configuration%Mud%ActiveMudVolumeGal/3. ! (gal) | |||||
data%State%MudSystem%MudTank3_vol= data%Configuration%Mud%ActiveMudVolumeGal/3. ! (gal) | |||||
data%State%MudSystem%ActiveTankSettled= data%Configuration%Mud%ActiveSettledContentsGal ! (gal) | |||||
data%State%MudSystem%MudTank4_vol= data%Configuration%Mud%InitialTripTankMudVolumeGal ! (gal) | |||||
data%State%MudSystem%TripTankVolumeCalc= MudProperties%InitialTripTankMudVolumeGal ! initial volume (gal) | |||||
data%State%MudSystem%ActiveTankDensity= MudProperties%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%TripTankVolumeCalc= data%Configuration%Mud%InitialTripTankMudVolumeGal ! initial volume (gal) | |||||
data%State%MudSystem%ActiveTankDensity= data%Configuration%Mud%ActiveDensity ! initial(ppg) | |||||
data%State%MudSystem%TripTankDensityCalc= data%EquipmentControl%Tank%TripTankDensity ! initial(ppg) | data%State%MudSystem%TripTankDensityCalc= data%EquipmentControl%Tank%TripTankDensity ! initial(ppg) | ||||
data%State%MudSystem%ChokeManifoldDumpVolume= 0.0 | data%State%MudSystem%ChokeManifoldDumpVolume= 0.0 | ||||
@@ -246,7 +246,7 @@ data%State%MudSystem%FirstSet_Time= .true. | |||||
data%State%MudSystem%PedalMeter= MudProperties%PedalFlowMeter !1600. !(gpm) | |||||
data%State%MudSystem%PedalMeter= data%Configuration%Mud%PedalFlowMeter !1600. !(gpm) | |||||
data%State%MudSystem%ReturnFlowRate=0. | data%State%MudSystem%ReturnFlowRate=0. | ||||
@@ -32,7 +32,7 @@ use SimulationVariables !@, pi4 => pi | |||||
KickVARIABLES%MaxChokeDensityChange = 25.0 ! [ppg/min] | KickVARIABLES%MaxChokeDensityChange = 25.0 ! [ppg/min] | ||||
KickVARIABLES%ChokeMinDensity = 2.0 | KickVARIABLES%ChokeMinDensity = 2.0 | ||||
KickVARIABLES%ChokeDensity = MudProperties%ActiveDensity | |||||
KickVARIABLES%ChokeDensity = data%Configuration%Mud%ActiveDensity | |||||
KickVARIABLES%MinKickVol = 0.5 ! USGal | KickVARIABLES%MinKickVol = 0.5 ! USGal | ||||
@@ -71,7 +71,7 @@ use SimulationVariables !@, pi4 => pi | |||||
SoundSpeed = 1530.0 / Convfttom | SoundSpeed = 1530.0 / Convfttom | ||||
data%State%PressureDisplay%PressureTimeStepDelay(1) = INT(2.0 * SUM(data%Configuration%StringConfiguration%StringConfigurations(2:)%ComponentLength) / SoundSpeed / dt) | data%State%PressureDisplay%PressureTimeStepDelay(1) = INT(2.0 * SUM(data%Configuration%StringConfiguration%StringConfigurations(2:)%ComponentLength) / SoundSpeed / dt) | ||||
data%State%PressureDisplay%PressureTimeStepDelay(2) = INT(PathGeneration%Items(SIZE(PathGeneration%Items))%MeasuredDepth / SoundSpeed / dt) | |||||
data%State%PressureDisplay%PressureTimeStepDelay(2) = INT(data%Configuration%Path%Items(SIZE(data%Configuration%Path%Items))%MeasuredDepth / SoundSpeed / dt) | |||||
data%State%PressureDisplay%PressureTimeStepDelay(3) = INT(Shoe%ShoeDepth / SoundSpeed / dt) | data%State%PressureDisplay%PressureTimeStepDelay(3) = INT(Shoe%ShoeDepth / SoundSpeed / dt) | ||||
!WRITE (*,*) SUM(StringConfigurations(2:)%ComponentLength), PathGenerations(SIZE(PathGenerations))%TotalVerticalDepth!, WellSurveyData(SIZE(WellSurveyData))%TotalVerticalDepth | !WRITE (*,*) SUM(StringConfigurations(2:)%ComponentLength), PathGenerations(SIZE(PathGenerations))%TotalVerticalDepth!, WellSurveyData(SIZE(WellSurveyData))%TotalVerticalDepth | ||||
@@ -83,11 +83,11 @@ use SimulationVariables !@, pi4 => pi | |||||
END DO | END DO | ||||
DO i = 1 , data%State%PressureDisplay%PressureTimeStepDelay(2) | DO i = 1 , data%State%PressureDisplay%PressureTimeStepDelay(2) | ||||
CALL BottomHolePressureDelay%AddToFirst(REAL(0.052 * MudProperties%ActiveDensity * PathGeneration%Items(SIZE(PathGeneration%Items))%TotalVerticalDepth)) | |||||
CALL BottomHolePressureDelay%AddToFirst(REAL(0.052 * data%Configuration%Mud%ActiveDensity * data%Configuration%Path%Items(SIZE(data%Configuration%Path%Items))%TotalVerticalDepth)) | |||||
END DO | END DO | ||||
DO i = 1 , data%State%PressureDisplay%PressureTimeStepDelay(3) | DO i = 1 , data%State%PressureDisplay%PressureTimeStepDelay(3) | ||||
CALL ShoePressureDelay%AddToFirst(REAL(0.052 * MudProperties%ActiveDensity * Shoe%ShoeDepth)) | |||||
CALL ShoePressureDelay%AddToFirst(REAL(0.052 * data%Configuration%Mud%ActiveDensity * Shoe%ShoeDepth)) | |||||
END DO | END DO | ||||
@@ -113,8 +113,8 @@ use SimulationVariables !@, pi4 => pi | |||||
data%State%GasType(3)%GasConstant = RUniversal / data%State%GasType(2)%MolarWt | data%State%GasType(3)%GasConstant = RUniversal / data%State%GasType(2)%MolarWt | ||||
!!!!!!!! Mud density and viscosity | !!!!!!!! Mud density and viscosity | ||||
Theta600Refrence = MudProperties%ActiveThetaSixHundred | |||||
Theta300Refrence = MudProperties%ActiveThetaThreeHundred | |||||
DensityRefrence = MudProperties%ActiveDensity | |||||
Theta600Refrence = data%Configuration%Mud%ActiveThetaSixHundred | |||||
Theta300Refrence = data%Configuration%Mud%ActiveThetaThreeHundred | |||||
DensityRefrence = data%Configuration%Mud%ActiveDensity | |||||
END SUBROUTINE | END SUBROUTINE |
@@ -11,7 +11,7 @@ SUBROUTINE FricPressDrop(iloc) | |||||
USE FricPressDropVarsModule | USE FricPressDropVarsModule | ||||
USE CMudPropertiesVariables | |||||
USE SimulationVariables | |||||
USE Fluid_Flow_Startup_Vars | USE Fluid_Flow_Startup_Vars | ||||
USE CError | USE CError | ||||
@@ -45,9 +45,9 @@ SUBROUTINE FricPressDrop(iloc) | |||||
FlowEl(iloc)%YieldP = 2.0 * FlowEl(iloc)%Theta300 - FlowEl(iloc)%Theta600 ! lbf/100ft**2 | FlowEl(iloc)%YieldP = 2.0 * FlowEl(iloc)%Theta300 - FlowEl(iloc)%Theta600 ! lbf/100ft**2 | ||||
FlowEl(iloc)%nIndex = 3.32 * log10(FlowEl(iloc)%Theta600 / FlowEl(iloc)%Theta300) | FlowEl(iloc)%nIndex = 3.32 * log10(FlowEl(iloc)%Theta600 / FlowEl(iloc)%Theta300) | ||||
FlowEl(iloc)%kIndex = 510.0 * FlowEl(iloc)%Theta300 / (511.0**FlowEl(iloc)%nIndex) ! rabete fv2 | FlowEl(iloc)%kIndex = 510.0 * FlowEl(iloc)%Theta300 / (511.0**FlowEl(iloc)%nIndex) ! rabete fv2 | ||||
IF (MudProperties%ActiveRheologyModel == Herschel_Bulkley_RheologyModel .AND. FlowEl(iloc)%alpha == 0) THEN | |||||
IF (data%Configuration%Mud%ActiveRheologyModel == Herschel_Bulkley_RheologyModel .AND. FlowEl(iloc)%alpha == 0) THEN | |||||
FlowEl(iloc)%kIndex = 1.066 * FlowEl(iloc)%Theta300 / (511.0**FlowEl(iloc)%nIndex) | FlowEl(iloc)%kIndex = 1.066 * FlowEl(iloc)%Theta300 / (511.0**FlowEl(iloc)%nIndex) | ||||
ELSE IF (MudProperties%ActiveRheologyModel == Herschel_Bulkley_RheologyModel .AND. FlowEl(iloc)%alpha == 1) THEN | |||||
ELSE IF (data%Configuration%Mud%ActiveRheologyModel == Herschel_Bulkley_RheologyModel .AND. FlowEl(iloc)%alpha == 1) THEN | |||||
FlowEl(iloc)%nIndex = 3.32 * log10((FlowEl(iloc)%Theta600 - TauZero) / (FlowEl(iloc)%Theta300 - TauZero)) | FlowEl(iloc)%nIndex = 3.32 * log10((FlowEl(iloc)%Theta600 - TauZero) / (FlowEl(iloc)%Theta300 - TauZero)) | ||||
FlowEl(iloc)%kIndex = 1.066 * (FlowEl(iloc)%Theta300 - TauZero) / (511.0**FlowEl(iloc)%nIndex) | FlowEl(iloc)%kIndex = 1.066 * (FlowEl(iloc)%Theta300 - TauZero) / (511.0**FlowEl(iloc)%nIndex) | ||||
END IF | END IF | ||||
@@ -75,10 +75,10 @@ SUBROUTINE FricPressDrop(iloc) | |||||
!END IF | !END IF | ||||
! Calculating effective or apparent viscosity | ! Calculating effective or apparent viscosity | ||||
IF (MudProperties%ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic | |||||
IF (data%Configuration%Mud%ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic | |||||
FlowEl(iloc)%mueff = FlowEl(iloc)%muPlastic + 5. * FlowEl(iloc)%YieldP * FlowEl(iloc)%Dhyd / FlowEl(iloc)%vel | FlowEl(iloc)%mueff = FlowEl(iloc)%muPlastic + 5. * FlowEl(iloc)%YieldP * FlowEl(iloc)%Dhyd / FlowEl(iloc)%vel | ||||
!write(*,*) 'pointer1' , FlowEl(iloc)%muPlastic , FlowEl(iloc)%YieldP , FlowEl(iloc)%Dhyd , FlowEl(iloc)%vel | !write(*,*) 'pointer1' , FlowEl(iloc)%muPlastic , FlowEl(iloc)%YieldP , FlowEl(iloc)%Dhyd , FlowEl(iloc)%vel | ||||
ELSE IF (MudProperties%ActiveRheologyModel == PowerLaw_RheologyModel .OR. MudProperties%ActiveRheologyModel == Herschel_Bulkley_RheologyModel) THEN ! Power Law | |||||
ELSE IF (data%Configuration%Mud%ActiveRheologyModel == PowerLaw_RheologyModel .OR. data%Configuration%Mud%ActiveRheologyModel == Herschel_Bulkley_RheologyModel) THEN ! Power Law | |||||
FlowEl(iloc)%Gf = ((3. - FlowEl(iloc)%alpha) * FlowEl(iloc)%nIndex + 1.0) / FlowEl(iloc)%nIndex / (4.0 - FlowEl(iloc)%alpha) * (2.0 + FlowEl(iloc)%alpha) / 2.0 | FlowEl(iloc)%Gf = ((3. - FlowEl(iloc)%alpha) * FlowEl(iloc)%nIndex + 1.0) / FlowEl(iloc)%nIndex / (4.0 - FlowEl(iloc)%alpha) * (2.0 + FlowEl(iloc)%alpha) / 2.0 | ||||
FlowEl(iloc)%mueff = (FlowEl(iloc)%kIndex) / (1. + FlowEl(iloc)%alpha / 2.) * ((96. * FlowEl(iloc)%vel / FlowEl(iloc)%Dhyd)**(FlowEl(iloc)%nIndex - 1)) * FlowEl(iloc)%Gf**FlowEl(iloc)%nIndex | FlowEl(iloc)%mueff = (FlowEl(iloc)%kIndex) / (1. + FlowEl(iloc)%alpha / 2.) * ((96. * FlowEl(iloc)%vel / FlowEl(iloc)%Dhyd)**(FlowEl(iloc)%nIndex - 1)) * FlowEl(iloc)%Gf**FlowEl(iloc)%nIndex | ||||
!write(*,*) 'pointer2' , FlowEl(iloc)%kIndex ,FlowEl(iloc)%alpha , FlowEl(iloc)%vel ,FlowEl(iloc)%Dhyd,FlowEl(iloc)%nIndex ,FlowEl(iloc)%Gf ,FlowEl(iloc)%nIndex | !write(*,*) 'pointer2' , FlowEl(iloc)%kIndex ,FlowEl(iloc)%alpha , FlowEl(iloc)%vel ,FlowEl(iloc)%Dhyd,FlowEl(iloc)%nIndex ,FlowEl(iloc)%Gf ,FlowEl(iloc)%nIndex | ||||
@@ -99,7 +99,7 @@ SUBROUTINE FricPressDrop(iloc) | |||||
!FlowEl(iloc)%GenRe = 2997 * FlowEl(iloc)%density * FlowEl(iloc)%vel**2 / 19.36 / FlowEl(iloc)%tauW | !FlowEl(iloc)%GenRe = 2997 * FlowEl(iloc)%density * FlowEl(iloc)%vel**2 / 19.36 / FlowEl(iloc)%tauW | ||||
! Calculating friction factor | ! Calculating friction factor | ||||
IF (MudProperties%ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic | |||||
IF (data%Configuration%Mud%ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic | |||||
IF (FlowEl(iloc)%GenRe <= 2000.0) THEN ! laminar regime | IF (FlowEl(iloc)%GenRe <= 2000.0) THEN ! laminar regime | ||||
FlowEl(iloc)%f = 16.0 / FlowEl(iloc)%GenRe | FlowEl(iloc)%f = 16.0 / FlowEl(iloc)%GenRe | ||||
ELSE IF (FlowEl(iloc)%GenRe >= 4000.0) THEN ! turbulent regime | ELSE IF (FlowEl(iloc)%GenRe >= 4000.0) THEN ! turbulent regime | ||||
@@ -113,7 +113,7 @@ SUBROUTINE FricPressDrop(iloc) | |||||
+ (FlowEl(iloc)%GenRe - 2000.0) / 2000.0 * FlowEl(iloc)%a / FlowEl(iloc)%GenRe**FlowEl(iloc)%b | + (FlowEl(iloc)%GenRe - 2000.0) / 2000.0 * FlowEl(iloc)%a / FlowEl(iloc)%GenRe**FlowEl(iloc)%b | ||||
END IF | END IF | ||||
ELSE IF (MudProperties%ActiveRheologyModel == PowerLaw_RheologyModel) THEN ! Power law | |||||
ELSE IF (data%Configuration%Mud%ActiveRheologyModel == PowerLaw_RheologyModel) THEN ! Power law | |||||
FlowEl(iloc)%ReCritLam = 3470. - 1370. * FlowEl(iloc)%nIndex | FlowEl(iloc)%ReCritLam = 3470. - 1370. * FlowEl(iloc)%nIndex | ||||
FlowEl(iloc)%ReCritTurb = 4270. - 1370. * FlowEl(iloc)%nIndex | FlowEl(iloc)%ReCritTurb = 4270. - 1370. * FlowEl(iloc)%nIndex | ||||
@@ -167,7 +167,7 @@ END SUBROUTINE FricPressDrop | |||||
SUBROUTINE PartialDerivativeFricToFlowRate(iloc) | SUBROUTINE PartialDerivativeFricToFlowRate(iloc) | ||||
USE FricPressDropVarsModule | USE FricPressDropVarsModule | ||||
USE CMudPropertiesVariables | |||||
USE SimulationVariables | |||||
USE Fluid_Flow_Startup_Vars | USE Fluid_Flow_Startup_Vars | ||||
use KickVARIABLESModule | use KickVARIABLESModule | ||||
USE CError | USE CError | ||||
@@ -186,7 +186,7 @@ SUBROUTINE PartialDerivativeFricToFlowRate(iloc) | |||||
.AND. (ABS(FlowEl(iloc)%Length) >= PressLengthTolerance) & | .AND. (ABS(FlowEl(iloc)%Length) >= PressLengthTolerance) & | ||||
.AND. (FlowEl(iloc)%MaterialType /= 4)) THEN ! not air | .AND. (FlowEl(iloc)%MaterialType /= 4)) THEN ! not air | ||||
IF (MudProperties%ActiveRheologyModel == PowerLaw_RheologyModel) THEN ! Power law | |||||
IF (data%Configuration%Mud%ActiveRheologyModel == PowerLaw_RheologyModel) THEN ! Power law | |||||
!IF (FlowEl(iloc)%Flowrate == 0.0) THEN | !IF (FlowEl(iloc)%Flowrate == 0.0) THEN | ||||
! FlowEl(iloc)%Flowrate = 10.0 | ! FlowEl(iloc)%Flowrate = 10.0 | ||||
! CALL FricPressDrop(iloc) | ! CALL FricPressDrop(iloc) | ||||
@@ -204,7 +204,7 @@ SUBROUTINE PartialDerivativeFricToFlowRate(iloc) | |||||
* ((FlowEl(iloc)%a * FlowEl(iloc)%GenRe**(1. - FlowEl(iloc)%b) - 16.) / 800. / FlowEl(iloc)%f - 1.)) | * ((FlowEl(iloc)%a * FlowEl(iloc)%GenRe**(1. - FlowEl(iloc)%b) - 16.) / 800. / FlowEl(iloc)%f - 1.)) | ||||
END IF | END IF | ||||
ELSE IF (MudProperties%ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic | |||||
ELSE IF (data%Configuration%Mud%ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic | |||||
IF (FlowEl(iloc)%GenRe <= 2000.0 .OR. FlowEl(iloc)%f == 0.0) THEN ! laminar flow if f = 0.0, we have no flow in first time flowing | IF (FlowEl(iloc)%GenRe <= 2000.0 .OR. FlowEl(iloc)%f == 0.0) THEN ! laminar flow if f = 0.0, we have no flow in first time flowing | ||||
FlowEl(iloc)%FricToQPartialDiff = (16. * FlowEl(iloc)%muPlastic * REAL(FlowEl(iloc)%Length) * 2.224 * (10.)**(-3)) & | FlowEl(iloc)%FricToQPartialDiff = (16. * FlowEl(iloc)%muPlastic * REAL(FlowEl(iloc)%Length) * 2.224 * (10.)**(-3)) & | ||||
/ (25.81 * 928. * (1 - 0.184 * FlowEl(iloc)%alpha) * FlowEl(iloc)%Dhyd**2 * FlowEl(iloc)%Area) | / (25.81 * 928. * (1 - 0.184 * FlowEl(iloc)%alpha) * FlowEl(iloc)%Dhyd**2 * FlowEl(iloc)%Area) | ||||
@@ -168,7 +168,7 @@ use SimulationVariables !@@@ | |||||
data%State%ROP_Bit%RateOfPenetration = (data%State%ROP_Spec%f1*data%State%ROP_Spec%f2*data%State%ROP_Spec%f3*data%State%ROP_Spec%f4*data%State%ROP_Spec%f5*data%State%ROP_Spec%f6*data%State%ROP_Spec%f7*data%State%ROP_Spec%f8) ![ft/h] | data%State%ROP_Bit%RateOfPenetration = (data%State%ROP_Spec%f1*data%State%ROP_Spec%f2*data%State%ROP_Spec%f3*data%State%ROP_Spec%f4*data%State%ROP_Spec%f5*data%State%ROP_Spec%f6*data%State%ROP_Spec%f7*data%State%ROP_Spec%f8) ![ft/h] | ||||
data%State%ROP_Bit%RateOfPenetration = (DINT(data%State%ROP_Bit%RateOfPenetration*10.d0))/10.d0 | data%State%ROP_Bit%RateOfPenetration = (DINT(data%State%ROP_Bit%RateOfPenetration*10.d0))/10.d0 | ||||
if ( (data%State%TD_WellGeneral%WellTotalLength==PathGeneration%Items(PathGeneration%ItemCount)%MeasuredDepth) ) then | |||||
if ( (data%State%TD_WellGeneral%WellTotalLength==data%Configuration%Path%Items(data%Configuration%Path%ItemCount)%MeasuredDepth) ) then | |||||
data%State%ROP_Bit%SetROPGauge = data%State%ROP_Bit%RateOfPenetration | data%State%ROP_Bit%SetROPGauge = data%State%ROP_Bit%RateOfPenetration | ||||
Call Set_ROP(data%State%ROP_Bit%SetROPGauge) ![ft/h] | Call Set_ROP(data%State%ROP_Bit%SetROPGauge) ![ft/h] | ||||
data%State%ROP_Bit%OldROPValue(4) = data%State%ROP_Bit%RateOfPenetration | data%State%ROP_Bit%OldROPValue(4) = data%State%ROP_Bit%RateOfPenetration | ||||
@@ -81,9 +81,9 @@ module SimulationVariables | |||||
Type(PumpSpecificationType)::Pumps | Type(PumpSpecificationType)::Pumps | ||||
Type(RigSizeType)::RigSize | Type(RigSizeType)::RigSize | ||||
Type(CasingLinerChokeType)::CasingLinerChoke | Type(CasingLinerChokeType)::CasingLinerChoke | ||||
Type(PathGenerationType)::PathGeneration | |||||
Type(WellSurveyDataType)::WellSurveyData | |||||
Type(MudPropertiesType)::MudProperties | |||||
Type(PathGenerationType)::Path | |||||
! Type(WellSurveyDataType)::WellSurveyData | |||||
Type(MudPropertiesType)::Mud | |||||
end type ConfigurationType | end type ConfigurationType | ||||
type EquipmentControlType | type EquipmentControlType | ||||
@@ -85,7 +85,8 @@ | |||||
<File RelativePath=".\CSharp\BasicInputs\WellProfile\CPathGenerationVariables.f90"/> | <File RelativePath=".\CSharp\BasicInputs\WellProfile\CPathGenerationVariables.f90"/> | ||||
<File RelativePath=".\CSharp\BasicInputs\WellProfile\CWellSurveyData.f90"/> | <File RelativePath=".\CSharp\BasicInputs\WellProfile\CWellSurveyData.f90"/> | ||||
<File RelativePath=".\CSharp\BasicInputs\WellProfile\CWellSurveyDataVariables.f90"/></Filter> | <File RelativePath=".\CSharp\BasicInputs\WellProfile\CWellSurveyDataVariables.f90"/></Filter> | ||||
<File RelativePath=".\CSharp\BasicInputs\CMudPropertiesVariables.f90"/></Filter> | |||||
<File RelativePath=".\CSharp\BasicInputs\CMudPropertiesVariables.f90"/> | |||||
<File RelativePath=".\CSharp\BasicInputs\MudProperties.f90"/></Filter> | |||||
<Filter Name="Common"> | <Filter Name="Common"> | ||||
<File RelativePath=".\CSharp\Common\CCommon.f90"/> | <File RelativePath=".\CSharp\Common\CCommon.f90"/> | ||||
<File RelativePath=".\CSharp\Common\CCommonVariables.f90"/> | <File RelativePath=".\CSharp\Common\CCommonVariables.f90"/> | ||||
@@ -1,15 +1,7 @@ | |||||
real(8) :: CasingDepth | |||||
real(8) :: CasingId | |||||
real(8) :: CasingOd | |||||
real(8) :: CasingWeight | |||||
real(8) :: CasingCollapsePressure | |||||
real(8) :: CasingTensileStrength | |||||
real(8) :: LinerTopDepth | |||||
real(8) :: LinerLength | |||||
real(8) :: LinerId | |||||
real(8) :: LinerOd | |||||
real(8) :: LinerWeight | |||||
real(8) :: LinerCollapsePressure | |||||
real(8) :: LinerTensileStrength | |||||
real(8) :: OpenHoleId | |||||
real(8) :: OpenHoleLength | |||||
integer :: HoleType | |||||
real(8) :: Angle | |||||
real(8) :: Length | |||||
real(8) :: FinalAngle | |||||
real(8) :: TotalLength | |||||
real(8) :: MeasuredDepth | |||||
real(8) :: TotalVerticalDepth |
@@ -9,7 +9,7 @@ subroutine TD_WellReadData | |||||
data%State%TD_WellGeneral%WellIntervalsCount = PathGeneration%ItemCount + 1 ! +1 is belong to ROP hole | |||||
data%State%TD_WellGeneral%WellIntervalsCount = data%Configuration%Path%ItemCount + 1 ! +1 is belong to ROP hole | |||||
if (Allocated(data%State%TD_WellGeo)) deAllocate (data%State%TD_WellGeo) | if (Allocated(data%State%TD_WellGeo)) deAllocate (data%State%TD_WellGeo) | ||||
Allocate (data%State%TD_WellGeo(data%State%TD_WellGeneral%WellIntervalsCount)) | Allocate (data%State%TD_WellGeo(data%State%TD_WellGeneral%WellIntervalsCount)) | ||||
@@ -21,25 +21,25 @@ subroutine TD_WellReadData | |||||
! Set Well Geometry Data | ! Set Well Geometry Data | ||||
!==================================================== | !==================================================== | ||||
data%State%TD_WellGeo(1)%HoleType = PathGeneration%Items(1)%HoleType | |||||
data%State%TD_WellGeo(1)%HoleType = data%Configuration%Path%Items(1)%HoleType | |||||
data%State%TD_WellGeo(1)%StartAngle = 0.d0 ![rad] | data%State%TD_WellGeo(1)%StartAngle = 0.d0 ![rad] | ||||
data%State%TD_WellGeo(1)%EndAngle = PathGeneration%Items(1)%FinalAngle*(pi/180.d0) ![rad] | |||||
data%State%TD_WellGeo(1)%IntervalLength= PathGeneration%Items(1)%TotalLength ![ft] | |||||
data%State%TD_WellGeo(1)%EndAngle = data%Configuration%Path%Items(1)%FinalAngle*(pi/180.d0) ![rad] | |||||
data%State%TD_WellGeo(1)%IntervalLength= data%Configuration%Path%Items(1)%TotalLength ![ft] | |||||
!data%State%TD_WellGeo(1)%VerticalDepth = PathGenerations(1)%TotalVerticalDepth | !data%State%TD_WellGeo(1)%VerticalDepth = PathGenerations(1)%TotalVerticalDepth | ||||
data%State%TD_WellGeo(1)%TopDepth = 0.d0 | data%State%TD_WellGeo(1)%TopDepth = 0.d0 | ||||
data%State%TD_WellGeo(1)%DownDepth = PathGeneration%Items(1)%MeasuredDepth | |||||
data%State%TD_WellGeo(1)%DownDepth = data%Configuration%Path%Items(1)%MeasuredDepth | |||||
Do i=2,data%State%TD_WellGeneral%WellIntervalsCount-1 | Do i=2,data%State%TD_WellGeneral%WellIntervalsCount-1 | ||||
data%State%TD_WellGeo(i)%HoleType = PathGeneration%Items(i)%HoleType | |||||
data%State%TD_WellGeo(i)%StartAngle = PathGeneration%Items(i-1)%FinalAngle*(pi/180.d0) | |||||
data%State%TD_WellGeo(i)%EndAngle = PathGeneration%Items(i)%FinalAngle*(pi/180.d0) | |||||
data%State%TD_WellGeo(i)%IntervalLength= PathGeneration%Items(i)%TotalLength | |||||
!data%State%TD_WellGeo(i)%VerticalDepth = PathGeneration%Items(i)%TotalVerticalDepth | |||||
data%State%TD_WellGeo(i)%TopDepth = PathGeneration%Items(i-1)%MeasuredDepth | |||||
data%State%TD_WellGeo(i)%DownDepth = PathGeneration%Items(i)%MeasuredDepth | |||||
data%State%TD_WellGeo(i)%HoleType = data%Configuration%Path%Items(i)%HoleType | |||||
data%State%TD_WellGeo(i)%StartAngle = data%Configuration%Path%Items(i-1)%FinalAngle*(pi/180.d0) | |||||
data%State%TD_WellGeo(i)%EndAngle = data%Configuration%Path%Items(i)%FinalAngle*(pi/180.d0) | |||||
data%State%TD_WellGeo(i)%IntervalLength= data%Configuration%Path%Items(i)%TotalLength | |||||
!data%State%TD_WellGeo(i)%VerticalDepth = data%Configuration%Path%Items(i)%TotalVerticalDepth | |||||
data%State%TD_WellGeo(i)%TopDepth = data%Configuration%Path%Items(i-1)%MeasuredDepth | |||||
data%State%TD_WellGeo(i)%DownDepth = data%Configuration%Path%Items(i)%MeasuredDepth | |||||
!=====> Radius Of Curvature Calculation | !=====> Radius Of Curvature Calculation | ||||
if (data%State%TD_WellGeo(i)%HoleType/=0) then | if (data%State%TD_WellGeo(i)%HoleType/=0) then | ||||
@@ -26,7 +26,7 @@ subroutine TD_StartUp | |||||
!! Allocate Modules | !! Allocate Modules | ||||
!!==================================================== | !!==================================================== | ||||
! !=====> Set WellGeo Dimension | ! !=====> Set WellGeo Dimension | ||||
! data%State%TD_WellGeneral%WellIntervalsCount = PathGeneration%ItemCount + 1 ! +1 is belong to ROP hole | |||||
! data%State%TD_WellGeneral%WellIntervalsCount = data%Configuration%Path%ItemCount + 1 ! +1 is belong to ROP hole | |||||
! Allocate (data%State%TD_WellGeo(data%State%TD_WellGeneral%WellIntervalsCount)) | ! Allocate (data%State%TD_WellGeo(data%State%TD_WellGeneral%WellIntervalsCount)) | ||||
! | ! | ||||
! !=====> Set WellGeo Dimension | ! !=====> Set WellGeo Dimension | ||||
@@ -37,7 +37,7 @@ subroutine TD_StartUp | |||||
data%State%ROP_Bit%RateOfPenetration = 0.d0 | data%State%ROP_Bit%RateOfPenetration = 0.d0 | ||||
data%State%ROP_Bit%BearingWear = 0.d0 | data%State%ROP_Bit%BearingWear = 0.d0 | ||||
data%State%ROP_Spec%FormationNumber = 0 | data%State%ROP_Spec%FormationNumber = 0 | ||||
data%State%ROP_Bit%OldROPDepth = PathGeneration%Items(PathGeneration%ItemCount)%MeasuredDepth | |||||
data%State%ROP_Bit%OldROPDepth = data%Configuration%Path%Items(data%Configuration%Path%ItemCount)%MeasuredDepth | |||||
data%State%ROP_Bit%OldROPValue = 0.d0 | data%State%ROP_Bit%OldROPValue = 0.d0 | ||||
data%State%ROP_Bit%SetROPGauge = 0.d0 | data%State%ROP_Bit%SetROPGauge = 0.d0 | ||||
@@ -2,58 +2,81 @@ | |||||
"cells": [ | "cells": [ | ||||
{ | { | ||||
"cell_type": "code", | "cell_type": "code", | ||||
"execution_count": 19, | |||||
"execution_count": 5, | |||||
"metadata": {}, | "metadata": {}, | ||||
"outputs": [ | "outputs": [ | ||||
{ | { | ||||
"data": { | |||||
"text/plain": [ | |||||
"[' integer :: RigType\\n',\n", | |||||
" ' real(8) :: CrownHeight\\n',\n", | |||||
" ' real(8) :: MonkeyBoandHeight\\n',\n", | |||||
" ' real(8) :: RigFloorHeight\\n']" | |||||
] | |||||
}, | |||||
"execution_count": 19, | |||||
"metadata": {}, | |||||
"output_type": "execute_result" | |||||
"name": "stdout", | |||||
"output_type": "stream", | |||||
"text": [ | |||||
"{\"BitType\":0,\n", | |||||
"\"BitSize\":0,\n", | |||||
"\"BitCodeHundreds\":0,\n", | |||||
"\"BitCodeTens\":0,\n", | |||||
"\"BitCodeOnes\":0,\n", | |||||
"\"BitNozzleSize\":0,\n", | |||||
"\"BitLength\":0,\n", | |||||
"\"BitWeightPerLength\":0,\n", | |||||
"\"BitNozzleNo\":0,\n", | |||||
"\"FloatValve\":0,\n", | |||||
"\n" | |||||
] | |||||
} | } | ||||
], | ], | ||||
"source": [ | "source": [ | ||||
"lines" | |||||
"input = open(\"Text1.txt\")\n", | |||||
"output = \"{\"\n", | |||||
"lines = input.readlines()\n", | |||||
"for line in lines:\n", | |||||
" name = line.split(\"::\")[-1].strip()\n", | |||||
" type = line.split(\"::\")[0].strip()\n", | |||||
" output += f\"\\\"{name}\\\":0,\\n\" \n", | |||||
" # name = line.split(\"%\")[-1][:-1]\n", | |||||
" # print(name)\n", | |||||
"print(output+\"}\")\n" | |||||
] | ] | ||||
}, | }, | ||||
{ | { | ||||
"cell_type": "code", | "cell_type": "code", | ||||
"execution_count": 23, | |||||
"execution_count": 4, | |||||
"metadata": {}, | "metadata": {}, | ||||
"outputs": [ | "outputs": [ | ||||
{ | { | ||||
"name": "stdout", | "name": "stdout", | ||||
"output_type": "stream", | "output_type": "stream", | ||||
"text": [ | "text": [ | ||||
"call json%add(p,\"CasingDepth\",data%Configuration%CasingLinerChoke%CasingDepth)\n", | |||||
"call json%add(p,\"CasingId\",data%Configuration%CasingLinerChoke%CasingId)\n", | |||||
"call json%add(p,\"CasingOd\",data%Configuration%CasingLinerChoke%CasingOd)\n", | |||||
"call json%add(p,\"CasingWeight\",data%Configuration%CasingLinerChoke%CasingWeight)\n", | |||||
"call json%add(p,\"CasingCollapsePressure\",data%Configuration%CasingLinerChoke%CasingCollapsePressure)\n", | |||||
"call json%add(p,\"CasingTensileStrength\",data%Configuration%CasingLinerChoke%CasingTensileStrength)\n", | |||||
"call json%add(p,\"\",data%Configuration%CasingLinerChoke%)\n", | |||||
"call json%add(p,\"LinerTopDepth\",data%Configuration%CasingLinerChoke%LinerTopDepth)\n", | |||||
"call json%add(p,\"LinerLength\",data%Configuration%CasingLinerChoke%LinerLength)\n", | |||||
"call json%add(p,\"LinerId\",data%Configuration%CasingLinerChoke%LinerId)\n", | |||||
"call json%add(p,\"LinerOd\",data%Configuration%CasingLinerChoke%LinerOd)\n", | |||||
"call json%add(p,\"LinerWeight\",data%Configuration%CasingLinerChoke%LinerWeight)\n", | |||||
"call json%add(p,\"LinerCollapsePressure\",data%Configuration%CasingLinerChoke%LinerCollapsePressure)\n", | |||||
"call json%add(p,\"LinerTensileStrength\",data%Configuration%CasingLinerChoke%LinerTensileStrength)\n", | |||||
"call json%add(p,\"\",data%Configuration%CasingLinerChoke%)\n", | |||||
"call json%add(p,\"OpenHoleId\",data%Configuration%CasingLinerChoke%OpenHoleId)\n", | |||||
"call json%add(p,\"OpenHoleLength\",data%Configuration%CasingLinerChoke%OpenHoleLength)\n" | |||||
"call json%add(p,\"ActiveMudType\",data%Configuration%Mud%ActiveMudType)\n", | |||||
"call json%add(p,\"ActiveRheologyModel\",data%Configuration%Mud%ActiveRheologyModel)\n", | |||||
"call json%add(p,\"ActiveMudVolume\",data%Configuration%Mud%ActiveMudVolume)\n", | |||||
"call json%add(p,\"ActiveMudVolumeGal\",data%Configuration%Mud%ActiveMudVolumeGal)\n", | |||||
"call json%add(p,\"ActiveDensity\",data%Configuration%Mud%ActiveDensity)\n", | |||||
"call json%add(p,\"ActivePlasticViscosity\",data%Configuration%Mud%ActivePlasticViscosity)\n", | |||||
"call json%add(p,\"ActiveYieldPoint\",data%Configuration%Mud%ActiveYieldPoint)\n", | |||||
"call json%add(p,\"ActiveThetaThreeHundred\",data%Configuration%Mud%ActiveThetaThreeHundred)\n", | |||||
"call json%add(p,\"ActiveThetaSixHundred\",data%Configuration%Mud%ActiveThetaSixHundred)\n", | |||||
"call json%add(p,\"ReserveMudType\",data%Configuration%Mud%ReserveMudType)\n", | |||||
"call json%add(p,\"ReserveMudVolume\",data%Configuration%Mud%ReserveMudVolume)\n", | |||||
"call json%add(p,\"ReserveMudVolumeGal\",data%Configuration%Mud%ReserveMudVolumeGal)\n", | |||||
"call json%add(p,\"ReserveDensity\",data%Configuration%Mud%ReserveDensity)\n", | |||||
"call json%add(p,\"ReservePlasticViscosity\",data%Configuration%Mud%ReservePlasticViscosity)\n", | |||||
"call json%add(p,\"ReserveYieldPoint\",data%Configuration%Mud%ReserveYieldPoint)\n", | |||||
"call json%add(p,\"ReserveThetaThreeHundred\",data%Configuration%Mud%ReserveThetaThreeHundred)\n", | |||||
"call json%add(p,\"ReserveThetaSixHundred\",data%Configuration%Mud%ReserveThetaSixHundred)\n", | |||||
"call json%add(p,\"ActiveTotalTankCapacity\",data%Configuration%Mud%ActiveTotalTankCapacity)\n", | |||||
"call json%add(p,\"ActiveTotalTankCapacityGal\",data%Configuration%Mud%ActiveTotalTankCapacityGal)\n", | |||||
"call json%add(p,\"ActiveSettledContents\",data%Configuration%Mud%ActiveSettledContents)\n", | |||||
"call json%add(p,\"ActiveSettledContentsGal\",data%Configuration%Mud%ActiveSettledContentsGal)\n", | |||||
"call json%add(p,\"ActiveTotalContents\",data%Configuration%Mud%ActiveTotalContents)\n", | |||||
"call json%add(p,\"ActiveTotalContentsGal\",data%Configuration%Mud%ActiveTotalContentsGal)\n", | |||||
"call json%add(p,\"ActiveAutoDensity\",data%Configuration%Mud%ActiveAutoDensity)\n", | |||||
"call json%add(p,\"InitialTripTankMudVolume\",data%Configuration%Mud%InitialTripTankMudVolume)\n", | |||||
"call json%add(p,\"InitialTripTankMudVolumeGal\",data%Configuration%Mud%InitialTripTankMudVolumeGal)\n", | |||||
"call json%add(p,\"PedalFlowMeter\",data%Configuration%Mud%PedalFlowMeter)\n" | |||||
] | ] | ||||
} | } | ||||
], | ], | ||||
"source": [ | "source": [ | ||||
"precode = \"\"\"call json%add(p,\"\",data%Configuration%CasingLinerChoke%\"\"\"\n", | |||||
"precode = \"\"\"call json%add(p,\"\",data%Configuration%Mud%\"\"\"\n", | |||||
"input = open(\"Text1.txt\")\n", | "input = open(\"Text1.txt\")\n", | ||||
"lines = input.readlines()\n", | "lines = input.readlines()\n", | ||||
"for line in lines:\n", | "for line in lines:\n", | ||||
@@ -1,7 +1,31 @@ | |||||
{ | { | ||||
"Configuration": { | "Configuration": { | ||||
"StringConfiguration": { | "StringConfiguration": { | ||||
"StringConfigurationItems": [], | |||||
"StringConfigurationItems": [ | |||||
{"BitType":0, | |||||
"BitSize":0, | |||||
"BitCodeHundreds":0, | |||||
"BitCodeTens":0, | |||||
"BitCodeOnes":0, | |||||
"BitNozzleSize":0, | |||||
"BitLength":0, | |||||
"BitWeightPerLength":0, | |||||
"BitNozzleNo":0, | |||||
"FloatValve":0 | |||||
} | |||||
, | |||||
{"BitType":0, | |||||
"BitSize":0, | |||||
"BitCodeHundreds":0, | |||||
"BitCodeTens":0, | |||||
"BitCodeOnes":0, | |||||
"BitNozzleSize":0, | |||||
"BitLength":0, | |||||
"BitWeightPerLength":0, | |||||
"BitNozzleNo":0, | |||||
"FloatValve":0 | |||||
} | |||||
], | |||||
"BitDefenition": { | "BitDefenition": { | ||||
"BitCodeHundreds": 0, | "BitCodeHundreds": 0, | ||||
"BitCodeOnes": 0, | "BitCodeOnes": 0, | ||||
@@ -15,7 +39,22 @@ | |||||
"FloatValve": false | "FloatValve": false | ||||
} | } | ||||
}, | }, | ||||
"Fromations": [], | |||||
"Fromations": [ | |||||
{"Top":0, | |||||
"Thickness":0, | |||||
"Drillablity":0, | |||||
"Abrasiveness":0, | |||||
"ThresholdWeight":0, | |||||
"PorePressureGradient":0 | |||||
}, | |||||
{"Top":0, | |||||
"Thickness":0, | |||||
"Drillablity":0, | |||||
"Abrasiveness":0, | |||||
"ThresholdWeight":0, | |||||
"PorePressureGradient":0 | |||||
} | |||||
], | |||||
"Reservoir": { | "Reservoir": { | ||||
"AutoMigrationRate": 0.0E+0, | "AutoMigrationRate": 0.0E+0, | ||||
"FluidGradient": 0.0E+0, | "FluidGradient": 0.0E+0, | ||||
@@ -152,6 +191,33 @@ | |||||
"OpenHoleId": 0.0E+0, | "OpenHoleId": 0.0E+0, | ||||
"OpenHoleLength": 0.0E+0 | "OpenHoleLength": 0.0E+0 | ||||
}, | }, | ||||
"Path": {} | |||||
"Path": { | |||||
"Items": [ | |||||
{"HoleType":0, | |||||
"Angle":0, | |||||
"Length":0, | |||||
"FinalAngle":0, | |||||
"TotalLength":0, | |||||
"MeasuredDepth":0, | |||||
"TotalVerticalDepth":0 | |||||
}, | |||||
{"HoleType":0, | |||||
"Angle":0, | |||||
"Length":0, | |||||
"FinalAngle":0, | |||||
"TotalLength":0, | |||||
"MeasuredDepth":0, | |||||
"TotalVerticalDepth":0 | |||||
} | |||||
], | |||||
"DataPoints": [ | |||||
{"X":0, | |||||
"Y":0 | |||||
}, | |||||
{"X":0, | |||||
"Y":0 | |||||
} | |||||
] | |||||
} | |||||
} | } | ||||
} | } |