Browse Source

before pruning csharp folder

najafi
mahmood19227 1 year ago
parent
commit
398228d0ff
21 changed files with 132 additions and 2850 deletions
  1. +26
    -24
      CSharp/BasicInputs/Bha/CStringConfiguration.f90
  2. +2
    -4
      CSharp/BasicInputs/Bha/CStringConfigurationVariables.f90
  3. +11
    -11
      CSharp/BasicInputs/Geology/CFormation.f90
  4. +2
    -4
      CSharp/BasicInputs/Geology/CFormationVariables.f90
  5. +0
    -15
      CSharp/Common/CLesson.f90
  6. +0
    -9
      CSharp/Common/CLessonVariables.f90
  7. +0
    -278
      CSharp/DownHole/CDownHole.f90
  8. +1
    -1
      CSharp/DownHole/CDownHoleVariables.f90
  9. +2
    -15
      Equipments/MudSystem/MudSystem.f90
  10. +2
    -2
      FluidFlow/Flow_Startup.f90
  11. +5
    -5
      FluidFlow/Well_Pressure_Data_Transfer.f90
  12. +7
    -6
      FluidFlow/kick/Formation_Information.f90
  13. +2
    -2
      Rop/Bit_Specification.f90
  14. +13
    -13
      Rop/ROP_MainCalculation.f90
  15. +0
    -1080
      Simulation/CSimulation.f90
  16. +0
    -146
      Simulation/CSimulationThreads.f90
  17. +0
    -1211
      Simulation/CSimulationVariables.f90
  18. +37
    -0
      Simulation/ConfigurationVariables.f90
  19. +3
    -6
      SimulationCore2.vfproj
  20. +17
    -17
      TorqueDrag/TD_ReadDataSubroutines/TD_DrillStemReadData.f90
  21. +2
    -1
      TorqueDrag/TD_ReadDataSubroutines/TD_WellElementsReadData.f90

+ 26
- 24
CSharp/BasicInputs/Bha/CStringConfiguration.f90 View File

@@ -1,5 +1,7 @@
module CStringConfiguration module CStringConfiguration
use CStringConfigurationVariables use CStringConfigurationVariables
use ConfigurationVariables
implicit none implicit none
public public
contains contains
@@ -14,41 +16,41 @@ module CStringConfiguration
type(CStringItem), intent(inout), target :: array(count) type(CStringItem), intent(inout), target :: array(count)
type(CBitInfo), intent(inout) :: bit type(CBitInfo), intent(inout) :: bit
type(CStringItem), pointer :: item type(CStringItem), pointer :: item
StringConfiguration%BitDefinition%BitType = bit%BitType Configuration%StringConfiguration%BitDefinition%BitType = bit%BitType
StringConfiguration%BitDefinition%BitSize = bit%BitSize Configuration%StringConfiguration%BitDefinition%BitSize = bit%BitSize
StringConfiguration%BitDefinition%BitCodeHundreds = bit%BitCodeHundreds Configuration%StringConfiguration%BitDefinition%BitCodeHundreds = bit%BitCodeHundreds
StringConfiguration%BitDefinition%BitCodeTens = bit%BitCodeTens Configuration%StringConfiguration%BitDefinition%BitCodeTens = bit%BitCodeTens
StringConfiguration%BitDefinition%BitCodeOnes = bit%BitCodeOnes Configuration%StringConfiguration%BitDefinition%BitCodeOnes = bit%BitCodeOnes
StringConfiguration%BitDefinition%BitNozzleSize = bit%BitNozzleSize Configuration%StringConfiguration%BitDefinition%BitNozzleSize = bit%BitNozzleSize
StringConfiguration%BitDefinition%BitLength = bit%BitLength Configuration%StringConfiguration%BitDefinition%BitLength = bit%BitLength
StringConfiguration%BitDefinition%BitWeightPerLength = bit%BitWeightPerLength Configuration%StringConfiguration%BitDefinition%BitWeightPerLength = bit%BitWeightPerLength
StringConfiguration%BitDefinition%BitNozzleNo = bit%BitNozzleNo Configuration%StringConfiguration%BitDefinition%BitNozzleNo = bit%BitNozzleNo
StringConfiguration%BitDefinition%FloatValve = bit%FloatValve Configuration%StringConfiguration%BitDefinition%FloatValve = bit%FloatValve
StringConfiguration%StringConfigurationCount = count Configuration%StringConfiguration%StringConfigurationCount = count
if(StringConfiguration%BitDefinition%FloatValve) then if(Configuration%StringConfiguration%BitDefinition%FloatValve) then
call InstallFloatValve() call InstallFloatValve()
else else
call RemoveFloatValve() call RemoveFloatValve()
endif endif
if(size(StringConfiguration%StringConfigurations) > 0) then if(size(Configuration%StringConfiguration%StringConfigurations) > 0) then
deallocate(StringConfiguration%StringConfigurations) deallocate(Configuration%StringConfiguration%StringConfigurations)
end if end if
if(count > 0) then if(count > 0) then
allocate(StringConfiguration%StringConfigurations(count)) allocate(Configuration%StringConfiguration%StringConfigurations(count))
!j = count !j = count
do i = 1, count do i = 1, count
item => array(i) item => array(i)
StringConfiguration%StringConfigurations(i)%ComponentType = item%ComponentType Configuration%StringConfiguration%StringConfigurations(i)%ComponentType = item%ComponentType
StringConfiguration%StringConfigurations(i)%NumberOfJoint = item%NumberOfJoint Configuration%StringConfiguration%StringConfigurations(i)%NumberOfJoint = item%NumberOfJoint
StringConfiguration%StringConfigurations(i)%LengthPerJoint = item%LengthPerJoint Configuration%StringConfiguration%StringConfigurations(i)%LengthPerJoint = item%LengthPerJoint
StringConfiguration%StringConfigurations(i)%NominalOd = item%NominalOd Configuration%StringConfiguration%StringConfigurations(i)%NominalOd = item%NominalOd
StringConfiguration%StringConfigurations(i)%NominalId = item%NominalId Configuration%StringConfiguration%StringConfigurations(i)%NominalId = item%NominalId
StringConfiguration%StringConfigurations(i)%WeightPerLength = item%WeightPerLength Configuration%StringConfiguration%StringConfigurations(i)%WeightPerLength = item%WeightPerLength
StringConfiguration%StringConfigurations(i)%ComponentLength = item%ComponentLength Configuration%StringConfiguration%StringConfigurations(i)%ComponentLength = item%ComponentLength
StringConfiguration%StringConfigurations(i)%NominalToolJointOd = item%NominalToolJointOd Configuration%StringConfiguration%StringConfigurations(i)%NominalToolJointOd = item%NominalToolJointOd
StringConfiguration%StringConfigurations(i)%Grade = item%Grade Configuration%StringConfiguration%StringConfigurations(i)%Grade = item%Grade
!print*, 'type=', StringConfigurations(i)%ComponentType !print*, 'type=', StringConfigurations(i)%ComponentType
!print*, 'NumberOfJoint=', StringConfigurations(i)%NumberOfJoint !print*, 'NumberOfJoint=', StringConfigurations(i)%NumberOfJoint
!print*, '-----------------------------------------------------------' !print*, '-----------------------------------------------------------'


+ 2
- 4
CSharp/BasicInputs/Bha/CStringConfigurationVariables.f90 View File

@@ -1,7 +1,7 @@
module CStringConfigurationVariables module CStringConfigurationVariables
! use ConfigurationVariables, only: Configuration
implicit none implicit none
public public
!constants !constants
integer :: Bit_ComponentType = 0 integer :: Bit_ComponentType = 0
integer :: Stabilizer_ComponentType = 1 integer :: Stabilizer_ComponentType = 1
@@ -49,7 +49,5 @@ module CStringConfigurationVariables
type(CStringItem), allocatable :: StringConfigurations(:) type(CStringItem), allocatable :: StringConfigurations(:)
type(CBitInfo) :: BitDefinition type(CBitInfo) :: BitDefinition
End type StringConfigurationType End type StringConfigurationType
Type(StringConfigurationType)::StringConfiguration
contains contains
end module CStringConfigurationVariables end module CStringConfigurationVariables

+ 11
- 11
CSharp/BasicInputs/Geology/CFormation.f90 View File

@@ -1,5 +1,6 @@
module CFormation module CFormation
use CFormationVariables use CFormationVariables
use ConfigurationVariables
implicit none implicit none
public public
contains contains
@@ -11,27 +12,26 @@ module CFormation
integer :: i integer :: i
type(CFormationItem), intent(inout), target :: array(count) type(CFormationItem), intent(inout), target :: array(count)
type(CFormationItem), pointer :: item type(CFormationItem), pointer :: item
Formation%Count = count Configuration%Formation%Count = count
if(size(Formation%Formations) > 0) then if(size(Configuration%Formation%Formations) > 0) then
deallocate(Formation%Formations) deallocate(Configuration%Formation%Formations)
end if end if
if(count > 0) then if(count > 0) then
allocate(Formation%Formations(count)) allocate(Configuration%Formation%Formations(count))
do i = 1, count do i = 1, count
item => array(i) item => array(i)
Formation%Formations(i)%Top = item%Top Configuration%Formation%Formations(i)%Top = item%Top
Formation%Formations(i)%Thickness = item%Thickness Configuration%Formation%Formations(i)%Thickness = item%Thickness
Formation%Formations(i)%Drillablity = item%Drillablity Configuration%Formation%Formations(i)%Drillablity = item%Drillablity
Formation%Formations(i)%Abrasiveness = item%Abrasiveness Configuration%Formation%Formations(i)%Abrasiveness = item%Abrasiveness
Formation%Formations(i)%ThresholdWeight = item%ThresholdWeight Configuration%Formation%Formations(i)%ThresholdWeight = item%ThresholdWeight
Formation%Formations(i)%PorePressureGradient = item%PorePressureGradient Configuration%Formation%Formations(i)%PorePressureGradient = item%PorePressureGradient
!print*, "===========================" !print*, "==========================="
!print*, "Formations(", i, ")%Top=", Formations(i)%Top !print*, "Formations(", i, ")%Top=", Formations(i)%Top
!print*, "Formations(",i,")%Thickness", Formations(i)%Thickness !print*, "Formations(",i,")%Thickness", Formations(i)%Thickness
!print*, "Formations(",i,")%Drillablity", Formations(i)%Drillablity !print*, "Formations(",i,")%Drillablity", Formations(i)%Drillablity
end do end do
end if end if

SetFormations = 0 SetFormations = 0
end function SetFormations end function SetFormations
end module CFormation end module CFormation

+ 2
- 4
CSharp/BasicInputs/Geology/CFormationVariables.f90 View File

@@ -1,6 +1,7 @@
module CFormationVariables module CFormationVariables
! use ConfigurationVariables, only: Configuration
implicit none implicit none
public public
! types ! types
! Pipe Items in String Array ! Pipe Items in String Array
@@ -17,7 +18,4 @@ module CFormationVariables
integer :: Count = 0 integer :: Count = 0
type(CFormationItem), allocatable :: Formations(:) type(CFormationItem), allocatable :: Formations(:)
End type FormationType End type FormationType
Type(FormationType) :: Formation
contains
end module CFormationVariables end module CFormationVariables

+ 0
- 15
CSharp/Common/CLesson.f90 View File

@@ -1,15 +0,0 @@
module CLesson
use CLessonVariables
implicit none
public
contains
subroutine SetWellProfileApproach(path, survey)
!DEC$ ATTRIBUTES DLLEXPORT :: SetWellProfileApproach
!DEC$ ATTRIBUTES ALIAS: 'SetWellProfileApproach' :: SetWellProfileApproach
implicit none
logical, intent(in) :: path
logical, intent(in) :: survey
Lesson%IsPathGeneration = path
Lesson%IsWellSurveyData = survey
end subroutine
end module CLesson

+ 0
- 9
CSharp/Common/CLessonVariables.f90 View File

@@ -1,9 +0,0 @@
module CLessonVariables
implicit none
public
type:: LessonType
logical :: IsPathGeneration
logical :: IsWellSurveyData
end type LessonType
type(LessonType)::Lesson
end module CLessonVariables

+ 0
- 278
CSharp/DownHole/CDownHole.f90 View File

@@ -1,278 +0,0 @@
module CDownHole
use CDownHoleVariables
implicit none
public
!abstract interface
! subroutine ActionFluid(array)
! use CDownHoleVariables
! type(CFluid), intent(inout), target :: array
! end subroutine
!end interface
contains
subroutine AnnalusDrillMud
!DEC$ ATTRIBUTES DLLEXPORT::AnnalusDrillMud
!DEC$ ATTRIBUTES ALIAS: 'AnnalusDrillMud' :: AnnalusDrillMud
implicit none
DownHole%AnnDrillMud = .true.
end subroutine AnnalusDrillMud
subroutine AnnalusCirculateMud
!DEC$ ATTRIBUTES DLLEXPORT::AnnalusCirculateMud
!DEC$ ATTRIBUTES ALIAS: 'AnnalusCirculateMud' :: AnnalusCirculateMud
implicit none
DownHole%AnnCirculateMud = .true.
end subroutine AnnalusCirculateMud
!type(CFluid) function ActionFluid() !(array)
! !use CDownHoleVariables
! !integer, intent(in) :: count
! !type(CFluid), intent(inout), target :: array !(count)
! end function
integer function GetAnnalusFluidsCount()
!DEC$ ATTRIBUTES DLLEXPORT::GetAnnalusFluidsCount
!DEC$ ATTRIBUTES ALIAS: 'GetAnnalusFluidsCount' :: GetAnnalusFluidsCount
implicit none
GetAnnalusFluidsCount = size(DownHole%AnnalusFluids)
!GetAnnalusFluidsCount = AnnalusFluidsCount
end function GetAnnalusFluidsCount
subroutine GetAnnalusFluids(count, array)
!DEC$ ATTRIBUTES DLLEXPORT::GetAnnalusFluids
!DEC$ ATTRIBUTES ALIAS: 'GetAnnalusFluids' :: GetAnnalusFluids
implicit none
integer :: i
integer, intent(in) :: count
type(CFluid), intent(inout), target :: array(count)
type(CFluid), pointer :: item
if(.not.allocated(DownHole%AnnalusFluids)) return
do i = 1, count
item => array(i)
item%StartMd = DownHole%AnnalusFluids(i)%StartMd
item%EndMd = DownHole%AnnalusFluids(i)%EndMd
item%Density = DownHole%AnnalusFluids(i)%Density
item%MudType = DownHole%AnnalusFluids(i)%MudType
end do
end subroutine GetAnnalusFluids
integer function GetStringFluidsCount()
!DEC$ ATTRIBUTES DLLEXPORT::GetStringFluidsCount
!DEC$ ATTRIBUTES ALIAS: 'GetStringFluidsCount' :: GetStringFluidsCount
implicit none
!GetStringFluidsCount = StringFluidsCount
GetStringFluidsCount = size(DownHole%StringFluids)
end function GetStringFluidsCount
subroutine GetStringFluids(count, array)
!DEC$ ATTRIBUTES DLLEXPORT::GetStringFluids
!DEC$ ATTRIBUTES ALIAS: 'GetStringFluids' :: GetStringFluids
implicit none
integer :: i
integer, intent(in) :: count
type(CFluid), intent(inout), target :: array(count)
type(CFluid), pointer :: item
if(.not.allocated(DownHole%StringFluids)) return
do i = 1, count
item => array(i)
item%StartMd = DownHole%StringFluids(i)%StartMd
item%EndMd = DownHole%StringFluids(i)%EndMd
item%Density = DownHole%StringFluids(i)%Density
item%MudType = DownHole%StringFluids(i)%MudType
end do
end subroutine GetStringFluids
integer function GetStringCount()
!DEC$ ATTRIBUTES DLLEXPORT::GetStringCount
!DEC$ ATTRIBUTES ALIAS: 'GetStringCount' :: GetStringCount
implicit none
GetStringCount = DownHole%StringCount
!GetStringCount = 4
end function GetStringCount
subroutine GetString(count, array)
!DEC$ ATTRIBUTES DLLEXPORT::GetString
!DEC$ ATTRIBUTES ALIAS: 'GetString' :: GetString
implicit none
integer :: i
integer, intent(in) :: count
type(CStringComponent), intent(inout), target :: array(count)
type(CStringComponent), pointer :: item
!do i = 1, count
! item => array(i)
! item%Length = String(i)%Length
! item%TopDepth = String(i)%TopDepth
! item%DownDepth = String(i)%DownDepth
! item%Od = String(i)%Od
! item%Id = String(i)%Id
! item%ComponentType = String(i)%ComponentType
!end do
end subroutine GetString
subroutine GetDownhole()
!DEC$ ATTRIBUTES DLLEXPORT::GetDownhole
!DEC$ ATTRIBUTES ALIAS: 'GetDownhole' :: GetDownhole
implicit none
!BopElement
if(associated(BopElementsPtr)) call BopElementsPtr(DownHole%BopElements)
!Annalus
if(associated(AnnalusMudCountPtr)) call AnnalusMudCountPtr(DownHole%AnnalusFluidsCount)
if(associated(AnnalusMudArrayPtr)) call AnnalusMudArrayPtr(DownHole%AnnalusFluids)
!string
if(associated(StringMudCountPtr)) call StringMudCountPtr(DownHole%StringFluidsCount)
if(associated(StringMudArrayPtr)) call StringMudArrayPtr(DownHole%StringFluids)
!components
if(associated(StringComponentCountPtr)) call StringComponentCountPtr(DownHole%StringCount)
if(associated(StringComponentArrayPtr)) call StringComponentArrayPtr(DownHole%String)
end subroutine GetDownhole
real(8) function GetDrillPipePressureH()
!DEC$ ATTRIBUTES DLLEXPORT :: GetDrillPipePressureH
!DEC$ ATTRIBUTES ALIAS: 'GetDrillPipePressureH' :: GetDrillPipePressureH
use PressureDisplayVARIABLES
implicit none
GetDrillPipePressureH = DownHole%DrillPipePressure !real(PressureGauges(1), 8) !
end function
real(8) function GetCasingPressureH()
!DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressureH
!DEC$ ATTRIBUTES ALIAS: 'GetCasingPressureH' :: GetCasingPressureH
use FricPressDropVars
implicit none
!if (allocated(FinalFlowEl)) then
! if(size(FinalFlowEl) > 0) then
! CasingPressure = real(int(FinalFlowEl(AnnulusLastEl)%EndPress), 8) !CasingPressure
! endif
!endif
GetCasingPressureH = DownHole%CasingPressure
end function
real(8) function GetShoePressure()
!DEC$ ATTRIBUTES DLLEXPORT :: GetShoePressure
!DEC$ ATTRIBUTES ALIAS: 'GetShoePressure' :: GetShoePressure
use PressureDisplayVARIABLES
implicit none
GetShoePressure = DownHole%ShoePressure !real(PressureGauges(5), 8) !
end function

real(8) function GetBottomHolePressure()
!DEC$ ATTRIBUTES DLLEXPORT :: GetBottomHolePressure
!DEC$ ATTRIBUTES ALIAS: 'GetBottomHolePressure' :: GetBottomHolePressure
use PressureDisplayVARIABLES
implicit none
GetBottomHolePressure = DownHole%BottomHolePressure !real(PressureGauges(3), 8) !
end function
real(8) function GetFormationPressure()
!DEC$ ATTRIBUTES DLLEXPORT :: GetFormationPressure
!DEC$ ATTRIBUTES ALIAS: 'GetFormationPressure' :: GetFormationPressure
implicit none
GetFormationPressure = DownHole%FormationPressure
end function
real function GetInfluxRate()
!DEC$ ATTRIBUTES DLLEXPORT :: GetInfluxRate
!DEC$ ATTRIBUTES ALIAS: 'GetInfluxRate' :: GetInfluxRate
implicit none
GetInfluxRate = DownHole%InfluxRate
end function
real function GetKickVolume()
!DEC$ ATTRIBUTES DLLEXPORT :: GetKickVolume
!DEC$ ATTRIBUTES ALIAS: 'GetKickVolume' :: GetKickVolume
implicit none
!KickVolume = KickVolume + 1
GetKickVolume = DownHole%KickVolume
end function
real function GetSecondKickVolume()
!DEC$ ATTRIBUTES DLLEXPORT :: GetSecondKickVolume
!DEC$ ATTRIBUTES ALIAS: 'GetSecondKickVolume' :: GetSecondKickVolume
implicit none
!SecondKickVolume = SecondKickVolume + 1
GetSecondKickVolume = DownHole%SecondKickVolume
end function
real function GetPermeabilityExposedHeight()
!DEC$ ATTRIBUTES DLLEXPORT :: GetPermeabilityExposedHeight
!DEC$ ATTRIBUTES ALIAS: 'GetPermeabilityExposedHeight' :: GetPermeabilityExposedHeight
implicit none
GetPermeabilityExposedHeight = DownHole%PermeabilityExposedHeight
end function
real(8) function GetDensityH()
!DEC$ ATTRIBUTES DLLEXPORT :: GetDensityH
!DEC$ ATTRIBUTES ALIAS: 'GetDensityH' :: GetDensityH
implicit none
GetDensityH = DownHole%Density
end function
real(8) function GetPressureH()
!DEC$ ATTRIBUTES DLLEXPORT :: GetPressureH
!DEC$ ATTRIBUTES ALIAS: 'GetPressureH' :: GetPressureH
implicit none
GetPressureH = DownHole%Pressure
end function
real(8) function GetTemperatureH()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTemperatureH
!DEC$ ATTRIBUTES ALIAS: 'GetTemperatureH' :: GetTemperatureH
implicit none
GetTemperatureH = DownHole%Temperature
end function
real(8) function GetHeightH()
!DEC$ ATTRIBUTES DLLEXPORT :: GetHeightH
!DEC$ ATTRIBUTES ALIAS: 'GetHeightH' :: GetHeightH
implicit none
GetHeightH = DownHole%Height
end function
real(8) function GetVolumeH()
!DEC$ ATTRIBUTES DLLEXPORT :: GetVolumeH
!DEC$ ATTRIBUTES ALIAS: 'GetVolumeH' :: GetVolumeH
implicit none
GetVolumeH = DownHole%Volume
end function
end module CDownHole

+ 1
- 1
CSharp/DownHole/CDownHoleVariables.f90 View File

@@ -1,7 +1,7 @@
module CDownHoleVariables module CDownHoleVariables
use CDownHoleTypes use CDownHoleTypes
use CStringConfigurationVariables use CStringConfigurationVariables
use CDownHoleActions ! use CDownHoleActions
use CLog4 use CLog4
implicit none implicit none
public public


+ 2
- 15
Equipments/MudSystem/MudSystem.f90 View File

@@ -2221,29 +2221,16 @@ module MudSystemModule


if (StudentStation%PitGainLossZero) then if (StudentStation%PitGainLossZero) then
DrillingWatch%PitGainLose= 0.d0 !DrillWatch DrillingWatch%PitGainLose= 0.d0 !DrillWatch
MudSystem%RefrencePitVolume_DrillWatch= MudSystem%ActiveTankVolume/42. !(bbl) !DrillWatch MudSystem%RefrencePitVolume_DrillWatch= MudSystem%ActiveTankVolume/42. !(bbl) !DrillWatch
!********************************************* !*********************************************
DataDisplayConsole%PitGainLossGauge= 0. !MFF Indicator DataDisplayConsole%PitGainLossGauge= 0. !MFF Indicator
MudSystem%RefrencePitVolume= MudSystem%ActiveTankVolume/42. !(bbl) !MFF Indicator MudSystem%RefrencePitVolume= MudSystem%ActiveTankVolume/42. !(bbl) !MFF Indicator

endif endif
!!====================================================================== !!======================================================================
!! MUD FLOW-FILL INDICATOR !! MUD FLOW-FILL INDICATOR
!!====================================================================== !!======================================================================
IF (DataDisplayConsole%MFFIPowerSwitch==1 ) THEN !.and. IsPortable==.false.
IF (DataDisplayConsole%MFFIPowerSwitch==1 ) THEN !.and. IsPortable==.false.

!====================TotalStrokes Reset and Calculate====================== !====================TotalStrokes Reset and Calculate======================
if (DataDisplayConsole%MFFIResetTotalStrokes == 1) then if (DataDisplayConsole%MFFIResetTotalStrokes == 1) then
IF (DataDisplayConsole%MFFIPumpSelectorSwitch == 1) THEN IF (DataDisplayConsole%MFFIPumpSelectorSwitch == 1) THEN


+ 2
- 2
FluidFlow/Flow_Startup.f90 View File

@@ -1,5 +1,5 @@
SUBROUTINE FlowStartup SUBROUTINE FlowStartup
Use ConfigurationVariables
USE Fluid_Flow_Startup_Vars USE Fluid_Flow_Startup_Vars
USE CStringConfigurationVariables USE CStringConfigurationVariables
USE CMudPropertiesVariables USE CMudPropertiesVariables
@@ -68,7 +68,7 @@ SUBROUTINE FlowStartup
CasingPressure_DataDisplayMalF = 0 CasingPressure_DataDisplayMalF = 0
SoundSpeed = 1530.0 / Convfttom SoundSpeed = 1530.0 / Convfttom
PressureTimeStepDelay(1) = INT(2.0 * SUM(StringConfiguration%StringConfigurations(2:)%ComponentLength) / SoundSpeed / dt) PressureTimeStepDelay(1) = INT(2.0 * SUM(Configuration%StringConfiguration%StringConfigurations(2:)%ComponentLength) / SoundSpeed / dt)
PressureTimeStepDelay(2) = INT(PathGeneration%Items(SIZE(PathGeneration%Items))%MeasuredDepth / SoundSpeed / dt) PressureTimeStepDelay(2) = INT(PathGeneration%Items(SIZE(PathGeneration%Items))%MeasuredDepth / SoundSpeed / dt)
PressureTimeStepDelay(3) = INT(Shoe%ShoeDepth / SoundSpeed / dt) PressureTimeStepDelay(3) = INT(Shoe%ShoeDepth / SoundSpeed / dt)


+ 5
- 5
FluidFlow/Well_Pressure_Data_Transfer.f90 View File

@@ -13,7 +13,7 @@ SUBROUTINE WellPressureDataTransfer
!! frictional pressure drop calculated by subroutine Sub_Press_Drop_Calculator !! frictional pressure drop calculated by subroutine Sub_Press_Drop_Calculator
!! This subroutine includes hydrostatic pressure and later will include effect of corss-section area change !! This subroutine includes hydrostatic pressure and later will include effect of corss-section area change
!! which causes acceleration or decceleration of flow !! which causes acceleration or decceleration of flow
Use ConfigurationVariables
USE FricPressDropVars USE FricPressDropVars
use MudSystemModule use MudSystemModule
USE MudSystemVARIABLES USE MudSystemVARIABLES
@@ -43,11 +43,11 @@ SUBROUTINE WellPressureDataTransfer
!!!!!!!!!!!!!!!! bit is present !!!!!!!!!!!!!!!! bit is present
BitTrue = StringConfiguration%StringConfigurations(1)%ComponentType == Bit_ComponentType ! Bit_ComponentType = 0 BitTrue = Configuration%StringConfiguration%StringConfigurations(1)%ComponentType == Bit_ComponentType ! Bit_ComponentType = 0
BitCd = 0.98 BitCd = 0.98
BitNozzDia = 32.0 * StringConfiguration%BitDefinition%BitNozzleSize ! nozzle diameter in 1/32 in BitNozzDia = 32.0 * Configuration%StringConfiguration%BitDefinition%BitNozzleSize ! nozzle diameter in 1/32 in
BitNozzleArea = 7.6699E-4 * BitNozzDia**2 BitNozzleArea = 7.6699E-4 * BitNozzDia**2
BitNozzleNum = StringConfiguration%BitDefinition%BitNozzleNo - BitJetsPlugged * BitProblems%PlugJetsCount BitNozzleNum = Configuration%StringConfiguration%BitDefinition%BitNozzleNo - BitJetsPlugged * BitProblems%PlugJetsCount
BitTotNozzArea = BitNozzleNum * BitNozzleArea + 0.5 * BitJetsWashedOut * BitProblems%JetWashoutCount * BitNozzleArea BitTotNozzArea = BitNozzleNum * BitNozzleArea + 0.5 * BitJetsWashedOut * BitProblems%JetWashoutCount * BitNozzleArea
IF (BitNozzleNum == 0) THEN IF (BitNozzleNum == 0) THEN
BitTotallyPluged = .TRUE. BitTotallyPluged = .TRUE.
@@ -55,7 +55,7 @@ SUBROUTINE WellPressureDataTransfer
BitTotallyPluged = .FALSE. BitTotallyPluged = .FALSE.
END IF END IF
FloatValveIn = StringConfiguration%BitDefinition%FloatValve FloatValveIn = Configuration%StringConfiguration%BitDefinition%FloatValve
!FloatValveOpen = .TRUE. !FloatValveOpen = .TRUE.
!IF (JetWashoutCount > 0 .OR. PlugJetsCount > 0) THEN !IF (JetWashoutCount > 0 .OR. PlugJetsCount > 0) THEN
! WRITE (*,*) 'PlugJetsCount' , PlugJetsCount ! WRITE (*,*) 'PlugJetsCount' , PlugJetsCount


+ 7
- 6
FluidFlow/kick/Formation_Information.f90 View File

@@ -4,6 +4,7 @@ SUBROUTINE FormationInformationCalculator
Use TD_WellGeometry Use TD_WellGeometry
Use CReservoirVariables Use CReservoirVariables
Use CFormationVariables Use CFormationVariables
Use ConfigurationVariables
USE Fluid_Flow_Startup_Vars USE Fluid_Flow_Startup_Vars
USE CLog2 USE CLog2
USE CDownHoleVariables USE CDownHoleVariables
@@ -51,12 +52,12 @@ SUBROUTINE FormationInformationCalculator
!!===> Down Measured Depth of Formation !!===> Down Measured Depth of Formation
WellGeoTopTVD = 0. WellGeoTopTVD = 0.
Do i = 1 , TD_WellGeneral%WellIntervalsCount Do i = 1 , TD_WellGeneral%WellIntervalsCount
if ( (Reservoir%FormationTop + Formation%Formations(Reservoir%FormationNo)%Thickness)>=TD_WellGeo(i)%VerticalDepth ) then if ( (Reservoir%FormationTop + Configuration%Formation%Formations(Reservoir%FormationNo)%Thickness)>=TD_WellGeo(i)%VerticalDepth ) then
KickFormDownMD = KickFormDownMD + TD_WellGeo(i)%IntervalLength KickFormDownMD = KickFormDownMD + TD_WellGeo(i)%IntervalLength
WellGeoTopTVD = TD_WellGeo(i)%VerticalDepth WellGeoTopTVD = TD_WellGeo(i)%VerticalDepth
else if ( (Reservoir%FormationTop+Formation%Formations(Reservoir%FormationNo)%Thickness)<TD_WellGeo(i)%VerticalDepth ) then else if ( (Reservoir%FormationTop+Configuration%Formation%Formations(Reservoir%FormationNo)%Thickness)<TD_WellGeo(i)%VerticalDepth ) then
if ( TD_WellGeo(i)%HoleType==0 ) then if ( TD_WellGeo(i)%HoleType==0 ) then
KickFormDownMD = KickFormDownMD + (((Reservoir%FormationTop+Formation%Formations(Reservoir%FormationNo)%Thickness)-WellGeoTopTVD)& KickFormDownMD = KickFormDownMD + (((Reservoir%FormationTop+Configuration%Formation%Formations(Reservoir%FormationNo)%Thickness)-WellGeoTopTVD)&
/ cos(TD_WellGeo(i)%StartAngle)) / cos(TD_WellGeo(i)%StartAngle))
else else
KickFormDownMD = KickFormDownMD + (TD_WellGeo(i)%RCurvature & KickFormDownMD = KickFormDownMD + (TD_WellGeo(i)%RCurvature &
@@ -67,9 +68,9 @@ SUBROUTINE FormationInformationCalculator
End Do End Do
!!===> Determination of Formation Length for Kick Modeling !!===> Determination of Formation Length for Kick Modeling
if (TD_WellGeneral%WellTotalVerticalLength >= Reservoir%FormationTop .AND. TD_WellGeneral%WellTotalVerticalLength < (Reservoir%FormationTop+Formation%Formations(Reservoir%FormationNo)%Thickness)) then if (TD_WellGeneral%WellTotalVerticalLength >= Reservoir%FormationTop .AND. TD_WellGeneral%WellTotalVerticalLength < (Reservoir%FormationTop+Configuration%Formation%Formations(Reservoir%FormationNo)%Thickness)) then
KickFormLength = TD_WellGeneral%WellTotalLength - KickFormTopMD ![ft] KickFormLength = TD_WellGeneral%WellTotalLength - KickFormTopMD ![ft]
else if ( TD_WellGeneral%WellTotalVerticalLength >= (Reservoir%FormationTop + Formation%Formations(Reservoir%FormationNo)%Thickness) ) then else if ( TD_WellGeneral%WellTotalVerticalLength >= (Reservoir%FormationTop + Configuration%Formation%Formations(Reservoir%FormationNo)%Thickness) ) then
KickFormLength = KickFormDownMD - KickFormTopMD ![ft] KickFormLength = KickFormDownMD - KickFormTopMD ![ft]
else else
KickFormLength = 0. KickFormLength = 0.
@@ -82,7 +83,7 @@ SUBROUTINE FormationInformationCalculator
!==================================================== !====================================================
FormPermeability = Reservoir%FormationPermeability ! [mD] FormPermeability = Reservoir%FormationPermeability ! [mD]
FormPressure = TD_WellGeneral%WellTotalVerticalLength * Formation%Formations(Reservoir%FormationNo)%PorePressureGradient ![psia] FormPressure = TD_WellGeneral%WellTotalVerticalLength * Configuration%Formation%Formations(Reservoir%FormationNo)%PorePressureGradient ![psia]
DownHole%FormationPressure = INT(FormPressure) DownHole%FormationPressure = INT(FormPressure)
!CALL Log_2('FormPressure =' , FormPressure) !CALL Log_2('FormPressure =' , FormPressure)
!print*, 'Formations(FormationNo)%PorePressureGradient=', Formations(FormationNo)%PorePressureGradient !print*, 'Formations(FormationNo)%PorePressureGradient=', Formations(FormationNo)%PorePressureGradient


+ 2
- 2
Rop/Bit_Specification.f90 View File

@@ -3,7 +3,7 @@ subroutine Bit_Specification
use sROP_Other_Variables use sROP_Other_Variables
use sROP_Variables use sROP_Variables
use CStringConfigurationVariables use CStringConfigurationVariables
use ConfigurationVariables
implicit none implicit none
INTEGER :: io INTEGER :: io
@@ -17,7 +17,7 @@ subroutine Bit_Specification
ROP_Spec%BitClass = (StringConfiguration%BitDefinition%BitCodeHundreds*100)+(StringConfiguration%BitDefinition%BitCodeTens*10)+StringConfiguration%BitDefinition%BitCodeOnes ROP_Spec%BitClass = (Configuration%StringConfiguration%BitDefinition%BitCodeHundreds*100)+(Configuration%StringConfiguration%BitDefinition%BitCodeTens*10)+Configuration%StringConfiguration%BitDefinition%BitCodeOnes
rd = SNGL(ROP_Spec%BitClass)/10.d0 rd = SNGL(ROP_Spec%BitClass)/10.d0
ROP_Spec%BrCoef = ( (SNGL(ROP_Spec%BitClass)/10.d0)-(DINT(rd)) )*10.d0 ROP_Spec%BrCoef = ( (SNGL(ROP_Spec%BitClass)/10.d0)-(DINT(rd)) )*10.d0


+ 13
- 13
Rop/ROP_MainCalculation.f90 View File

@@ -1,5 +1,5 @@
subroutine ROP_MainCalculation subroutine ROP_MainCalculation
use ConfigurationVariables
use sROP_Other_Variables use sROP_Other_Variables
use sROP_Variables use sROP_Variables
use CStringConfigurationVariables use CStringConfigurationVariables
@@ -28,13 +28,13 @@ subroutine ROP_MainCalculation
!Real(8) :: ROP_Bit%SetROPGauge !Real(8) :: ROP_Bit%SetROPGauge
zero_ROPcount = 0 zero_ROPcount = 0
ROP_Bit%NoOfFormations = Formation%Count ROP_Bit%NoOfFormations = Configuration%Formation%Count
ROP_Bit%DrillingVerticalDepth = TD_WellGeneral%WellTotalVerticalLength ROP_Bit%DrillingVerticalDepth = TD_WellGeneral%WellTotalVerticalLength
!===> MaximumWellDepthExceeded Warning !===> MaximumWellDepthExceeded Warning
if ( ROP_Bit%DrillingVerticalDepth>=(Formation%Formations(Formation%Count)%Top+Formation%Formations(Formation%Count)%Thickness) ) then if ( ROP_Bit%DrillingVerticalDepth>=(Configuration%Formation%Formations(Configuration%Formation%Count)%Top+Configuration%Formation%Formations(Configuration%Formation%Count)%Thickness) ) then
ROP_Bit%RateOfPenetration = 0.0d0 ROP_Bit%RateOfPenetration = 0.0d0
Call Set_ROP(ROP_Bit%RateOfPenetration) Call Set_ROP(ROP_Bit%RateOfPenetration)
Call Activate_MaximumWellDepthExceeded() Call Activate_MaximumWellDepthExceeded()
@@ -48,7 +48,7 @@ subroutine ROP_MainCalculation
ROP_Spec%FormationNumber = ROP_Spec%FormationNumber ROP_Spec%FormationNumber = ROP_Spec%FormationNumber
else else
do i= 1,ROP_Bit%NoOfFormations do i= 1,ROP_Bit%NoOfFormations
ROP_Spec%FormationTopDepth = Formation%Formations(i)%Top ROP_Spec%FormationTopDepth = Configuration%Formation%Formations(i)%Top
if (ROP_Bit%DrillingVerticalDepth>=ROP_Spec%FormationTopDepth) then if (ROP_Bit%DrillingVerticalDepth>=ROP_Spec%FormationTopDepth) then
ROP_Spec%FormationNumber = i ROP_Spec%FormationNumber = i
end if end if
@@ -74,14 +74,14 @@ subroutine ROP_MainCalculation
! $$$$$**$$$$$**$$$$$**$$$$$**$$$$$** Variables Initialization: *$$$$$**$$$$$**$$$$$**$$$$$**$$$$$ ! $$$$$**$$$$$**$$$$$**$$$$$**$$$$$** Variables Initialization: *$$$$$**$$$$$**$$$$$**$$$$$**$$$$$
ROP_Spec%DiameterOfBit = StringConfiguration%BitDefinition%BitSize ! unit : [in.] (Typical Range: 3.0 to 30.0) ROP_Spec%DiameterOfBit = Configuration%StringConfiguration%BitDefinition%BitSize ! unit : [in.] (Typical Range: 3.0 to 30.0)
ROP_Spec%NumberOfBitNozzles = StringConfiguration%BitDefinition%BitNozzleNo ! (Typical Values: 1 to 10) ROP_Spec%NumberOfBitNozzles = Configuration%StringConfiguration%BitDefinition%BitNozzleNo ! (Typical Values: 1 to 10)
ROP_Spec%DiameterOfBitNozzle = StringConfiguration%BitDefinition%BitNozzleSize ! unit : [inch] *** basic input: [1/32 in.] (Typical Range: 8.0 to 32.0) ROP_Spec%DiameterOfBitNozzle = Configuration%StringConfiguration%BitDefinition%BitNozzleSize ! unit : [inch] *** basic input: [1/32 in.] (Typical Range: 8.0 to 32.0)
ROP_Spec%CriticalMudDensity = Formation%Formations(ROP_Spec%FormationNumber)%PorePressureGradient/.465d0*9.d0 ! ????????? delete ,unit : [ppg] or [lb/gal] (Typical Range: 0 to 10.0) ROP_Spec%CriticalMudDensity = Configuration%Formation%Formations(ROP_Spec%FormationNumber)%PorePressureGradient/.465d0*9.d0 ! ????????? delete ,unit : [ppg] or [lb/gal] (Typical Range: 0 to 10.0)
ROP_Bit%FormationMudDensity = Formation%Formations(ROP_Spec%FormationNumber)%PorePressureGradient/0.052d0 ROP_Bit%FormationMudDensity = Configuration%Formation%Formations(ROP_Spec%FormationNumber)%PorePressureGradient/0.052d0
ROP_Bit%BottomHolePressure = PressureGauges(3) !5200 [psi] ROP_Bit%BottomHolePressure = PressureGauges(3) !5200 [psi]
ROP_Bit%ECD = ROP_Bit%BottomHolePressure/(0.052*ROP_Bit%DrillingVerticalDepth) ROP_Bit%ECD = ROP_Bit%BottomHolePressure/(0.052*ROP_Bit%DrillingVerticalDepth)
ROP_Spec%CriticalWeightOnBit = (Formation%Formations(ROP_Spec%FormationNumber)%ThresholdWeight/5.d0)-(.06d0*(Formation%Formations(ROP_Spec%FormationNumber)%ThresholdWeight-10.d0)) ! unit : [klb/in] (Typical Range: 0 to 10 ----> 0.6 to 2) ROP_Spec%CriticalWeightOnBit = (Configuration%Formation%Formations(ROP_Spec%FormationNumber)%ThresholdWeight/5.d0)-(.06d0*(Configuration%Formation%Formations(ROP_Spec%FormationNumber)%ThresholdWeight-10.d0)) ! unit : [klb/in] (Typical Range: 0 to 10 ----> 0.6 to 2)
!IF (ALLOCATED(FlowEl)) THEN !IF (ALLOCATED(FlowEl)) THEN
! ROP_Bit%MudViscosity = FlowEl(NoHorizontalEl + NoStringEl)%mueff !13.5 [cP] ! ROP_Bit%MudViscosity = FlowEl(NoHorizontalEl + NoStringEl)%mueff !13.5 [cP]
ROP_Bit%MudDensity = MudSystem%BitMudDensity ! [ppg] ROP_Bit%MudDensity = MudSystem%BitMudDensity ! [ppg]
@@ -98,7 +98,7 @@ subroutine ROP_MainCalculation
! -----**-----**-----**-----**-----* ROP_bit%RateofPenetration Model Coefficients: *-----**-----**-----**-----**----- ! -----**-----**-----**-----**-----* ROP_bit%RateofPenetration Model Coefficients: *-----**-----**-----**-----**-----
ROP_Spec%a1 = log(Formation%Formations(ROP_Spec%FormationNumber)%Drillablity) ROP_Spec%a1 = log(Configuration%Formation%Formations(ROP_Spec%FormationNumber)%Drillablity)
ROP_Spec%a2 = 1.2799d-04 ROP_Spec%a2 = 1.2799d-04
ROP_Spec%a3 = 1.7952d-04 ROP_Spec%a3 = 1.7952d-04
ROP_Spec%a4 = 4.0656d-05 ROP_Spec%a4 = 4.0656d-05
@@ -107,7 +107,7 @@ subroutine ROP_MainCalculation
ROP_Spec%a7 = 2.1837d-01 ROP_Spec%a7 = 2.1837d-01
ROP_Spec%a8 = 4.4915d-01 ROP_Spec%a8 = 4.4915d-01
ROP_Spec%dt = 0.1d0 ![s] ROP_Spec%dt = 0.1d0 ![s]
ROP_Spec%TouH = Formation%Formations(ROP_Spec%FormationNumber)%Abrasiveness*3600.d0 ! [hr]--->[s] ( Typical Range: 1<Abrasiveness<100 ) ROP_Spec%TouH = Configuration%Formation%Formations(ROP_Spec%FormationNumber)%Abrasiveness*3600.d0 ! [hr]--->[s] ( Typical Range: 1<Abrasiveness<100 )
! -----**-----**-----**-----**--- End of ROP_bit%RateofPenetration Model Coefficients ---**-----**-----**-----**----- ! -----**-----**-----**-----**--- End of ROP_bit%RateofPenetration Model Coefficients ---**-----**-----**-----**-----
@@ -116,7 +116,7 @@ subroutine ROP_MainCalculation
! $$$$$**$$$$$**$$$$$**$$$$$**$$$$$** Main Calculations: *$$$$$**$$$$$**$$$$$**$$$$$**$$$$$ ! $$$$$**$$$$$**$$$$$**$$$$$**$$$$$** Main Calculations: *$$$$$**$$$$$**$$$$$**$$$$$**$$$$$
ROP_Spec%f1 = Formation%Formations(ROP_Spec%FormationNumber)%Drillablity ! 1<=Drillability<=100 [ft/h] ROP_Spec%f1 = Configuration%Formation%Formations(ROP_Spec%FormationNumber)%Drillablity ! 1<=Drillability<=100 [ft/h]
ROP_Spec%f2 = exp(2.303d0*ROP_Spec%a2*(10000.d0 - ROP_Bit%DrillingVerticalDepth)) ! First Compaction Vairable ROP_Spec%f2 = exp(2.303d0*ROP_Spec%a2*(10000.d0 - ROP_Bit%DrillingVerticalDepth)) ! First Compaction Vairable
ROP_Spec%f3 = exp(2.303d0*ROP_Spec%a3*(ROP_Bit%DrillingVerticalDepth**0.69d0)*(ROP_Bit%FormationMudDensity-9.d0)) ! Second Compaction Vairable ROP_Spec%f3 = exp(2.303d0*ROP_Spec%a3*(ROP_Bit%DrillingVerticalDepth**0.69d0)*(ROP_Bit%FormationMudDensity-9.d0)) ! Second Compaction Vairable


+ 0
- 1080
Simulation/CSimulation.f90
File diff suppressed because it is too large
View File


+ 0
- 146
Simulation/CSimulationThreads.f90 View File

@@ -1,146 +0,0 @@
module CSimulationThreads
use iso_c_binding
implicit none
public
! Thread Related Variables
integer(INT_PTR_KIND()), parameter :: ThreadSecurity = 0
integer(INT_PTR_KIND()), parameter :: ThreadStackSize = 0
integer(4) :: ApiResult
integer(4) :: WaitForStopMs = 500
!BopStack
integer(INT_PTR_KIND()) :: BopStackThreadHandle
integer(INT_PTR_KIND()) :: BopStackThreadId
integer(4) :: BopStackThreadParam = 0
!Pumps
integer(INT_PTR_KIND()) :: Pump1ThreadHandle
integer(INT_PTR_KIND()) :: Pump2ThreadHandle
integer(INT_PTR_KIND()) :: Pump3ThreadHandle
integer(INT_PTR_KIND()) :: Pump1ThreadId
integer(INT_PTR_KIND()) :: Pump2ThreadId
integer(INT_PTR_KIND()) :: Pump3ThreadId
integer(4) :: Pump1ThreadParam = 0
integer(4) :: Pump2ThreadParam = 0
integer(4) :: Pump3ThreadParam = 0
!ChokeControl
integer(INT_PTR_KIND()) :: ChokeControlThreadHandle
integer(INT_PTR_KIND()) :: ChokeControlThreadId
integer(4) :: ChokeControlThreadParam = 0
!Rop
integer(INT_PTR_KIND()) :: RopThreadHandle
integer(INT_PTR_KIND()) :: RopThreadId
integer(4) :: RopThreadParam = 0
!RotaryTable
integer(INT_PTR_KIND()) :: RotaryTableThreadHandle
integer(INT_PTR_KIND()) :: RotaryTableThreadId
integer(4) :: RotaryTableThreadParam = 0
!FluidFlow
integer(INT_PTR_KIND()) :: FluidFlowThreadHandle
integer(INT_PTR_KIND()) :: FluidFlowThreadId
integer(4) :: FluidFlowThreadParam = 0
!TorqueDrag
integer(INT_PTR_KIND()) :: TorqueDragThreadHandle
integer(INT_PTR_KIND()) :: TorqueDragThreadId
integer(4) :: TorqueDragThreadParam = 0
!TopDrive
integer(INT_PTR_KIND()) :: TopDriveThreadHandle
integer(INT_PTR_KIND()) :: TopDriveThreadId
integer(4) :: TopDriveThreadParam = 0
!Drawworks
integer(INT_PTR_KIND()) :: DrawworksThreadHandle
integer(INT_PTR_KIND()) :: DrawworksThreadId
integer(4) :: DrawworksThreadParam = 0
!Geo
integer(INT_PTR_KIND()) :: GeoThreadHandle
integer(INT_PTR_KIND()) :: GeoThreadId
integer(4) :: GeoThreadParam = 0
!MudFlowFillIndicator
integer(INT_PTR_KIND()) :: MudFlowFillIndicatorThreadHandle
integer(INT_PTR_KIND()) :: MudFlowFillIndicatorThreadId
integer(4) :: MudFlowFillIndicatorThreadParam = 0
!MudSystem
integer(INT_PTR_KIND()) :: MudSystemThreadHandle
integer(INT_PTR_KIND()) :: MudSystemThreadId
integer(4) :: MudSystemThreadParam = 0
!PipeRams1
integer(INT_PTR_KIND()) :: PipeRams1ThreadHandle
integer(INT_PTR_KIND()) :: PipeRams1ThreadId
integer(4) :: PipeRams1ThreadParam = 0
!PipeRams2
integer(INT_PTR_KIND()) :: PipeRams2ThreadHandle
integer(INT_PTR_KIND()) :: PipeRams2ThreadId
integer(4) :: PipeRams2ThreadParam = 0
!KillLine
integer(INT_PTR_KIND()) :: KillLineThreadHandle
integer(INT_PTR_KIND()) :: KillLineThreadId
integer(4) :: KillLineThreadParam = 0
!ChokeLine
integer(INT_PTR_KIND()) :: ChokeLineThreadHandle
integer(INT_PTR_KIND()) :: ChokeLineThreadId
integer(4) :: ChokeLineThreadParam = 0
!BlindRams
integer(INT_PTR_KIND()) :: BlindRamsThreadHandle
integer(INT_PTR_KIND()) :: BlindRamsThreadId
integer(4) :: BlindRamsThreadParam = 0
!Annular
integer(INT_PTR_KIND()) :: AnnularThreadHandle
integer(INT_PTR_KIND()) :: AnnularThreadId
integer(4) :: AnnularThreadParam = 0
!OperationScenarios
integer(INT_PTR_KIND()) :: OperationScenariosThreadHandle
integer(INT_PTR_KIND()) :: OperationScenariosThreadId
integer(4) :: OperationScenariosThreadParam = 0
!PathFinding
integer(INT_PTR_KIND()) :: PathFindingThreadHandle
integer(INT_PTR_KIND()) :: PathFindingThreadId
integer(4) :: PathFindingThreadParam = 0
! just for now
!Sample
integer(INT_PTR_KIND()) :: SampleThreadHandle
integer(INT_PTR_KIND()) :: SampleThreadId
integer(4) :: SampleThreadParam = 0
#ifdef disEnableSimulation
!Test
integer(INT_PTR_KIND()) :: TestThreadHandle
integer(INT_PTR_KIND()) :: TestThreadId
integer(4) :: TestThreadParam = 0
#endif
contains
end module CSimulationThreads

+ 0
- 1211
Simulation/CSimulationVariables.f90
File diff suppressed because it is too large
View File


+ 37
- 0
Simulation/ConfigurationVariables.f90 View File

@@ -0,0 +1,37 @@
module ConfigurationVariables
use CStringConfigurationVariables
use CFormationVariables
use CReservoirVariables
use CShoeVariables
use CAccumulatorVariables
use CBopStackVariables
use CHoistingVariables
use CPowerVariables
use CPumpsVariables
use CRigSizeVariables
use CCasingLinerChokeVariables
use CPathGenerationVariables
use CWellSurveyDataVariables
use CMudPropertiesVariables
type ConfigurationType
Type(StringConfigurationType)::StringConfiguration
Type(FormationType) :: Formation
Type(ReservoirType)::Reservoir
Type(ShoeType)::Shoe
Type(AccumulatorType)::Accumulator
Type(BopStackSpecificationType)::BopStackSpecification
Type(HoistingType)::Hoisting
Type(PowerType)::Power
Type(PumpSpecificationType)::PumpsSpecification
Type(RigSizeType)::RigSize
Type(CasingLinerChokeType)::CasingLinerChoke
Type(PathGenerationType)::PathGeneration
Type(WellSurveyDataType)::WellSurveyData
Type(MudPropertiesType)::MudProperties

end type ConfigurationType
type(ConfigurationType)::Configuration
contains
end module ConfigurationVariables

+ 3
- 6
SimulationCore2.vfproj View File

@@ -104,15 +104,11 @@
<File RelativePath=".\CSharp\Common\CCommon.f90"/> <File RelativePath=".\CSharp\Common\CCommon.f90"/>
<File RelativePath=".\CSharp\Common\CCommonVariables.f90"/> <File RelativePath=".\CSharp\Common\CCommonVariables.f90"/>
<File RelativePath=".\CSharp\Common\CIActionReference.f90"/> <File RelativePath=".\CSharp\Common\CIActionReference.f90"/>
<File RelativePath=".\CSharp\Common\CLesson.f90"/>
<File RelativePath=".\CSharp\Common\CLessonVariables.f90"/>
<File RelativePath=".\CSharp\Common\CQuery.f90"/> <File RelativePath=".\CSharp\Common\CQuery.f90"/>
<File RelativePath=".\CSharp\Common\CScaleRange.f90"/> <File RelativePath=".\CSharp\Common\CScaleRange.f90"/>
<File RelativePath=".\CSharp\Common\CTimer.f90"/> <File RelativePath=".\CSharp\Common\CTimer.f90"/>
<File RelativePath=".\CSharp\Common\CTimerLegacy.f90"/></Filter> <File RelativePath=".\CSharp\Common\CTimerLegacy.f90"/></Filter>
<Filter Name="DownHole"> <Filter Name="DownHole">
<File RelativePath=".\CSharp\DownHole\CDownHole.f90"/>
<File RelativePath=".\CSharp\DownHole\CDownHoleActions.f90"/>
<File RelativePath=".\CSharp\DownHole\CDownHoleTypes.f90"/> <File RelativePath=".\CSharp\DownHole\CDownHoleTypes.f90"/>
<File RelativePath=".\CSharp\DownHole\CDownHoleVariables.f90"/></Filter> <File RelativePath=".\CSharp\DownHole\CDownHoleVariables.f90"/></Filter>
<Filter Name="Equipments"> <Filter Name="Equipments">
@@ -339,8 +335,6 @@
<File RelativePath=".\FluidFlow\Well_Pressure_Data_Transfer.f90"/></Filter> <File RelativePath=".\FluidFlow\Well_Pressure_Data_Transfer.f90"/></Filter>
<Filter Name="Geo"> <Filter Name="Geo">
<File RelativePath=".\Geo\GeoMain.f90"/></Filter> <File RelativePath=".\Geo\GeoMain.f90"/></Filter>
<Filter Name="Simulation">
<File RelativePath=".\Simulation\CSounds.f90"/></Filter>
<Filter Name="Rop"> <Filter Name="Rop">
<File RelativePath=".\Rop\Bit_Specification.f90"/> <File RelativePath=".\Rop\Bit_Specification.f90"/>
<File RelativePath=".\Rop\JetImpactForce.f90"/> <File RelativePath=".\Rop\JetImpactForce.f90"/>
@@ -348,6 +342,9 @@
<File RelativePath=".\Rop\RopMain.f90"/> <File RelativePath=".\Rop\RopMain.f90"/>
<File RelativePath=".\Rop\sROP_Other_Variables.f90"/> <File RelativePath=".\Rop\sROP_Other_Variables.f90"/>
<File RelativePath=".\Rop\sROP_Variables.f90"/></Filter> <File RelativePath=".\Rop\sROP_Variables.f90"/></Filter>
<Filter Name="Simulation">
<File RelativePath=".\Simulation\ConfigurationVariables.f90"/>
<File RelativePath=".\Simulation\CSounds.f90"/></Filter>
<Filter Name="TorqueDrag"> <Filter Name="TorqueDrag">
<Filter Name="TD_DrillingSubs"> <Filter Name="TD_DrillingSubs">
<File RelativePath=".\TorqueDrag\TD_DrillingSubs\MeshGeneration_FluidModule.f90"/> <File RelativePath=".\TorqueDrag\TD_DrillingSubs\MeshGeneration_FluidModule.f90"/>


+ 17
- 17
TorqueDrag/TD_ReadDataSubroutines/TD_DrillStemReadData.f90 View File

@@ -1,11 +1,11 @@
subroutine TD_DrillStemReadData subroutine TD_DrillStemReadData
use ConfigurationVariables
Use CStringConfigurationVariables Use CStringConfigurationVariables
Use TD_DrillStemComponents Use TD_DrillStemComponents
Use TD_WellElements Use TD_WellElements
Use TD_WellGeometry Use TD_WellGeometry
Use TD_StringConnectionData Use TD_StringConnectionData
Use Drawworks_VARIABLES, only: Drawworks Use Drawworks_VARIABLES, only: Drawworks


implicit none implicit none
@@ -22,7 +22,7 @@ subroutine TD_DrillStemReadData
!==================================================== !====================================================
! Set Drill Stem Components Data ! Set Drill Stem Components Data
!==================================================== !====================================================
TD_String%StringConfigurationCount = StringConfiguration%StringConfigurationCount TD_String%StringConfigurationCount = Configuration%StringConfiguration%StringConfigurationCount
TD_String%DrillStemComponentsNumbs = 0 TD_String%DrillStemComponentsNumbs = 0
@@ -42,16 +42,16 @@ subroutine TD_DrillStemReadData
Do i=1, TD_String%StringConfigurationCount Do i=1, TD_String%StringConfigurationCount
TD_DrillStem(i)%ComponentType = StringConfiguration%StringConfigurations(i)%ComponentType TD_DrillStem(i)%ComponentType = Configuration%StringConfiguration%StringConfigurations(i)%ComponentType
TD_DrillStem(i)%Numbs = StringConfiguration%StringConfigurations(i)%NumberOfJoint TD_DrillStem(i)%Numbs = Configuration%StringConfiguration%StringConfigurations(i)%NumberOfJoint
TD_DrillStem(i)%Id = StringConfiguration%StringConfigurations(i)%NominalId/12.d0 ![ft] TD_DrillStem(i)%Id = Configuration%StringConfiguration%StringConfigurations(i)%NominalId/12.d0 ![ft]
TD_DrillStem(i)%Od = StringConfiguration%StringConfigurations(i)%NominalOd/12.d0 ![ft] TD_DrillStem(i)%Od = Configuration%StringConfiguration%StringConfigurations(i)%NominalOd/12.d0 ![ft]
TD_DrillStem(i)%Length = StringConfiguration%StringConfigurations(i)%LengthPerJoint ![ft] TD_DrillStem(i)%Length = Configuration%StringConfiguration%StringConfigurations(i)%LengthPerJoint ![ft]
TD_DrillStem(i)%WeightperLength = StringConfiguration%StringConfigurations(i)%WeightPerLength ![lb/ft] TD_DrillStem(i)%WeightperLength = Configuration%StringConfiguration%StringConfigurations(i)%WeightPerLength ![lb/ft]
TD_DrillStem(i)%TotalLength = StringConfiguration%StringConfigurations(i)%ComponentLength TD_DrillStem(i)%TotalLength = Configuration%StringConfiguration%StringConfigurations(i)%ComponentLength
TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength
TD_String%DrillStemComponentsNumbs = TD_String%DrillStemComponentsNumbs+StringConfiguration%StringConfigurations(i)%NumberOfJoint TD_String%DrillStemComponentsNumbs = TD_String%DrillStemComponentsNumbs+Configuration%StringConfiguration%StringConfigurations(i)%NumberOfJoint
!!=========> Set Separated Drill Stem Components Data !!=========> Set Separated Drill Stem Components Data
! TD_LastIndex = TD_LastIndex+StringConfigurations(i)%NumberOfJoint ! TD_LastIndex = TD_LastIndex+StringConfigurations(i)%NumberOfJoint
@@ -98,7 +98,7 @@ subroutine TD_DrillStemReadData
Do i=1, TD_String%StringConfigurationCount Do i=1, TD_String%StringConfigurationCount
TD_LastIndex = TD_LastIndex+StringConfiguration%StringConfigurations(i)%NumberOfJoint TD_LastIndex = TD_LastIndex+Configuration%StringConfiguration%StringConfigurations(i)%NumberOfJoint
TD_DrillStems(TD_FirstIndex:TD_LastIndex)%ComponentType = TD_DrillStem(i)%ComponentType TD_DrillStems(TD_FirstIndex:TD_LastIndex)%ComponentType = TD_DrillStem(i)%ComponentType
TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Id = TD_DrillStem(i)%Id TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Id = TD_DrillStem(i)%Id


+ 2
- 1
TorqueDrag/TD_ReadDataSubroutines/TD_WellElementsReadData.f90 View File

@@ -2,6 +2,7 @@ subroutine TD_WellElementsReadData
Use CCasingLinerChokeVariables Use CCasingLinerChokeVariables
use CStringConfigurationVariables use CStringConfigurationVariables
use ConfigurationVariables
Use TD_WellElements Use TD_WellElements
Use TD_WellGeometry Use TD_WellGeometry


@@ -121,7 +122,7 @@ subroutine TD_WellElementsReadData
TD_ROPHole(i)%TopDepth = TD_WellGeo(TD_WellGeneral%WellIntervalsCount)%TopDepth TD_ROPHole(i)%TopDepth = TD_WellGeo(TD_WellGeneral%WellIntervalsCount)%TopDepth
TD_ROPHole(i)%DownDepth = TD_WellGeo(TD_WellGeneral%WellIntervalsCount)%DownDepth TD_ROPHole(i)%DownDepth = TD_WellGeo(TD_WellGeneral%WellIntervalsCount)%DownDepth
TD_ROPHole(i)%Length = TD_WellGeo(TD_WellGeneral%WellIntervalsCount)%IntervalLength TD_ROPHole(i)%Length = TD_WellGeo(TD_WellGeneral%WellIntervalsCount)%IntervalLength
TD_ROPHole(i)%Id = StringConfiguration%BitDefinition%BitSize/12.d0 ! unit: [ft] TD_ROPHole(i)%Id = Configuration%StringConfiguration%BitDefinition%BitSize/12.d0 ! unit: [ft]
End Do End Do


||||||
x
 
000:0
Loading…
Cancel
Save