mahmood19227 1 vuosi sitten
vanhempi
commit
dee71ed0d6
16 muutettua tiedostoa jossa 3255 lisäystä ja 1846 poistoa
  1. +557
    -0
      .ipynb_checkpoints/helper-checkpoint.ipynb
  2. +28
    -0
      CSharp/BasicInputs/WellProfile/CPathGeneration.f90
  3. +129
    -87
      CSharp/Equipments/ControlPanels/CBopControlPanel.f90
  4. +188
    -161
      CSharp/Equipments/ControlPanels/CChokeControlPanel.f90
  5. +74
    -40
      CSharp/Equipments/ControlPanels/CChokeManifold.f90
  6. +249
    -152
      CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90
  7. +968
    -872
      CSharp/Equipments/ControlPanels/CDrillingConsole.f90
  8. +78
    -64
      CSharp/Equipments/ControlPanels/CHook.f90
  9. +237
    -206
      CSharp/Equipments/ControlPanels/CStandPipeManifold.f90
  10. +267
    -216
      CSharp/Equipments/ControlPanels/CTopDrivePanel.f90
  11. +41
    -43
      CSharp/Equipments/ControlPanels/CTopDrivePanelVariables.f90
  12. +61
    -0
      CSharp/Equipments/Tanks/CTanks.f90
  13. +8
    -0
      Simulator.f90
  14. +19
    -1
      Text1.txt
  15. +273
    -0
      UpgradeLog.htm
  16. +78
    -4
      helper.ipynb

+ 557
- 0
.ipynb_checkpoints/helper-checkpoint.ipynb Näytä tiedosto

@@ -0,0 +1,557 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[' real(8) :: AnnularRegulatorSetControl\\n',\n",
" ' real(8) :: AirMasterValve\\n',\n",
" ' real(8) :: ByePassValve\\n',\n",
" ' real(8) :: AnnularValve\\n',\n",
" ' real(8) :: UpperRamsValve\\n',\n",
" ' real(8) :: MiddleRamsValve\\n',\n",
" ' real(8) :: KillLineValve\\n',\n",
" ' real(8) :: ChokeLineValve\\n',\n",
" ' real(8) :: LowerRamsValve\\n',\n",
" ' real(8) :: ManifoldPressureGauge\\n',\n",
" ' real(8) :: AirSupplyPressureGauge\\n',\n",
" ' real(8) :: AccumulatorPressureGauge\\n',\n",
" ' real(8) :: AnnularPressureGauge\\n',\n",
" ' integer :: AnnularOpenLED\\n',\n",
" ' integer :: AnnularCloseLED\\n',\n",
" ' integer :: UpperRamsOpenLED\\n',\n",
" ' integer :: UpperRamsCloseLED\\n',\n",
" ' integer :: MiddleRamsOpenLED\\n',\n",
" ' integer :: MiddleRamsCloseLED\\n',\n",
" ' integer :: KillLineOpenLED\\n',\n",
" ' integer :: KillLineCloseLED\\n',\n",
" ' integer :: ChokeLineOpenLED\\n',\n",
" ' integer :: ChokeLineCloseLED\\n',\n",
" ' integer :: LowerRamsOpenLED\\n',\n",
" ' integer :: LowerRamsCloseLED\\n',\n",
" ' real(8) :: AnnularStatus\\n',\n",
" ' real(8) :: UpperRamsStatus\\n',\n",
" ' real(8) :: MiddleRamsStatus\\n',\n",
" ' real(8) :: LowerRamsStatus']"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lines"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"call json%add(p,\"TopDriveTdsPowerState\",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerState)\n",
"call json%add(p,\"TopDriveTorqueWrench\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrench)\n",
"call json%add(p,\"TopDriveDrillTorqueState\",data%Equipments%ControlPanel%CTopDrive%TopDriveDrillTorqueState)\n",
"call json%add(p,\"TopDriveLinkTiltState\",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltState)\n",
"call json%add(p,\"TopDriveIbop\",data%Equipments%ControlPanel%CTopDrive%TopDriveIbop)\n",
"call json%add(p,\"TopDriveTorqueLimitKnob\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitKnob)\n",
"call json%add(p,\"RpmKnob\",data%Equipments%ControlPanel%CTopDrive%RpmKnob)\n",
"call json%add(p,\"TopDriveOperationFaultLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveOperationFaultLed)\n",
"call json%add(p,\"TopDriveTdsPowerLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerLed)\n",
"call json%add(p,\"TopDriveTorqueWrenchLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrenchLed)\n",
"call json%add(p,\"TopDriveLinkTiltLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltLed)\n",
"call json%add(p,\"TopDriveIbopLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveIbopLed)\n",
"call json%add(p,\"TopDriveTorqueLimitGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitGauge)\n",
"call json%add(p,\"TopDriveTorqueGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueGauge)\n",
"call json%add(p,\"TopDriveRpmGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveRpmGauge)\n"
]
}
],
"source": [
"precode = \"\"\"call json%add(pform,\"\",data%Equipments%ControlPanel%CTopDrive%\"\"\"\n",
"input = open(\"Text1.txt\")\n",
"lines = input.readlines()\n",
"for line in lines:\n",
" name = line.split(\"::\")[-1].strip()\n",
" icoute = precode.index(\"\\\"\")+1\n",
" # name = line.split(\"%\")[-1][:-1]\n",
" # print(name)\n",
" newline = precode[:icoute]+name+precode[icoute:]+name+\")\"\n",
" print(newline)\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\tGeo/GeoMain.f90 \\\n",
"\n"
]
}
],
"source": [
"##Replace space with _ in filenames and list them for put them in makefile\n",
"import os\n",
"dir = 'Geo'\n",
"files = os.listdir(dir)\n",
"fstring = ''\n",
"for f in files:\n",
" if f.endswith('90'):\n",
" newf = f.replace(' ','_')\n",
" os.rename(os.path.join(dir,f),os.path.join(dir,newf))\n",
" if newf.lower().endswith('variables.f90'):\n",
" fstring = '\\t'+os.path.join(dir,newf).replace('\\\\','/') +' \\\\\\n' + fstring\n",
" else:\n",
" fstring = fstring + '\\t'+os.path.join(dir,newf).replace('\\\\','/') +' \\\\\\n'\n",
"\n",
"print(fstring)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Extract variable names from definition lines"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# %pwd\n",
"lines = input(\"Enter lines:\").split(\" \")\n",
"lines = [l.strip() for l in lines if len(l.strip())>0]\n",
"vars = []\n",
"for l in lines:\n",
" if '::' in l:\n",
" vars.append(l.split('::')[1].strip())"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import string\n",
"string.ascii_letters"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"var: AnnularRegulatorSetControl\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AirMasterValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: ByePassValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AnnularValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: UpperRamsValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: MiddleRamsValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: KillLineValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: ChokeLineValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: LowerRamsValve\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: ManifoldPressureGauge\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AirSupplyPressureGauge\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AccumulatorPressureGauge\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AnnularPressureGauge\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AnnularOpenLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AnnularCloseLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: UpperRamsOpenLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: UpperRamsCloseLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: MiddleRamsOpenLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: MiddleRamsCloseLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: KillLineOpenLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: KillLineCloseLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: ChokeLineOpenLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: ChokeLineCloseLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: LowerRamsOpenLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: LowerRamsCloseLED\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: AnnularStatus\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: UpperRamsStatus\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: MiddleRamsStatus\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n",
"var: LowerRamsStatus\n",
"file = .\\CSharp\\Equipments\\ControlPanels\\CBopControlPanelVariables.f90\n",
"Char before: \n",
"Char after: \n",
"\n"
]
}
],
"source": [
"import os\n",
"import sys\n",
"import re\n",
"dir = '.'\n",
"varNameChars = string.ascii_letters + '_'\n",
"log = open(os.path.join(dir,'ReplaceVars.log',),'a')\n",
"end=False\n",
"for dir,subdirs,files in os.walk(dir):\n",
" for filename in files:\n",
" if filename.lower().endswith('.f90'):\n",
" # print(filename)\n",
" file = open(os.path.join(dir,filename))\n",
" code = file.read()\n",
" for var in vars:\n",
" if var not in code:\n",
" continue\n",
" occurs = [m.start() for m in re.finditer(var, code)]\n",
" for occurance in occurs:\n",
" if code[occurs[0]-1] in varNameChars or code[occurs[0]+len(var)] in varNameChars:\n",
" continue\n",
" print(f\"var: {var}\")\n",
" print(f\"file = {os.path.join(dir,filename)}\")\n",
" print(f\"Char before: {code[occurs[0]-1]}\")\n",
" print(f\"Char after: {code[occurs[0]+len(var)]}\")\n",
" end = True\n",
" if end:\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"State\n",
"Hoisting\n",
"OperationScenario\n",
"notifications\n",
"permissions\n",
"unitySignals\n",
"StudentStation\n",
"BopStackInput\n",
"BopStackAcc\n",
"RamLine\n",
"AnnularComputational\n",
"Annular\n",
"PipeRam1\n",
"ShearRam\n",
"PipeRam2\n",
"ChokeLine\n",
"KillLine\n",
"Pumps\n",
"RAM\n",
"RAMS\n",
"Choke\n",
"AirDrivenPump\n",
"AirPumpLine\n",
"CHOOKE\n",
"Drawworks\n",
"MudSystem\n",
"MUD\n",
"PUMP\n",
"RTable\n",
"TDS\n",
"GasType(3)\n",
"PressureDisplay\n",
"ObservationPoint(:)\n",
"FricPressDrop\n",
"ROP_Spec\n",
"ROP_Bit\n",
"TDGeo\n",
"F_String(:)\n",
"F_Counts\n",
"F_Interval(:)\n",
"OD_Annulus(4)\n",
"TD_DrillStem\n",
"TD_DrillStems\n",
"TD_String\n",
"TD_Count\n",
"G_StringElement\n",
"TD_Vol\n",
"TD_General\n",
"TD_BOP\n",
"TD_BOPElement(4)\n",
"TD_StConn\n",
"TD_Load\n",
"TD_WellEl\n",
"TD_Casing\n",
"data%State%TD_Liner\n",
"TD_OpenHole\n",
"TD_ROPHole\n",
"TD_WellGeneral\n",
"TD_WellGeo(:)\n",
"EquipmentControl\n",
"BopControlPanel\n",
"ChokeControlPanel\n",
"ChokeManifold\n",
"DataDisplayConsole\n",
"DrillingConsole\n",
"Hook\n",
"StandPipeManifold\n",
"TopDrivePanel\n",
"DrillingWatch\n",
"Tank\n",
"Configuration\n",
"StringConfiguration\n",
"Formation\n",
"Reservoir\n",
"Shoe\n",
"Accumulator\n",
"BopStackSpecification\n",
"Hoisting\n",
"Power\n",
"PumpsSpecification\n",
"RigSize\n",
"CasingLinerChoke\n",
"PathGeneration\n",
"WellSurveyData\n",
"MudProperties\n",
"problems\n",
"BitProblems\n",
"BopProblems\n",
"ChokeProblems\n",
"DrillStemProblems\n",
"GaugesProblems\n",
"HoistingProblems\n",
"KickProblems\n",
"LostProblems\n",
"MudTreatmentProblems\n",
"OtherProblems\n",
"PumpProblems\n",
"RotaryProblems\n"
]
},
{
"ename": "IndexError",
"evalue": "list index out of range",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32mc:\\Projects\\VSIM\\SimulationCore2\\helper.ipynb Cell 6\u001b[0m in \u001b[0;36m<cell line: 3>\u001b[1;34m()\u001b[0m\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Projects/VSIM/SimulationCore2/helper.ipynb#W5sZmlsZQ%3D%3D?line=5'>6</a>\u001b[0m nsp\u001b[39m+\u001b[39m\u001b[39m=\u001b[39m\u001b[39m1\u001b[39m\n\u001b[0;32m <a href='vscode-notebook-cell:/c%3A/Projects/VSIM/SimulationCore2/helper.ipynb#W5sZmlsZQ%3D%3D?line=6'>7</a>\u001b[0m splits \u001b[39m=\u001b[39m line\u001b[39m.\u001b[39msplit(\u001b[39m\"\u001b[39m\u001b[39m::\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m----> <a href='vscode-notebook-cell:/c%3A/Projects/VSIM/SimulationCore2/helper.ipynb#W5sZmlsZQ%3D%3D?line=7'>8</a>\u001b[0m \u001b[39mprint\u001b[39m(splits[\u001b[39m1\u001b[39;49m]\u001b[39m.\u001b[39mstrip())\n",
"\u001b[1;31mIndexError\u001b[0m: list index out of range"
]
}
],
"source": [
"f = open(\"hier.txt\")\n",
"lines = f.readlines()\n",
"for line in lines[1:]:\n",
" nsp=0\n",
" while line[nsp]==' ':\n",
" nsp+=1\n",
" splits = line.split(\"::\")\n",
" print(splits[1].strip())"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'type SimulationDataType type(SimulationStateType)::State Type(HoistingType)::Hoisting type(OperationScenarioType)::OperationScenario type(NotificationType)::notifications type(PermissionsType):: permissions type(UnitySignalsType):: unitySignals type(StudentStationType)::StudentStation type(BopStackInputType)::BopStackInput type(BopStackAccType)::BopStackAcc type(RamLineType)::RamLine type(AnnularComputationalType)::AnnularComputational type(AnnularType)::Annular type(PipeRams1Type)::PipeRam1 type(ShearRamType)::ShearRam type(PipeRam2Type)::PipeRam2 type(ChokeLineType)::ChokeLine type(KillLineType)::KillLine type(PumpsType)::Pumps TYPE(BOP_TypeVars), DIMENSION(1:6) :: RAM TYPE(BOP_TypeVars2D) :: RAMS type(ChokeType)::Choke type(AirDrivenPumpType)::AirDrivenPump type(AirPumpLineType)::AirPumpLine TYPE(CHOKE_TypeVars), DIMENSION(1:2) :: CHOOKE TYPE(Drawworks_Var) :: Drawworks type(MudSystemType)::MudSystem TYPE(MUD_TypeVars), DIMENSION(1:10) :: MUD TYPE(Pump_Var), DIMENSION(1:3) :: PUMP TYPE(RTable_Var) :: RTable TYPE(TDS_Var) :: TDS TYPE(GasData) :: GasType(3) ! 1 = methane , 2 = Hydrogen sulfide , 3 = Carbon dioxid TYPE(PressureDisplayVARIABLESTYPE) :: PressureDisplay TYPE(ObservationAndGaugePointsInformations) , ALLOCATABLE :: ObservationPoint(:) TYPE(FricPressDropVarsTYPE) :: FricPressDrop TYPE(ROPSpecificationInfo) :: ROP_Spec TYPE(ROPInfo) :: ROP_Bit TYPE(Geo_Data) :: TDGeo TYPE(F_StringData) , Allocatable :: F_String(:) TYPE(F_IntervalsCountsData):: F_Counts TYPE(F_IntervalData) , Allocatable :: F_Interval(:) TYPE(OD_AnnulusData) :: OD_Annulus(4) TYPE(TD_DrillStemInfo), ALLOCATABLE, DIMENSION(:) :: TD_DrillStem TYPE(TD_SeparatedDrillStemInfo), ALLOCATABLE, DIMENSION(:) :: TD_DrillStems TYPE(TD_StringInfo) :: TD_String TYPE(TD_AddRemoveInfo) :: TD_Count TYPE(CStringComponents), ALLOCATABLE, DIMENSION(:) :: G_StringElement TYPE(TD_RemovedVolumeInfo) :: TD_Vol TYPE(TD_GeneralInfo) :: TD_General TYPE(TD_BOPInfo) :: TD_BOP TYPE(CBopElement) :: TD_BOPElement(4) TYPE(TD_StringconnectionInfo) :: TD_StConn TYPE(TD_LoadInfo) :: TD_Load TYPE(TD_WellElementsInfo) :: TD_WellEl TYPE(TD_CasingInfo), ALLOCATABLE, DIMENSION(:) :: TD_Casing TYPE(TD_LinerInfo), ALLOCATABLE, DIMENSION(:) :: data%State%TD_Liner TYPE(TD_OpenHoleInfo), ALLOCATABLE, DIMENSION(:) :: TD_OpenHole TYPE(TD_ROPHoleInfo), ALLOCATABLE, DIMENSION(:) :: TD_ROPHole TYPE(TD_WellGeneralInfo) :: TD_WellGeneral TYPE(TD_WellGeometryData), Allocatable :: TD_WellGeo(:) type(EquipmentControlType)::EquipmentControl type(BopControlPanelType) :: BopControlPanel Type(ChokeControlPanelType)::ChokeControlPanel Type(ChokeManifoldType)::ChokeManifold Type(DataDisplayConsoleType) :: DataDisplayConsole TYPE(DrillingConsoleType) :: DrillingConsole Type(HookType)::Hook type(StandPipeManifoldType)::StandPipeManifold Type(TopDrivePanelType)::TopDrivePanel Type(DrillingWatchType)::DrillingWatch Type(TankType)::Tank type(ConfigurationType)::Configuration 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 type(ProblemsType)::problems type(BitProblemsType)::BitProblems type(BopProblemsType)::BopProblems type(ChokeProblemsType)::ChokeProblems type(DrillStemProblemsType)::DrillStemProblems type(GaugesProblemsType)::GaugesProblems type(HoistingProblemsType):: HoistingProblems type(KickProblemsType)::KickProblems type(LostProblemsType)::LostProblems type(MudTreatmentProblemsType)::MudTreatmentProblems type(OtherProblemsType)::OtherProblems type(PumpProblemsType)::PumpProblems type(RotaryProblemsType)::RotaryProblems end type SimulationDataType'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"line"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for fn in modules:\n",
" f = open(fn)\n",
" lines = f.readlines()\n",
" module_filenames = {}\n",
" used_modules = []\n",
" mod_count = 0\n",
" for l in lines:\n",
" l = l.strip().lower()\n",
" if l.startswith('module ') and not l.startswith('module procedure '):\n",
" mod_name = l.split(' ')[1]\n",
" module_filenames[mod_name] = fn\n",
" mod_count +=1\n",
" if l.startswith('use'):\n",
" used_modules.append(l.split(' ')[1])\n",
" if mod_count !=1:\n",
" print(f\"{fn} has {mod_count} modules\")\n",
" module_filenames,used_modules"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.4"
},
"vscode": {
"interpreter": {
"hash": "1ef4a26de7183d96d6da1045a38581e0a15b2215d0c1b98c7b273c6e514c6c7e"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}

+ 28
- 0
CSharp/BasicInputs/WellProfile/CPathGeneration.f90 Näytä tiedosto

@@ -1,3 +1,4 @@
<<<<<<< HEAD
module CPathGeneration
use SimulationVariables !@
use json_module
@@ -42,4 +43,31 @@ module CPathGeneration
call json%add(parent,ppath)
end subroutine
=======
module CPathGeneration
use SimulationVariables !@
use json_module
implicit none
public
contains

subroutine PathGenerationToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p

! 1. create new node
call json%create_object(p,'Path')
! 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)

! 3. add new node to parent
call json%add(parent,p)
end subroutine

>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
end module CPathGeneration

+ 129
- 87
CSharp/Equipments/ControlPanels/CBopControlPanel.f90 Näytä tiedosto

@@ -1,87 +1,129 @@
module CBopControlPanel
! use CBopControlPanel
use SimulationVariables
implicit none
public
contains
! subroutine BopControlPanelToJson(parent)
! end subroutine
subroutine OpenAnnular()
use CManifolds
implicit none
call ChangeValve(52, .true.)
end subroutine
subroutine CloseAnnular()
use CManifolds
implicit none
call ChangeValve(52, .false.)
end subroutine
subroutine OpenUpperRams()
use CManifolds
implicit none
call ChangeValve(51, .true.)
end subroutine
subroutine CloseUpperRams()
use CManifolds
implicit none
call ChangeValve(51, .false.)
end subroutine
subroutine OpenMiddleRams()
use CManifolds
implicit none
call ToggleMiddleRams(.true.)
end subroutine
subroutine CloseMiddleRams()
use CManifolds
implicit none
call ToggleMiddleRams(.false.)
end subroutine
subroutine OpenKillLine()
use CManifolds
implicit none
call ChangeValve(46, .true.)
end subroutine
subroutine CloseKillLine()
use CManifolds
implicit none
call ChangeValve(46, .false.)
end subroutine
subroutine OpenChokeLine()
use CManifolds
implicit none
call ChangeValve(47, .true.)
!WRITE (*,*) ' valve 47 true '
end subroutine
subroutine CloseChokeLine()
use CManifolds
implicit none
call ChangeValve(47, .false.)
!WRITE (*,*) ' valve 47 false '
end subroutine
subroutine OpenLowerRams()
use CManifolds
implicit none
call ChangeValve(49, .true.)
!WRITE (*,*) ' valve 49 true '
end subroutine
subroutine CloseLowerRams()
use CManifolds
implicit none
call ChangeValve(49, .false.)
!WRITE (*,*) ' valve 49 false '
end subroutine
end module CBopControlPanel
module CBopControlPanel
! use CBopControlPanel
use SimulationVariables
implicit none
public
contains

subroutine CBopToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p

! 1. create new node
call json%create_object(p,'CBop')
call json%add(p,"AnnularRegulatorSetControl",data%Equipments%ContolPanel%CBop%AnnularRegulatorSetControl)
call json%add(p,"AirMasterValve",data%Equipments%ContolPanel%CBop%AirMasterValve)
call json%add(p,"ByePassValve",data%Equipments%ContolPanel%CBop%ByePassValve)
call json%add(p,"AnnularValve",data%Equipments%ContolPanel%CBop%AnnularValve)
call json%add(p,"UpperRamsValve",data%Equipments%ContolPanel%CBop%UpperRamsValve)
call json%add(p,"MiddleRamsValve",data%Equipments%ContolPanel%CBop%MiddleRamsValve)
call json%add(p,"KillLineValve",data%Equipments%ContolPanel%CBop%KillLineValve)
call json%add(p,"ChokeLineValve",data%Equipments%ContolPanel%CBop%ChokeLineValve)
call json%add(p,"LowerRamsValve",data%Equipments%ContolPanel%CBop%LowerRamsValve)
call json%add(p,"ManifoldPressureGauge",data%Equipments%ContolPanel%CBop%ManifoldPressureGauge)
call json%add(p,"AirSupplyPressureGauge",data%Equipments%ContolPanel%CBop%AirSupplyPressureGauge)
call json%add(p,"AccumulatorPressureGauge",data%Equipments%ContolPanel%CBop%AccumulatorPressureGauge)
call json%add(p,"AnnularPressureGauge",data%Equipments%ContolPanel%CBop%AnnularPressureGauge)
call json%add(p,"AnnularOpenLED",data%Equipments%ContolPanel%CBop%AnnularOpenLED)
call json%add(p,"AnnularCloseLED",data%Equipments%ContolPanel%CBop%AnnularCloseLED)
call json%add(p,"UpperRamsOpenLED",data%Equipments%ContolPanel%CBop%UpperRamsOpenLED)
call json%add(p,"UpperRamsCloseLED",data%Equipments%ContolPanel%CBop%UpperRamsCloseLED)
call json%add(p,"MiddleRamsOpenLED",data%Equipments%ContolPanel%CBop%MiddleRamsOpenLED)
call json%add(p,"MiddleRamsCloseLED",data%Equipments%ContolPanel%CBop%MiddleRamsCloseLED)
call json%add(p,"KillLineOpenLED",data%Equipments%ContolPanel%CBop%KillLineOpenLED)
call json%add(p,"KillLineCloseLED",data%Equipments%ContolPanel%CBop%KillLineCloseLED)
call json%add(p,"ChokeLineOpenLED",data%Equipments%ContolPanel%CBop%ChokeLineOpenLED)
call json%add(p,"ChokeLineCloseLED",data%Equipments%ContolPanel%CBop%ChokeLineCloseLED)
call json%add(p,"LowerRamsOpenLED",data%Equipments%ContolPanel%CBop%LowerRamsOpenLED)
call json%add(p,"LowerRamsCloseLED",data%Equipments%ContolPanel%CBop%LowerRamsCloseLED)
call json%add(p,"AnnularStatus",data%Equipments%ContolPanel%CBop%AnnularStatus)
call json%add(p,"UpperRamsStatus",data%Equipments%ContolPanel%CBop%UpperRamsStatus)
call json%add(p,"MiddleRamsStatus",data%Equipments%ContolPanel%CBop%MiddleRamsStatus)
call json%add(p,"LowerRamsStatus",data%Equipments%ContolPanel%CBop%LowerRamsStatus)

call json%add(parent,p)
end subroutine



subroutine OpenAnnular()
use CManifolds
implicit none
call ChangeValve(52, .true.)
end subroutine
subroutine CloseAnnular()
use CManifolds
implicit none
call ChangeValve(52, .false.)
end subroutine
subroutine OpenUpperRams()
use CManifolds
implicit none
call ChangeValve(51, .true.)
end subroutine
subroutine CloseUpperRams()
use CManifolds
implicit none
call ChangeValve(51, .false.)
end subroutine
subroutine OpenMiddleRams()
use CManifolds
implicit none
call ToggleMiddleRams(.true.)
end subroutine
subroutine CloseMiddleRams()
use CManifolds
implicit none
call ToggleMiddleRams(.false.)
end subroutine
subroutine OpenKillLine()
use CManifolds
implicit none
call ChangeValve(46, .true.)
end subroutine
subroutine CloseKillLine()
use CManifolds
implicit none
call ChangeValve(46, .false.)
end subroutine
subroutine OpenChokeLine()
use CManifolds
implicit none
call ChangeValve(47, .true.)
!WRITE (*,*) ' valve 47 true '
end subroutine
subroutine CloseChokeLine()
use CManifolds
implicit none
call ChangeValve(47, .false.)
!WRITE (*,*) ' valve 47 false '
end subroutine
subroutine OpenLowerRams()
use CManifolds
implicit none
call ChangeValve(49, .true.)
!WRITE (*,*) ' valve 49 true '
end subroutine
subroutine CloseLowerRams()
use CManifolds
implicit none
call ChangeValve(49, .false.)
!WRITE (*,*) ' valve 49 false '
end subroutine

end module CBopControlPanel

+ 188
- 161
CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 Näytä tiedosto

@@ -1,162 +1,189 @@
module CChokeControlPanel
use CChokeControlPanelVariables
use SimulationVariables
implicit none
public
contains
! Input routines
subroutine SetChokePanelPumpSelectorSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelPumpSelectorSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokePanelPumpSelectorSwitch' :: SetChokePanelPumpSelectorSwitch
implicit none
integer, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokePanelPumpSelectorSwitch = v
#ifdef deb
print*, 'ChokePanelPumpSelectorSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelPumpSelectorSwitch
#endif
end subroutine
subroutine SetChokePanelStrokeResetSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelStrokeResetSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokePanelStrokeResetSwitch' :: SetChokePanelStrokeResetSwitch
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokePanelStrokeResetSwitch = v
#ifdef deb
print*, 'ChokePanelStrokeResetSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelStrokeResetSwitch
#endif
end subroutine
subroutine SetChokeSelectorSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokeSelectorSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokeSelectorSwitch' :: SetChokeSelectorSwitch
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokeSelectorSwitch = v
#ifdef deb
print*, 'ChokeSelectorSwitch=', data%EquipmentControl%ChokeControlPanel%ChokeSelectorSwitch
#endif
end subroutine
subroutine SetChokeRateControlKnob(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokeRateControlKnob
!DEC$ ATTRIBUTES ALIAS: 'SetChokeRateControlKnob' :: SetChokeRateControlKnob
implicit none
real*8, intent(in) :: v
!character(8) :: date
!character(10) :: time
!character(5) :: zone
!integer,dimension(8) :: values
data%EquipmentControl%ChokeControlPanel%ChokeRateControlKnob = v
#ifdef deb
!call date_and_time(date,time,zone,values)
!!print '(a,2x,a,2x,a)', date, time, zone
!print '(8i5)', values
print*, 'ChokeRateControlKnob=', data%EquipmentControl%ChokeControlPanel%ChokeRateControlKnob
#endif
end subroutine
subroutine SetChokeControlLever(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokeControlLever
!DEC$ ATTRIBUTES ALIAS: 'SetChokeControlLever' :: SetChokeControlLever
implicit none
real*8, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokeControlLever = v
#ifdef deb
print*, 'ChokeControlLever=', data%EquipmentControl%ChokeControlPanel%ChokeControlLever
#endif
end subroutine
subroutine SetChokePanelRigAirSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelRigAirSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokePanelRigAirSwitch' :: SetChokePanelRigAirSwitch
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokePanelRigAirSwitch = v
#ifdef deb
print*, 'ChokePanelRigAirSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelRigAirSwitch
#endif
end subroutine
subroutine SetEnableAutoChoke(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetEnableAutoChoke
!DEC$ ATTRIBUTES ALIAS: 'SetEnableAutoChoke' :: SetEnableAutoChoke
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%EnableAutoChoke = v
#ifdef deb
print*, 'EnableAutoChoke=', data%EquipmentControl%ChokeControlPanel%EnableAutoChoke
#endif
end subroutine
! Output routines
real(8) function GetStandPipePressure()
!DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipePressure
!DEC$ ATTRIBUTES ALIAS: 'GetStandPipePressure' :: GetStandPipePressure
implicit none
GetStandPipePressure = data%EquipmentControl%ChokeControlPanel%StandPipePressure
end function
real(8) function GetCasingPressure()
!DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressure
!DEC$ ATTRIBUTES ALIAS: 'GetCasingPressure' :: GetCasingPressure
implicit none
GetCasingPressure = data%EquipmentControl%ChokeControlPanel%CasingPressure
end function
real(8) function GetChokePosition()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChokePosition
!DEC$ ATTRIBUTES ALIAS: 'GetChokePosition' :: GetChokePosition
implicit none
GetChokePosition = data%EquipmentControl%ChokeControlPanel%ChokePosition
end function
real(8) function GetChokePanelSPMCounter()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelSPMCounter
!DEC$ ATTRIBUTES ALIAS: 'GetChokePanelSPMCounter' :: GetChokePanelSPMCounter
implicit none
!GetChokePanelSPMCounter = 0
GetChokePanelSPMCounter = data%EquipmentControl%ChokeControlPanel%ChokePanelSPMCounter
end function
real(8) function GetChokePanelTotalStrokeCounter()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelTotalStrokeCounter
!DEC$ ATTRIBUTES ALIAS: 'GetChokePanelTotalStrokeCounter' :: GetChokePanelTotalStrokeCounter
implicit none
!GetChokePanelTotalStrokeCounter = 0
GetChokePanelTotalStrokeCounter = data%EquipmentControl%ChokeControlPanel%ChokePanelTotalStrokeCounter
end function
integer function GetChoke1LED()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChoke1LED
!DEC$ ATTRIBUTES ALIAS: 'GetChoke1LED' :: GetChoke1LED
implicit none
GetChoke1LED = data%EquipmentControl%ChokeControlPanel%Choke1LED
end function
integer function GetChoke2LED()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChoke2LED
!DEC$ ATTRIBUTES ALIAS: 'GetChoke2LED' :: GetChoke2LED
implicit none
GetChoke2LED = data%EquipmentControl%ChokeControlPanel%Choke2LED
end function
module CChokeControlPanel
use CChokeControlPanelVariables
use SimulationVariables
implicit none
public
contains

subroutine CChokeToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p

! 1. create new node
call json%create_object(p,'CChoke')
call json%add(p,"ChokePanelPumpSelectorSwitch",data%Equipments%ContolPanel%CChoke%ChokePanelPumpSelectorSwitch)
call json%add(p,"ChokePanelStrokeResetSwitch",data%Equipments%ContolPanel%CChoke%ChokePanelStrokeResetSwitch)
call json%add(p,"ChokeSelectorSwitch",data%Equipments%ContolPanel%CChoke%ChokeSelectorSwitch)
call json%add(p,"ChokeRateControlKnob",data%Equipments%ContolPanel%CChoke%ChokeRateControlKnob)
call json%add(p,"ChokeControlLever",data%Equipments%ContolPanel%CChoke%ChokeControlLever)
call json%add(p,"ChokePanelRigAirSwitch",data%Equipments%ContolPanel%CChoke%ChokePanelRigAirSwitch)
call json%add(p,"EnableAutoChoke",data%Equipments%ContolPanel%CChoke%EnableAutoChoke)
call json%add(p,"StandPipePressure",data%Equipments%ContolPanel%CChoke%StandPipePressure)
call json%add(p,"CasingPressure",data%Equipments%ContolPanel%CChoke%CasingPressure)
call json%add(p,"ChokePosition",data%Equipments%ContolPanel%CChoke%ChokePosition)
call json%add(p,"ChokePanelSPMCounter",data%Equipments%ContolPanel%CChoke%ChokePanelSPMCounter)
call json%add(p,"ChokePanelTotalStrokeCounter",data%Equipments%ContolPanel%CChoke%ChokePanelTotalStrokeCounter)
call json%add(p,"Choke1LED",data%Equipments%ContolPanel%CChoke%Choke1LED)
call json%add(p,"Choke2LED",data%Equipments%ContolPanel%CChoke%Choke2LED)


call json%add(parent,p)
end subroutine
! Input routines
subroutine SetChokePanelPumpSelectorSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelPumpSelectorSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokePanelPumpSelectorSwitch' :: SetChokePanelPumpSelectorSwitch
implicit none
integer, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokePanelPumpSelectorSwitch = v
#ifdef deb
print*, 'ChokePanelPumpSelectorSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelPumpSelectorSwitch
#endif
end subroutine

subroutine SetChokePanelStrokeResetSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelStrokeResetSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokePanelStrokeResetSwitch' :: SetChokePanelStrokeResetSwitch
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokePanelStrokeResetSwitch = v
#ifdef deb
print*, 'ChokePanelStrokeResetSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelStrokeResetSwitch
#endif
end subroutine

subroutine SetChokeSelectorSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokeSelectorSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokeSelectorSwitch' :: SetChokeSelectorSwitch
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokeSelectorSwitch = v
#ifdef deb
print*, 'ChokeSelectorSwitch=', data%EquipmentControl%ChokeControlPanel%ChokeSelectorSwitch
#endif
end subroutine

subroutine SetChokeRateControlKnob(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokeRateControlKnob
!DEC$ ATTRIBUTES ALIAS: 'SetChokeRateControlKnob' :: SetChokeRateControlKnob
implicit none
real*8, intent(in) :: v
!character(8) :: date
!character(10) :: time
!character(5) :: zone
!integer,dimension(8) :: values
data%EquipmentControl%ChokeControlPanel%ChokeRateControlKnob = v
#ifdef deb
!call date_and_time(date,time,zone,values)
!!print '(a,2x,a,2x,a)', date, time, zone
!print '(8i5)', values
print*, 'ChokeRateControlKnob=', data%EquipmentControl%ChokeControlPanel%ChokeRateControlKnob
#endif
end subroutine

subroutine SetChokeControlLever(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokeControlLever
!DEC$ ATTRIBUTES ALIAS: 'SetChokeControlLever' :: SetChokeControlLever
implicit none
real*8, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokeControlLever = v
#ifdef deb
print*, 'ChokeControlLever=', data%EquipmentControl%ChokeControlPanel%ChokeControlLever
#endif
end subroutine

subroutine SetChokePanelRigAirSwitch(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelRigAirSwitch
!DEC$ ATTRIBUTES ALIAS: 'SetChokePanelRigAirSwitch' :: SetChokePanelRigAirSwitch
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%ChokePanelRigAirSwitch = v
#ifdef deb
print*, 'ChokePanelRigAirSwitch=', data%EquipmentControl%ChokeControlPanel%ChokePanelRigAirSwitch
#endif
end subroutine


subroutine SetEnableAutoChoke(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetEnableAutoChoke
!DEC$ ATTRIBUTES ALIAS: 'SetEnableAutoChoke' :: SetEnableAutoChoke
implicit none
logical, intent(in) :: v
data%EquipmentControl%ChokeControlPanel%EnableAutoChoke = v
#ifdef deb
print*, 'EnableAutoChoke=', data%EquipmentControl%ChokeControlPanel%EnableAutoChoke
#endif
end subroutine
! Output routines
real(8) function GetStandPipePressure()
!DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipePressure
!DEC$ ATTRIBUTES ALIAS: 'GetStandPipePressure' :: GetStandPipePressure
implicit none
GetStandPipePressure = data%EquipmentControl%ChokeControlPanel%StandPipePressure
end function

real(8) function GetCasingPressure()
!DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressure
!DEC$ ATTRIBUTES ALIAS: 'GetCasingPressure' :: GetCasingPressure
implicit none
GetCasingPressure = data%EquipmentControl%ChokeControlPanel%CasingPressure
end function

real(8) function GetChokePosition()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChokePosition
!DEC$ ATTRIBUTES ALIAS: 'GetChokePosition' :: GetChokePosition
implicit none
GetChokePosition = data%EquipmentControl%ChokeControlPanel%ChokePosition
end function

real(8) function GetChokePanelSPMCounter()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelSPMCounter
!DEC$ ATTRIBUTES ALIAS: 'GetChokePanelSPMCounter' :: GetChokePanelSPMCounter
implicit none
!GetChokePanelSPMCounter = 0
GetChokePanelSPMCounter = data%EquipmentControl%ChokeControlPanel%ChokePanelSPMCounter
end function

real(8) function GetChokePanelTotalStrokeCounter()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelTotalStrokeCounter
!DEC$ ATTRIBUTES ALIAS: 'GetChokePanelTotalStrokeCounter' :: GetChokePanelTotalStrokeCounter
implicit none
!GetChokePanelTotalStrokeCounter = 0
GetChokePanelTotalStrokeCounter = data%EquipmentControl%ChokeControlPanel%ChokePanelTotalStrokeCounter
end function

integer function GetChoke1LED()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChoke1LED
!DEC$ ATTRIBUTES ALIAS: 'GetChoke1LED' :: GetChoke1LED
implicit none
GetChoke1LED = data%EquipmentControl%ChokeControlPanel%Choke1LED
end function

integer function GetChoke2LED()
!DEC$ ATTRIBUTES DLLEXPORT :: GetChoke2LED
!DEC$ ATTRIBUTES ALIAS: 'GetChoke2LED' :: GetChoke2LED
implicit none
GetChoke2LED = data%EquipmentControl%ChokeControlPanel%Choke2LED
end function


end module CChokeControlPanel

+ 74
- 40
CSharp/Equipments/ControlPanels/CChokeManifold.f90 Näytä tiedosto

@@ -1,41 +1,75 @@
module CChokeManifold
! use CChokeManifoldVariables
use SimulationVariables
use CManifolds
use CLog2
implicit none
public
contains
subroutine SetHydraulicChock1(v)
implicit none
integer, intent(in) :: v
data%EquipmentControl%ChokeManifold%HydraulicChock1 = v
if(data%EquipmentControl%ChokeManifold%HyChock1OnProblem) then
call ChangeValve(33, .true.)
else
if(v == 100) then
if(Manifold%Valve(33)%Status) call ChangeValve(33, .false.)
else
if(.not.Manifold%Valve(33)%Status) call ChangeValve(33, .true.)
endif
endif
!WRITE (*,*) ' valve 33 ', Valve(33)%Status, ' arg ', v
end subroutine
subroutine SetHydraulicChock2(v)
implicit none
integer, intent(in) :: v
data%EquipmentControl%ChokeManifold%HydraulicChock2 = v
if(data%EquipmentControl%ChokeManifold%HyChock2OnProblem) then
call ChangeValve(34, .true.)
else
if(v==100) then
if(Manifold%Valve(34)%Status) call ChangeValve(34, .false.)
else
if(.not.Manifold%Valve(34)%Status) call ChangeValve(34, .true.)
endif
endif
!WRITE (*,*) ' valve 34 ', Valve(34)%Status, ' arg ', v
end subroutine
module CChokeManifold
! use CChokeManifoldVariables
use SimulationVariables
use CManifolds
use CLog2
implicit none
public
contains

subroutine CChokeManifoldToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p

! 1. create new node
call json%create_object(p,'CChokeManifold')
call json%add(p,"ChokeManifoldValve1",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve1)
call json%add(p,"ChokeManifoldValve2",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve2)
call json%add(p,"LeftManualChoke",data%Equipments%ContolPanel%CChokeManifold%LeftManualChoke)
call json%add(p,"ChokeManifoldValve4",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve4)
call json%add(p,"ChokeManifoldValve5",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve5)
call json%add(p,"RightManualChoke",data%Equipments%ContolPanel%CChokeManifold%RightManualChoke)
call json%add(p,"ChokeManifoldValve7",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve7)
call json%add(p,"ChokeManifoldValve8",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve8)
call json%add(p,"ChokeManifoldValve9",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve9)
call json%add(p,"ChokeManifoldValve10",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve10)
call json%add(p,"ChokeManifoldValve11",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve11)
call json%add(p,"ChokeManifoldValve12",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve12)
call json%add(p,"ChokeManifoldValve13",data%Equipments%ContolPanel%CChokeManifold%ChokeManifoldValve13)
call json%add(p,"HydraulicChock1",data%Equipments%ContolPanel%CChokeManifold%HydraulicChock1)
call json%add(p,"HydraulicChock2",data%Equipments%ContolPanel%CChokeManifold%HydraulicChock2)
call json%add(p,"HyChock1OnProblem",data%Equipments%ContolPanel%CChokeManifold%HyChock1OnProblem)
call json%add(p,"HyChock2OnProblem",data%Equipments%ContolPanel%CChokeManifold%HyChock2OnProblem)
call json%add(p,"LeftManChokeOnProblem",data%Equipments%ContolPanel%CChokeManifold%LeftManChokeOnProblem)
call json%add(p,"RightManChokeOnProblem",data%Equipments%ContolPanel%CChokeManifold%RightManChokeOnProblem)


call json%add(parent,p)
end subroutine

subroutine SetHydraulicChock1(v)
implicit none
integer, intent(in) :: v
data%EquipmentControl%ChokeManifold%HydraulicChock1 = v
if(data%EquipmentControl%ChokeManifold%HyChock1OnProblem) then
call ChangeValve(33, .true.)
else
if(v == 100) then
if(Manifold%Valve(33)%Status) call ChangeValve(33, .false.)
else
if(.not.Manifold%Valve(33)%Status) call ChangeValve(33, .true.)
endif
endif
!WRITE (*,*) ' valve 33 ', Valve(33)%Status, ' arg ', v
end subroutine

subroutine SetHydraulicChock2(v)
implicit none
integer, intent(in) :: v
data%EquipmentControl%ChokeManifold%HydraulicChock2 = v
if(data%EquipmentControl%ChokeManifold%HyChock2OnProblem) then
call ChangeValve(34, .true.)
else
if(v==100) then
if(Manifold%Valve(34)%Status) call ChangeValve(34, .false.)
else
if(.not.Manifold%Valve(34)%Status) call ChangeValve(34, .true.)
endif
endif
!WRITE (*,*) ' valve 34 ', Valve(34)%Status, ' arg ', v
end subroutine
end module CChokeManifold

+ 249
- 152
CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 Näytä tiedosto

@@ -1,153 +1,250 @@
module CDataDisplayConsole
! use CDataDisplayConsole
use SimulationVariables
implicit none
public
contains
subroutine Set_TotalDepth(v)
use SimulationVariables !@!!, only: data%EquipmentControl%DrillingWatch%Depth
! use CSimulationVariables, only: SetDistanceDrilled
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%TotalWellDepth = v
data%EquipmentControl%DrillingWatch%Depth = v
! call SetDistanceDrilled(v)
end subroutine
subroutine Set_BitPosition(v)
use SimulationVariables !@!!, only: data%EquipmentControl%DrillingWatch%BitPosition
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%BitDepth = v
data%EquipmentControl%DrillingWatch%BitPosition = v
end subroutine
subroutine Set_RotaryTorque(v)
use SimulationVariables !@!!, only: data%EquipmentControl%DrillingWatch%Torque
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%RotaryTorqueGauge = v
data%EquipmentControl%DrillingWatch%Torque = v
data%EquipmentControl%DataDisplayConsole%RTTorque = v
end subroutine
subroutine Set_MudWeightIn(v)
use SimulationVariables !@!, only: MudWeightInDw => data%EquipmentControl%DataDisplayConsole%MudWeightIn
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MudWeightIn = v
data%EquipmentControl%DrillingWatch%MudWeightIn = v
end subroutine
subroutine Set_MudWeightOut(v)
use SimulationVariables !@!, only: MudWeightOutDw => data%EquipmentControl%DataDisplayConsole%MudWeightOut
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MudWeightOut = v
data%EquipmentControl%DrillingWatch%MudWeightOut = v
end subroutine
subroutine Set_TripTankVolume(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%TripTankVolume
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DrillingWatch%TripTankVolume = v
end subroutine
subroutine Set_FillVolume(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%FillVolume
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DrillingWatch%FillVolume = v
end subroutine
subroutine Set_HookLoad(v)
use SimulationVariables !@!, only: HookLoadDw => data%EquipmentControl%DataDisplayConsole%HookLoad
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%HookLoadPointer = v
data%EquipmentControl%DrillingWatch%HookLoad = v * 1000
data%EquipmentControl%DataDisplayConsole%HookLoad = v
end subroutine
subroutine Set_WeightOnBit(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%WeightOnBit
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%WOBPointer = v
data%EquipmentControl%DrillingWatch%WeightOnBit = v
data%EquipmentControl%DataDisplayConsole%WOP = v
end subroutine
subroutine Set_ROP(v)
use SimulationVariables !@!, only: ROPDw => data%EquipmentControl%DataDisplayConsole%ROP
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%ROP = v
data%EquipmentControl%DrillingWatch%ROP = v
end subroutine
subroutine Set_CasingPressure(v)
use SimulationVariables !@!, only: CasingPressureDw => CasingPressure
use CChokeControlPanelVariables
use SimulationVariables!, only: CasingPressureChoke => CasingPressure
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%CasingPressureGauge = v
data%EquipmentControl%DrillingWatch%CasingPressure = v
data%EquipmentControl%ChokeControlPanel%CasingPressure = v
data%EquipmentControl%DataDisplayConsole%CasingPressure = v
end subroutine
subroutine Set_StandPipePressure(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%PumpPressure
use CChokeControlPanelVariables
use SimulationVariables!, only: StandPipePressureChoke => data%EquipmentControl%DataDisplayConsole%StandPipePressure
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%StandPipePressureGauge = v
data%EquipmentControl%DrillingWatch%PumpPressure = v
data%EquipmentControl%ChokeControlPanel%StandPipePressure = v
data%EquipmentControl%DataDisplayConsole%StandPipePressure = v
end subroutine
subroutine Set_RotaryRPMGauge(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%RPM
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%RotaryRPMGauge = v
data%EquipmentControl%DrillingWatch%RPM = v
data%EquipmentControl%DataDisplayConsole%RTRPM = v
! call data%EquipmentControl%DataDisplayConsole%OnRotaryRpmChange%RunAll(v)
end subroutine
subroutine Set_MP1SPMGauge(v)
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MP1SPMGauge = v
data%EquipmentControl%DataDisplayConsole%MP1SPM = v
!@data%State%unitySignals%(PumpsSpmChanges)) call PumpsSpmChanges(data%EquipmentControl%DataDisplayConsole%MP1SPMGauge, data%EquipmentControl%DataDisplayConsole%MP2SPMGauge)
#ifdef deb
print*, 'MP1SPMGauge=', data%EquipmentControl%DataDisplayConsole%MP1SPMGauge
#endif
end subroutine
subroutine Set_MP2SPMGauge(v)
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MP2SPMGauge = v
data%EquipmentControl%DataDisplayConsole%MP2SPM = v
!@data%State%unitySignals%(PumpsSpmChanges)) call PumpsSpmChanges(data%EquipmentControl%DataDisplayConsole%MP1SPMGauge, data%EquipmentControl%DataDisplayConsole%MP2SPMGauge)
#ifdef deb
print*, 'MP2SPMGauge=', data%EquipmentControl%DataDisplayConsole%MP2SPMGauge
#endif
end subroutine
module CDataDisplayConsole
! use CDataDisplayConsole
use SimulationVariables
implicit none
public
contains

subroutine CDataDisplayToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p

! 1. create new node
call json%create_object(p,'CDataDisplay')
call json%add(p,"TripAlarmLow",data%Equipments%ControlPanel%CDataDisplay%TripAlarmLow)
call json%add(p,"TripAlarmHigh",data%Equipments%ControlPanel%CDataDisplay%TripAlarmHigh)
call json%add(p,"RetFlowAlarmLow",data%Equipments%ControlPanel%CDataDisplay%RetFlowAlarmLow)
call json%add(p,"RetFlowAlarmHigh",data%Equipments%ControlPanel%CDataDisplay%RetFlowAlarmHigh)
call json%add(p,"PitAlarmLow",data%Equipments%ControlPanel%CDataDisplay%PitAlarmLow)
call json%add(p,"PitAlarmHigh",data%Equipments%ControlPanel%CDataDisplay%PitAlarmHigh)
call json%add(p,"PortWeightOnBit",data%Equipments%ControlPanel%CDataDisplay%PortWeightOnBit)
call json%add(p,"PortHookLoad",data%Equipments%ControlPanel%CDataDisplay%PortHookLoad)
call json%add(p,"PortCasingPressure",data%Equipments%ControlPanel%CDataDisplay%PortCasingPressure)
call json%add(p,"PortPumpPressure",data%Equipments%ControlPanel%CDataDisplay%PortPumpPressure)
call json%add(p,"TripTankSetAlarmLow",data%Equipments%ControlPanel%CDataDisplay%TripTankSetAlarmLow)
call json%add(p,"TripTankSetAlarmHigh",data%Equipments%ControlPanel%CDataDisplay%TripTankSetAlarmHigh)
call json%add(p,"TripTankSetAlarmSwitch",data%Equipments%ControlPanel%CDataDisplay%TripTankSetAlarmSwitch)
call json%add(p,"TripTankPowerSwitch",data%Equipments%ControlPanel%CDataDisplay%TripTankPowerSwitch)
call json%add(p,"TripTankPumpSwitch",data%Equipments%ControlPanel%CDataDisplay%TripTankPumpSwitch)
call json%add(p,"TripTankHornSwitch",data%Equipments%ControlPanel%CDataDisplay%TripTankHornSwitch)
call json%add(p,"AcidGasDetectionHornSwitch",data%Equipments%ControlPanel%CDataDisplay%AcidGasDetectionHornSwitch)
call json%add(p,"TotalStrokeCounterResetSwitch",data%Equipments%ControlPanel%CDataDisplay%TotalStrokeCounterResetSwitch)
call json%add(p,"DrillingTrippingSelectorSwitch",data%Equipments%ControlPanel%CDataDisplay%DrillingTrippingSelectorSwitch)
call json%add(p,"MVTSetAlarmLowKnob",data%Equipments%ControlPanel%CDataDisplay%MVTSetAlarmLowKnob)
call json%add(p,"MVTSetAlarmHighKnob",data%Equipments%ControlPanel%CDataDisplay%MVTSetAlarmHighKnob)
call json%add(p,"MVTSetAlarmSwitch",data%Equipments%ControlPanel%CDataDisplay%MVTSetAlarmSwitch)
call json%add(p,"MudTank1Switch",data%Equipments%ControlPanel%CDataDisplay%MudTank1Switch)
call json%add(p,"MudTank2Switch",data%Equipments%ControlPanel%CDataDisplay%MudTank2Switch)
call json%add(p,"MudTank3Switch",data%Equipments%ControlPanel%CDataDisplay%MudTank3Switch)
call json%add(p,"MudTank4Switch",data%Equipments%ControlPanel%CDataDisplay%MudTank4Switch)
call json%add(p,"MVTFineKnob",data%Equipments%ControlPanel%CDataDisplay%MVTFineKnob)
call json%add(p,"MVTCoarseKnob",data%Equipments%ControlPanel%CDataDisplay%MVTCoarseKnob)
call json%add(p,"MVTHornSwitch",data%Equipments%ControlPanel%CDataDisplay%MVTHornSwitch)
call json%add(p,"MVTDeviationTripSelectionSwitch",data%Equipments%ControlPanel%CDataDisplay%MVTDeviationTripSelectionSwitch)
call json%add(p,"MVTPowerSwitch",data%Equipments%ControlPanel%CDataDisplay%MVTPowerSwitch)
call json%add(p,"MFFIResetTotalStrokes",data%Equipments%ControlPanel%CDataDisplay%MFFIResetTotalStrokes)
call json%add(p,"MFFIResetFillCounter",data%Equipments%ControlPanel%CDataDisplay%MFFIResetFillCounter)
call json%add(p,"MFFIPumpSelectorSwitch",data%Equipments%ControlPanel%CDataDisplay%MFFIPumpSelectorSwitch)
call json%add(p,"MFFIFillSPMSelectorSwitch",data%Equipments%ControlPanel%CDataDisplay%MFFIFillSPMSelectorSwitch)
call json%add(p,"MFFISetAlarmLowKnob",data%Equipments%ControlPanel%CDataDisplay%MFFISetAlarmLowKnob)
call json%add(p,"MFFISetAlarmHighKnob",data%Equipments%ControlPanel%CDataDisplay%MFFISetAlarmHighKnob)
call json%add(p,"MFFISetAlarmSwitch",data%Equipments%ControlPanel%CDataDisplay%MFFISetAlarmSwitch)
call json%add(p,"MFFIPowerSwitch",data%Equipments%ControlPanel%CDataDisplay%MFFIPowerSwitch)
call json%add(p,"MFFIHornSwitch",data%Equipments%ControlPanel%CDataDisplay%MFFIHornSwitch)
call json%add(p,"ResetWob",data%Equipments%ControlPanel%CDataDisplay%ResetWob)
call json%add(p,"Clutch",data%Equipments%ControlPanel%CDataDisplay%Clutch)
call json%add(p,"WOBPointer",data%Equipments%ControlPanel%CDataDisplay%WOBPointer)
call json%add(p,"HookLoadPointer",data%Equipments%ControlPanel%CDataDisplay%HookLoadPointer)
call json%add(p,"TripTankGauge",data%Equipments%ControlPanel%CDataDisplay%TripTankGauge)
call json%add(p,"TripTankAlarmLED",data%Equipments%ControlPanel%CDataDisplay%TripTankAlarmLED)
call json%add(p,"TripTankPumpLED",data%Equipments%ControlPanel%CDataDisplay%TripTankPumpLED)
call json%add(p,"StandPipePressureGauge",data%Equipments%ControlPanel%CDataDisplay%StandPipePressureGauge)
call json%add(p,"CasingPressureGauge",data%Equipments%ControlPanel%CDataDisplay%CasingPressureGauge)
call json%add(p,"MP1SPMGauge",data%Equipments%ControlPanel%CDataDisplay%MP1SPMGauge)
call json%add(p,"MP2SPMGauge",data%Equipments%ControlPanel%CDataDisplay%MP2SPMGauge)
call json%add(p,"ReturnLineTempGauge",data%Equipments%ControlPanel%CDataDisplay%ReturnLineTempGauge)
call json%add(p,"RotaryTorqueGauge",data%Equipments%ControlPanel%CDataDisplay%RotaryTorqueGauge)
call json%add(p,"RotaryRPMGauge",data%Equipments%ControlPanel%CDataDisplay%RotaryRPMGauge)
call json%add(p,"AcidGasDetectionLED",data%Equipments%ControlPanel%CDataDisplay%AcidGasDetectionLED)
call json%add(p,"TotalStrokeCounter",data%Equipments%ControlPanel%CDataDisplay%TotalStrokeCounter)
call json%add(p,"TotalStrokeCounter_temp",data%Equipments%ControlPanel%CDataDisplay%TotalStrokeCounter_temp)
call json%add(p,"PitGainLossGauge",data%Equipments%ControlPanel%CDataDisplay%PitGainLossGauge)
call json%add(p,"MudTanksVolumeGauge",data%Equipments%ControlPanel%CDataDisplay%MudTanksVolumeGauge)
call json%add(p,"MVTAlarmLED",data%Equipments%ControlPanel%CDataDisplay%MVTAlarmLED)
call json%add(p,"ReturnMudFlowGauge",data%Equipments%ControlPanel%CDataDisplay%ReturnMudFlowGauge)
call json%add(p,"FillStrokeCounter",data%Equipments%ControlPanel%CDataDisplay%FillStrokeCounter)
call json%add(p,"MFFITotalStrokeCounter",data%Equipments%ControlPanel%CDataDisplay%MFFITotalStrokeCounter)
call json%add(p,"MFFIAlarmLED",data%Equipments%ControlPanel%CDataDisplay%MFFIAlarmLED)
call json%add(p,"MFFIPumpLED",data%Equipments%ControlPanel%CDataDisplay%MFFIPumpLED)
call json%add(p,"TotalWellDepth",data%Equipments%ControlPanel%CDataDisplay%TotalWellDepth)
call json%add(p,"BitDepth",data%Equipments%ControlPanel%CDataDisplay%BitDepth)
call json%add(p,"HookLoad",data%Equipments%ControlPanel%CDataDisplay%HookLoad)
call json%add(p,"StandPipePressure",data%Equipments%ControlPanel%CDataDisplay%StandPipePressure)
call json%add(p,"CasingPressure",data%Equipments%ControlPanel%CDataDisplay%CasingPressure)
call json%add(p,"MP1SPM",data%Equipments%ControlPanel%CDataDisplay%MP1SPM)
call json%add(p,"MP2SPM",data%Equipments%ControlPanel%CDataDisplay%MP2SPM)
call json%add(p,"RTTorque",data%Equipments%ControlPanel%CDataDisplay%RTTorque)
call json%add(p,"RTRPM",data%Equipments%ControlPanel%CDataDisplay%RTRPM)
call json%add(p,"WOP",data%Equipments%ControlPanel%CDataDisplay%WOP)
call json%add(p,"ROP",data%Equipments%ControlPanel%CDataDisplay%ROP)
call json%add(p,"MudWeightIn",data%Equipments%ControlPanel%CDataDisplay%MudWeightIn)
call json%add(p,"MudWeightOut",data%Equipments%ControlPanel%CDataDisplay%MudWeightOut)
call json%add(p,"Buzzer1",data%Equipments%ControlPanel%CDataDisplay%Buzzer1)
call json%add(p,"Buzzer2",data%Equipments%ControlPanel%CDataDisplay%Buzzer2)
call json%add(p,"Buzzer3",data%Equipments%ControlPanel%CDataDisplay%Buzzer3)
call json%add(p,"Buzzer4",data%Equipments%ControlPanel%CDataDisplay%Buzzer4)

call json%add(parent,p)
end subroutine


subroutine Set_TotalDepth(v)
use SimulationVariables !@!!, only: data%EquipmentControl%DrillingWatch%Depth
! use CSimulationVariables, only: SetDistanceDrilled
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%TotalWellDepth = v
data%EquipmentControl%DrillingWatch%Depth = v
! call SetDistanceDrilled(v)
end subroutine
subroutine Set_BitPosition(v)
use SimulationVariables !@!!, only: data%EquipmentControl%DrillingWatch%BitPosition
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%BitDepth = v
data%EquipmentControl%DrillingWatch%BitPosition = v
end subroutine
subroutine Set_RotaryTorque(v)
use SimulationVariables !@!!, only: data%EquipmentControl%DrillingWatch%Torque
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%RotaryTorqueGauge = v
data%EquipmentControl%DrillingWatch%Torque = v
data%EquipmentControl%DataDisplayConsole%RTTorque = v
end subroutine
subroutine Set_MudWeightIn(v)
use SimulationVariables !@!, only: MudWeightInDw => data%EquipmentControl%DataDisplayConsole%MudWeightIn
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MudWeightIn = v
data%EquipmentControl%DrillingWatch%MudWeightIn = v
end subroutine
subroutine Set_MudWeightOut(v)
use SimulationVariables !@!, only: MudWeightOutDw => data%EquipmentControl%DataDisplayConsole%MudWeightOut
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MudWeightOut = v
data%EquipmentControl%DrillingWatch%MudWeightOut = v
end subroutine
subroutine Set_TripTankVolume(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%TripTankVolume
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DrillingWatch%TripTankVolume = v
end subroutine
subroutine Set_FillVolume(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%FillVolume
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DrillingWatch%FillVolume = v
end subroutine
subroutine Set_HookLoad(v)
use SimulationVariables !@!, only: HookLoadDw => data%EquipmentControl%DataDisplayConsole%HookLoad
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%HookLoadPointer = v
data%EquipmentControl%DrillingWatch%HookLoad = v * 1000
data%EquipmentControl%DataDisplayConsole%HookLoad = v
end subroutine
subroutine Set_WeightOnBit(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%WeightOnBit
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%WOBPointer = v
data%EquipmentControl%DrillingWatch%WeightOnBit = v
data%EquipmentControl%DataDisplayConsole%WOP = v
end subroutine
subroutine Set_ROP(v)
use SimulationVariables !@!, only: ROPDw => data%EquipmentControl%DataDisplayConsole%ROP
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%ROP = v
data%EquipmentControl%DrillingWatch%ROP = v
end subroutine
subroutine Set_CasingPressure(v)
use SimulationVariables !@!, only: CasingPressureDw => CasingPressure
use CChokeControlPanelVariables
use SimulationVariables!, only: CasingPressureChoke => CasingPressure
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%CasingPressureGauge = v
data%EquipmentControl%DrillingWatch%CasingPressure = v
data%EquipmentControl%ChokeControlPanel%CasingPressure = v
data%EquipmentControl%DataDisplayConsole%CasingPressure = v
end subroutine
subroutine Set_StandPipePressure(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%PumpPressure
use CChokeControlPanelVariables
use SimulationVariables!, only: StandPipePressureChoke => data%EquipmentControl%DataDisplayConsole%StandPipePressure
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%StandPipePressureGauge = v
data%EquipmentControl%DrillingWatch%PumpPressure = v
data%EquipmentControl%ChokeControlPanel%StandPipePressure = v
data%EquipmentControl%DataDisplayConsole%StandPipePressure = v
end subroutine
subroutine Set_RotaryRPMGauge(v)
use SimulationVariables !@!, only: data%EquipmentControl%DrillingWatch%RPM
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%RotaryRPMGauge = v
data%EquipmentControl%DrillingWatch%RPM = v
data%EquipmentControl%DataDisplayConsole%RTRPM = v
! call data%EquipmentControl%DataDisplayConsole%OnRotaryRpmChange%RunAll(v)
end subroutine
subroutine Set_MP1SPMGauge(v)
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MP1SPMGauge = v
data%EquipmentControl%DataDisplayConsole%MP1SPM = v
!@data%State%unitySignals%(PumpsSpmChanges)) call PumpsSpmChanges(data%EquipmentControl%DataDisplayConsole%MP1SPMGauge, data%EquipmentControl%DataDisplayConsole%MP2SPMGauge)
#ifdef deb
print*, 'MP1SPMGauge=', data%EquipmentControl%DataDisplayConsole%MP1SPMGauge
#endif
end subroutine
subroutine Set_MP2SPMGauge(v)
implicit none
real(8), intent(in) :: v
data%EquipmentControl%DataDisplayConsole%MP2SPMGauge = v
data%EquipmentControl%DataDisplayConsole%MP2SPM = v
!@data%State%unitySignals%(PumpsSpmChanges)) call PumpsSpmChanges(data%EquipmentControl%DataDisplayConsole%MP1SPMGauge, data%EquipmentControl%DataDisplayConsole%MP2SPMGauge)
#ifdef deb
print*, 'MP2SPMGauge=', data%EquipmentControl%DataDisplayConsole%MP2SPMGauge
#endif
end subroutine
end module CDataDisplayConsole

+ 968
- 872
CSharp/Equipments/ControlPanels/CDrillingConsole.f90
File diff suppressed because it is too large
Näytä tiedosto


+ 78
- 64
CSharp/Equipments/ControlPanels/CHook.f90 Näytä tiedosto

@@ -1,64 +1,78 @@
module CHook
use CHookVariables
use SimulationVariables
implicit none
public
contains
subroutine Set_HookHeight(v)
use CDrillingConsoleVariables
use SimulationVariables
use SimulationVariables
implicit none
real , intent(in) :: v
#ifdef ExcludeExtraChanges
if(data%EquipmentControl%Hook%HookHeight == v) return
#endif
data%EquipmentControl%Hook%HookHeight = v
! if(associated(HookHeightPtr)) then
! call HookHeightPtr(data%EquipmentControl%Hook%HookHeight)
! end if
#ifdef deb
print*, 'HookHeight=', data%EquipmentControl%Hook%HookHeight
#endif
!**call data%EquipmentControl%Hook%OnHookHeightChange%RunAll(data%EquipmentControl%Hook%HookHeight)
end subroutine
subroutine Set_HookHeight_S(v)
implicit none
real , intent(in) :: v
if(v == data%EquipmentControl%Hook%HookHeight) then
return
elseif (v > data%EquipmentControl%Hook%HookHeight) then
loop1: do
call Set_HookHeight(data%EquipmentControl%Hook%HookHeight + 0.2)
if(abs(v - data%EquipmentControl%Hook%HookHeight) <= 0.1) then
call Set_HookHeight(v)
exit loop1
endif
call sleepqq(100)
enddo loop1
else ! v < HookHeight
loop2: do
call Set_HookHeight(data%EquipmentControl%Hook%HookHeight - 0.2)
if(abs(data%EquipmentControl%Hook%HookHeight - v) <= 0.1) then
call Set_HookHeight(v)
exit loop2
endif
call sleepqq(100)
enddo loop2
endif
end subroutine
subroutine Update_HookHeight_From_Snapshot()
implicit none
call Set_HookHeight_S(data%EquipmentControl%Hook%HookHeight_S)
end subroutine
end module CHook
module CHook
use CHookVariables
use SimulationVariables
implicit none
public
contains

subroutine CHookToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p

! 1. create new node
call json%create_object(p,'CHook')
call json%add(p,"HookHeight_S",data%Equipments%ControlPanel%CHook%HookHeight_S)
call json%add(p,"HookHeight",data%Equipments%ControlPanel%CHook%HookHeight)

call json%add(parent,p)
end subroutine
subroutine Set_HookHeight(v)
use CDrillingConsoleVariables
use SimulationVariables
use SimulationVariables
implicit none
real , intent(in) :: v
#ifdef ExcludeExtraChanges
if(data%EquipmentControl%Hook%HookHeight == v) return
#endif
data%EquipmentControl%Hook%HookHeight = v
! if(associated(HookHeightPtr)) then
! call HookHeightPtr(data%EquipmentControl%Hook%HookHeight)
! end if
#ifdef deb
print*, 'HookHeight=', data%EquipmentControl%Hook%HookHeight
#endif
!**call data%EquipmentControl%Hook%OnHookHeightChange%RunAll(data%EquipmentControl%Hook%HookHeight)
end subroutine
subroutine Set_HookHeight_S(v)
implicit none
real , intent(in) :: v
if(v == data%EquipmentControl%Hook%HookHeight) then
return
elseif (v > data%EquipmentControl%Hook%HookHeight) then
loop1: do
call Set_HookHeight(data%EquipmentControl%Hook%HookHeight + 0.2)
if(abs(v - data%EquipmentControl%Hook%HookHeight) <= 0.1) then
call Set_HookHeight(v)
exit loop1
endif
call sleepqq(100)
enddo loop1
else ! v < HookHeight
loop2: do
call Set_HookHeight(data%EquipmentControl%Hook%HookHeight - 0.2)
if(abs(data%EquipmentControl%Hook%HookHeight - v) <= 0.1) then
call Set_HookHeight(v)
exit loop2
endif
call sleepqq(100)
enddo loop2
endif
end subroutine
subroutine Update_HookHeight_From_Snapshot()
implicit none
call Set_HookHeight_S(data%EquipmentControl%Hook%HookHeight_S)
end subroutine
end module CHook

+ 237
- 206
CSharp/Equipments/ControlPanels/CStandPipeManifold.f90 Näytä tiedosto

@@ -1,207 +1,238 @@
module CStandPipeManifold
use CStandPipeManifoldVariables
use SimulationVariables
use CManifolds
implicit none
public
contains
! Input routines
subroutine SetStandPipeManifoldValve1(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve1
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve1' :: SetStandPipeManifoldValve1
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve1 = v
call ChangeValve(13, v)
#ifdef deb
print*, 'StandPipeManifoldValve1=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve1
#endif
end subroutine
subroutine SetStandPipeManifoldValve2(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve2
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve2' :: SetStandPipeManifoldValve2
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve2 = v
call ChangeValve(14, v)
#ifdef deb
print*, 'StandPipeManifoldValve2=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve2
#endif
end subroutine
subroutine SetStandPipeManifoldValve3(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve3
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve3' :: SetStandPipeManifoldValve3
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve3 = v
call ChangeValve(15, v)
#ifdef deb
print*, 'StandPipeManifoldValve3=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve3
#endif
end subroutine
subroutine SetStandPipeManifoldValve4(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve4
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve4' :: SetStandPipeManifoldValve4
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve4 = v
call ChangeValve(11, v)
#ifdef deb
print*, 'StandPipeManifoldValve4=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve4
#endif
end subroutine
subroutine SetStandPipeManifoldValve5(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve5
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve5' :: SetStandPipeManifoldValve5
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve5 = v
call ChangeValve(12, v)
#ifdef deb
print*, 'StandPipeManifoldValve5=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve5
#endif
end subroutine
subroutine SetStandPipeManifoldValve6(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve6
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve6' :: SetStandPipeManifoldValve6
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve6 = v
call ChangeValve(9, v)
#ifdef deb
print*, 'StandPipeManifoldValve6=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve6
#endif
end subroutine
subroutine SetStandPipeManifoldValve7(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve7
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve7' :: SetStandPipeManifoldValve7
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve7 = v
call ChangeValve(10, v)
#ifdef deb
print*, 'StandPipeManifoldValve7=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve7
#endif
end subroutine
subroutine SetStandPipeManifoldValve8(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve8
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve8' :: SetStandPipeManifoldValve8
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve8 = v
call ChangeValve(6, v)
#ifdef deb
print*, 'StandPipeManifoldValve8=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve8
#endif
end subroutine
subroutine SetStandPipeManifoldValve9(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve9
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve9' :: SetStandPipeManifoldValve9
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve9 = v
call ChangeValve(7, v)
#ifdef deb
print*, 'StandPipeManifoldValve9=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve9
#endif
end subroutine
subroutine SetStandPipeManifoldValve10(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve10
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve10' :: SetStandPipeManifoldValve10
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve10 = v
call ChangeValve(8, v)
#ifdef deb
print*, 'StandPipeManifoldValve10=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve10
#endif
end subroutine
subroutine SetStandPipeManifoldValve11(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve11
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve11' :: SetStandPipeManifoldValve11
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve11 = v
call ChangeValve(1, v)
#ifdef deb
print*, 'StandPipeManifoldValve11=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve11
#endif
end subroutine
subroutine SetStandPipeManifoldValve12(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve12
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve12' :: SetStandPipeManifoldValve12
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve12 = v
call ChangeValve(2, v)
#ifdef deb
print*, 'StandPipeManifoldValve12=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve12
#endif
end subroutine
subroutine SetStandPipeManifoldValve13(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve13
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve13' :: SetStandPipeManifoldValve13
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve13 = v
call ChangeValve(3, v)
#ifdef deb
print*, 'StandPipeManifoldValve13=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve13
#endif
end subroutine
subroutine SetStandPipeManifoldValve14(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve14
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve14' :: SetStandPipeManifoldValve14
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve14 = v
call ChangeValve(4, v)
#ifdef deb
print*, 'StandPipeManifoldValve14=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve14
#endif
end subroutine
subroutine SetStandPipeManifoldValve15(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve15
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve15' :: SetStandPipeManifoldValve15
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve15 = v
call ChangeValve(5, v)
#ifdef deb
print*, 'StandPipeManifoldValve15=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve15
#endif
end subroutine
! Output routines
real(8) function GetStandPipeGauge1()
!DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipeGauge1
!DEC$ ATTRIBUTES ALIAS: 'GetStandPipeGauge1' :: GetStandPipeGauge1
implicit none
GetStandPipeGauge1 = data%EquipmentControl%StandPipeManifold%StandPipeGauge1
!GetStandPipeGauge1 = 567.4
end function
real(8) function GetStandPipeGauge2()
!DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipeGauge2
!DEC$ ATTRIBUTES ALIAS: 'GetStandPipeGauge2' :: GetStandPipeGauge2
implicit none
GetStandPipeGauge2 = data%EquipmentControl%StandPipeManifold%StandPipeGauge2
!GetStandPipeGauge2 = 1564.0
end function
module CStandPipeManifold
use CStandPipeManifoldVariables
use SimulationVariables
use CManifolds
implicit none
public
contains


subroutine CStandPipeToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p

! 1. create new node
call json%create_object(p,'CStandPipe')

call json%add(p,"StandPipeManifoldValve1",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve1)
call json%add(p,"StandPipeManifoldValve2",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve2)
call json%add(p,"StandPipeManifoldValve3",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve3)
call json%add(p,"StandPipeManifoldValve4",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve4)
call json%add(p,"StandPipeManifoldValve5",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve5)
call json%add(p,"StandPipeManifoldValve6",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve6)
call json%add(p,"StandPipeManifoldValve7",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve7)
call json%add(p,"StandPipeManifoldValve8",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve8)
call json%add(p,"StandPipeManifoldValve9",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve9)
call json%add(p,"StandPipeManifoldValve10",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve10)
call json%add(p,"StandPipeManifoldValve11",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve11)
call json%add(p,"StandPipeManifoldValve12",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve12)
call json%add(p,"StandPipeManifoldValve13",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve13)
call json%add(p,"StandPipeManifoldValve14",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve14)
call json%add(p,"StandPipeManifoldValve15",data%Equipments%ControlPanel%CStandPipe%StandPipeManifoldValve15)
call json%add(p,"StandPipeGauge1",data%Equipments%ControlPanel%CStandPipe%StandPipeGauge1)
call json%add(p,"StandPipeGauge2",data%Equipments%ControlPanel%CStandPipe%StandPipeGauge2)

call json%add(parent,p)
end subroutine
! Input routines
subroutine SetStandPipeManifoldValve1(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve1
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve1' :: SetStandPipeManifoldValve1
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve1 = v
call ChangeValve(13, v)
#ifdef deb
print*, 'StandPipeManifoldValve1=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve1
#endif
end subroutine

subroutine SetStandPipeManifoldValve2(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve2
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve2' :: SetStandPipeManifoldValve2
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve2 = v
call ChangeValve(14, v)
#ifdef deb
print*, 'StandPipeManifoldValve2=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve2
#endif
end subroutine

subroutine SetStandPipeManifoldValve3(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve3
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve3' :: SetStandPipeManifoldValve3
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve3 = v
call ChangeValve(15, v)
#ifdef deb
print*, 'StandPipeManifoldValve3=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve3
#endif
end subroutine

subroutine SetStandPipeManifoldValve4(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve4
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve4' :: SetStandPipeManifoldValve4
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve4 = v
call ChangeValve(11, v)
#ifdef deb
print*, 'StandPipeManifoldValve4=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve4
#endif
end subroutine

subroutine SetStandPipeManifoldValve5(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve5
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve5' :: SetStandPipeManifoldValve5
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve5 = v
call ChangeValve(12, v)
#ifdef deb
print*, 'StandPipeManifoldValve5=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve5
#endif
end subroutine

subroutine SetStandPipeManifoldValve6(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve6
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve6' :: SetStandPipeManifoldValve6
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve6 = v
call ChangeValve(9, v)
#ifdef deb
print*, 'StandPipeManifoldValve6=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve6
#endif
end subroutine

subroutine SetStandPipeManifoldValve7(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve7
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve7' :: SetStandPipeManifoldValve7
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve7 = v
call ChangeValve(10, v)
#ifdef deb
print*, 'StandPipeManifoldValve7=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve7
#endif
end subroutine

subroutine SetStandPipeManifoldValve8(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve8
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve8' :: SetStandPipeManifoldValve8
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve8 = v
call ChangeValve(6, v)
#ifdef deb
print*, 'StandPipeManifoldValve8=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve8
#endif
end subroutine

subroutine SetStandPipeManifoldValve9(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve9
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve9' :: SetStandPipeManifoldValve9
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve9 = v
call ChangeValve(7, v)
#ifdef deb
print*, 'StandPipeManifoldValve9=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve9
#endif
end subroutine

subroutine SetStandPipeManifoldValve10(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve10
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve10' :: SetStandPipeManifoldValve10
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve10 = v
call ChangeValve(8, v)
#ifdef deb
print*, 'StandPipeManifoldValve10=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve10
#endif
end subroutine

subroutine SetStandPipeManifoldValve11(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve11
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve11' :: SetStandPipeManifoldValve11
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve11 = v
call ChangeValve(1, v)
#ifdef deb
print*, 'StandPipeManifoldValve11=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve11
#endif
end subroutine

subroutine SetStandPipeManifoldValve12(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve12
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve12' :: SetStandPipeManifoldValve12
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve12 = v
call ChangeValve(2, v)
#ifdef deb
print*, 'StandPipeManifoldValve12=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve12
#endif
end subroutine

subroutine SetStandPipeManifoldValve13(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve13
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve13' :: SetStandPipeManifoldValve13
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve13 = v
call ChangeValve(3, v)
#ifdef deb
print*, 'StandPipeManifoldValve13=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve13
#endif
end subroutine

subroutine SetStandPipeManifoldValve14(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve14
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve14' :: SetStandPipeManifoldValve14
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve14 = v
call ChangeValve(4, v)
#ifdef deb
print*, 'StandPipeManifoldValve14=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve14
#endif
end subroutine

subroutine SetStandPipeManifoldValve15(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve15
!DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve15' :: SetStandPipeManifoldValve15
implicit none
logical, intent(in) :: v
data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve15 = v
call ChangeValve(5, v)
#ifdef deb
print*, 'StandPipeManifoldValve15=', data%EquipmentControl%StandPipeManifold%StandPipeManifoldValve15
#endif
end subroutine

! Output routines
real(8) function GetStandPipeGauge1()
!DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipeGauge1
!DEC$ ATTRIBUTES ALIAS: 'GetStandPipeGauge1' :: GetStandPipeGauge1
implicit none
GetStandPipeGauge1 = data%EquipmentControl%StandPipeManifold%StandPipeGauge1
!GetStandPipeGauge1 = 567.4
end function

real(8) function GetStandPipeGauge2()
!DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipeGauge2
!DEC$ ATTRIBUTES ALIAS: 'GetStandPipeGauge2' :: GetStandPipeGauge2
implicit none
GetStandPipeGauge2 = data%EquipmentControl%StandPipeManifold%StandPipeGauge2
!GetStandPipeGauge2 = 1564.0
end function

end module CStandPipeManifold

+ 267
- 216
CSharp/Equipments/ControlPanels/CTopDrivePanel.f90 Näytä tiedosto

@@ -1,216 +1,267 @@
module CTopDrivePanel
use CTopDrivePanelVariables
use SimulationVariables
use CLog3
implicit none
public
contains
! Input routines
subroutine SetTopDriveTdsPowerState(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTdsPowerState
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTdsPowerState' :: SetTopDriveTdsPowerState
implicit none
integer, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState = v
#ifdef deb
call Log_3( 'TopDriveTdsPowerState=', data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState)
#endif
end subroutine
subroutine SetTopDriveTorqueWrench(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTorqueWrench
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTorqueWrench' :: SetTopDriveTorqueWrench
implicit none
logical, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveTorqueWrench = v
#ifdef deb
call Log_3( 'TopDriveTorqueWrench=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueWrench)
#endif
end subroutine
subroutine SetTopDriveDrillTorqueState(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveDrillTorqueState
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveDrillTorqueState' :: SetTopDriveDrillTorqueState
implicit none
integer, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveDrillTorqueState = v
#ifdef deb
call Log_3( 'TopDriveDrillTorqueState=', data%EquipmentControl%TopDrivePanel%TopDriveDrillTorqueState)
#endif
end subroutine
subroutine SetTopDriveLinkTiltState(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveLinkTiltState
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveLinkTiltState' :: SetTopDriveLinkTiltState
implicit none
integer, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveLinkTiltState = v
#ifdef deb
call Log_3( 'TopDriveLinkTiltState=', data%EquipmentControl%TopDrivePanel%TopDriveLinkTiltState)
#endif
end subroutine
subroutine SetTopDriveIbop(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveIbop
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveIbop' :: SetTopDriveIbop
implicit none
logical, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveIbop = v
#ifdef deb
call Log_3( 'TopDriveIbop=', data%EquipmentControl%TopDrivePanel%TopDriveIbop)
#endif
end subroutine
subroutine SetTopDriveTorqueLimitKnob(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTorqueLimitKnob
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTorqueLimitKnob' :: SetTopDriveTorqueLimitKnob
! use CSimulationVariables, only: IsPortable
use CDrillingConsoleVariables
use SimulationVariables
use SimulationVariables!, only: data%EquipmentControl%DrillingConsole%RTSwitch, data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob
use CWarnings, only: Activate_TopdriveRotaryTableConfilict
use CScaleRange
implicit none
real, intent(in) :: v
if (IsPortable) then
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) call Activate_TopdriveRotaryTableConfilict()
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch == 0) then
data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob = 0
data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob = v
#ifdef deb
call Log_3( 'RTTorqueLimitKnob=', data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob )
call Log_3( 'TopDriveTorqueLimitKnob=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob )
#endif
endif
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState == 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) then
data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob = 0
data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob = real(ScaleRange(v, 0.0, 10.0, 0.0, 6000.0), 8)
#ifdef deb
call Log_3( 'RTTorqueLimitKnob=', data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob )
call Log_3( 'TopDriveTorqueLimitKnob=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob )
#endif
endif
else
data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob = v
#ifdef deb
call Log_3( 'TopDriveTorqueLimitKnob=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob)
#endif
endif
end subroutine
subroutine SetRpmKnob(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetRpmKnob
!DEC$ ATTRIBUTES ALIAS: 'SetRpmKnob' :: SetRpmKnob
! use CSimulationVariables, only: IsPortable
use CDrillingConsoleVariables
use SimulationVariables
use SimulationVariables!, only: data%EquipmentControl%DrillingConsole%RTSwitch, data%EquipmentControl%DrillingConsole%RTThrottle
use CWarnings, only: Activate_TopdriveRotaryTableConfilict
use CScaleRange
implicit none
real, intent(in) :: v
if (IsPortable) then
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) call Activate_TopdriveRotaryTableConfilict()
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch == 0) then
data%EquipmentControl%DrillingConsole%RTThrottle = 0
data%EquipmentControl%TopDrivePanel%RpmKnob = v
#ifdef deb
call Log_3( 'RTThrottle=', data%EquipmentControl%DrillingConsole%RTThrottle )
call Log_3( 'RpmKnob=', data%EquipmentControl%TopDrivePanel%RpmKnob )
#endif
endif
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState == 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) then
data%EquipmentControl%TopDrivePanel%RpmKnob = 0
data%EquipmentControl%DrillingConsole%RTThrottle = real(ScaleRange(v, 0.0, 965.0, 0.0, 250.0), 8)
#ifdef deb
call Log_3( 'RpmKnob=', data%EquipmentControl%TopDrivePanel%RpmKnob )
call Log_3( 'RTThrottle=', data%EquipmentControl%DrillingConsole%RTThrottle )
#endif
endif
else
data%EquipmentControl%TopDrivePanel%RpmKnob = v
endif
if (IsPortable) then
!
else
data%EquipmentControl%TopDrivePanel%RpmKnob = v
#ifdef deb
call Log_3( 'RpmKnob=', data%EquipmentControl%TopDrivePanel%RpmKnob )
#endif
endif
end subroutine
! Output routines
integer function GetTopDriveOperationFaultLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveOperationFaultLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveOperationFaultLed' :: GetTopDriveOperationFaultLed
implicit none
GetTopDriveOperationFaultLed = data%EquipmentControl%TopDrivePanel%TopDriveOperationFaultLed
!GetTopDriveOperationFaultLed = 1
end function
integer function GetTopDriveTdsPowerLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTdsPowerLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTdsPowerLed' :: GetTopDriveTdsPowerLed
implicit none
GetTopDriveTdsPowerLed = data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerLed
!GetTopDriveTdsPowerLed = 1
end function
integer function GetTopDriveTorqueWrenchLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueWrenchLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueWrenchLed' :: GetTopDriveTorqueWrenchLed
implicit none
GetTopDriveTorqueWrenchLed = data%EquipmentControl%TopDrivePanel%TopDriveTorqueWrenchLed
!GetTopDriveTorqueWrenchLed = 1
end function
integer function GetTopDriveLinkTiltLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveLinkTiltLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveLinkTiltLed' :: GetTopDriveLinkTiltLed
implicit none
GetTopDriveLinkTiltLed = data%EquipmentControl%TopDrivePanel%TopDriveLinkTiltLed
!GetTopDriveLinkTiltLed = 1
end function
integer function GetTopDriveIbopLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveIbopLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveIbopLed' :: GetTopDriveIbopLed
implicit none
GetTopDriveIbopLed = data%EquipmentControl%TopDrivePanel%TopDriveIbopLed
!GetTopDriveIbopLed = 1
end function
real function GetTopDriveTorqueGauge()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueGauge
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueGauge' :: GetTopDriveTorqueGauge
implicit none
GetTopDriveTorqueGauge = data%EquipmentControl%TopDrivePanel%TopDriveTorqueGauge
!GetTopDriveTorqueGauge = 340
end function
real function GetTopDriveTorqueLimitGauge()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueLimitGauge
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueLimitGauge' :: GetTopDriveTorqueLimitGauge
implicit none
GetTopDriveTorqueLimitGauge = data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitGauge
!GetTopDriveTorqueLimitGauge = 442
end function
real function GetTopDriveRpmGauge()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveRpmGauge
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveRpmGauge' :: GetTopDriveRpmGauge
implicit none
GetTopDriveRpmGauge = data%EquipmentControl%TopDrivePanel%TopDriveRpmGauge
!GetTopDriveRpmGauge = 67
end function
end module CTopDrivePanel
module CTopDrivePanel
use CTopDrivePanelVariables
use SimulationVariables
use CLog3
implicit none
public
contains

subroutine CDrivePanelToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p,pform
integer :: i


! 1. create new node
call json%create_object(p,'CDrivePanel')

call json%add(p,"TdsPower_REV",data%Equipments%ControlPanel%CTopDrive%TdsPower_REV)
call json%add(p,"TdsPower_OFF",data%Equipments%ControlPanel%CTopDrive%TdsPower_OFF)
call json%add(p,"TdsPower_FWD",data%Equipments%ControlPanel%CTopDrive%TdsPower_FWD)
call json%add(p,"TdsMu_TORQ",data%Equipments%ControlPanel%CTopDrive%TdsMu_TORQ)
call json%add(p,"TdsMu_SPINE",data%Equipments%ControlPanel%CTopDrive%TdsMu_SPINE)
call json%add(p,"TdsMu_DRILL",data%Equipments%ControlPanel%CTopDrive%TdsMu_DRILL)
call json%add(p,"TdsLinkTilt_TILT",data%Equipments%ControlPanel%CTopDrive%TdsLinkTilt_TILT)
call json%add(p,"TdsLinkTilt_OFF",data%Equipments%ControlPanel%CTopDrive%TdsLinkTilt_OFF)
call json%add(p,"TdsLinkTilt_DRILL",data%Equipments%ControlPanel%CTopDrive%TdsLinkTilt_DRILL)
call json%add(p,"LED_OFF",data%Equipments%ControlPanel%CTopDrive%LED_OFF)
call json%add(p,"LED_ON",data%Equipments%ControlPanel%CTopDrive%LED_ON)
call json%add(p,"LED_BLINK",data%Equipments%ControlPanel%CTopDrive%LED_BLINK)


do i=1,data%Equipments%ControlPanel%CTopDrive%Count
call json%create_object(pform,'')
call json%add(pform,"TopDriveTdsPowerState",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerState)
call json%add(pform,"TopDriveTorqueWrench",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrench)
call json%add(pform,"TopDriveDrillTorqueState",data%Equipments%ControlPanel%CTopDrive%TopDriveDrillTorqueState)
call json%add(pform,"TopDriveLinkTiltState",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltState)
call json%add(pform,"TopDriveIbop",data%Equipments%ControlPanel%CTopDrive%TopDriveIbop)
call json%add(pform,"TopDriveTorqueLimitKnob",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitKnob)
call json%add(pform,"RpmKnob",data%Equipments%ControlPanel%CTopDrive%RpmKnob)
call json%add(pform,"TopDriveOperationFaultLed",data%Equipments%ControlPanel%CTopDrive%TopDriveOperationFaultLed)
call json%add(pform,"TopDriveTdsPowerLed",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerLed)
call json%add(pform,"TopDriveTorqueWrenchLed",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrenchLed)
call json%add(pform,"TopDriveLinkTiltLed",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltLed)
call json%add(pform,"TopDriveIbopLed",data%Equipments%ControlPanel%CTopDrive%TopDriveIbopLed)
call json%add(pform,"TopDriveTorqueLimitGauge",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitGauge)
call json%add(pform,"TopDriveTorqueGauge",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueGauge)
call json%add(pform,"TopDriveRpmGauge",data%Equipments%ControlPanel%CTopDrive%TopDriveRpmGauge)

call json%add(p,pform)
end do

call json%add(parent,p)
end subroutine
! Input routines
subroutine SetTopDriveTdsPowerState(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTdsPowerState
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTdsPowerState' :: SetTopDriveTdsPowerState
implicit none
integer, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState = v
#ifdef deb
call Log_3( 'TopDriveTdsPowerState=', data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState)
#endif
end subroutine

subroutine SetTopDriveTorqueWrench(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTorqueWrench
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTorqueWrench' :: SetTopDriveTorqueWrench
implicit none
logical, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveTorqueWrench = v
#ifdef deb
call Log_3( 'TopDriveTorqueWrench=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueWrench)
#endif
end subroutine

subroutine SetTopDriveDrillTorqueState(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveDrillTorqueState
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveDrillTorqueState' :: SetTopDriveDrillTorqueState
implicit none
integer, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveDrillTorqueState = v
#ifdef deb
call Log_3( 'TopDriveDrillTorqueState=', data%EquipmentControl%TopDrivePanel%TopDriveDrillTorqueState)
#endif
end subroutine

subroutine SetTopDriveLinkTiltState(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveLinkTiltState
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveLinkTiltState' :: SetTopDriveLinkTiltState
implicit none
integer, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveLinkTiltState = v
#ifdef deb
call Log_3( 'TopDriveLinkTiltState=', data%EquipmentControl%TopDrivePanel%TopDriveLinkTiltState)
#endif
end subroutine

subroutine SetTopDriveIbop(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveIbop
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveIbop' :: SetTopDriveIbop
implicit none
logical, intent(in) :: v
data%EquipmentControl%TopDrivePanel%TopDriveIbop = v
#ifdef deb
call Log_3( 'TopDriveIbop=', data%EquipmentControl%TopDrivePanel%TopDriveIbop)
#endif
end subroutine
subroutine SetTopDriveTorqueLimitKnob(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTorqueLimitKnob
!DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTorqueLimitKnob' :: SetTopDriveTorqueLimitKnob
! use CSimulationVariables, only: IsPortable
use CDrillingConsoleVariables
use SimulationVariables
use SimulationVariables!, only: data%EquipmentControl%DrillingConsole%RTSwitch, data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob
use CWarnings, only: Activate_TopdriveRotaryTableConfilict
use CScaleRange
implicit none
real, intent(in) :: v
if (IsPortable) then
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) call Activate_TopdriveRotaryTableConfilict()
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch == 0) then
data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob = 0
data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob = v
#ifdef deb
call Log_3( 'RTTorqueLimitKnob=', data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob )
call Log_3( 'TopDriveTorqueLimitKnob=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob )
#endif
endif
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState == 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) then
data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob = 0
data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob = real(ScaleRange(v, 0.0, 10.0, 0.0, 6000.0), 8)
#ifdef deb
call Log_3( 'RTTorqueLimitKnob=', data%EquipmentControl%DrillingConsole%RTTorqueLimitKnob )
call Log_3( 'TopDriveTorqueLimitKnob=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob )
#endif
endif
else
data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob = v
#ifdef deb
call Log_3( 'TopDriveTorqueLimitKnob=', data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitKnob)
#endif
endif

end subroutine
subroutine SetRpmKnob(v)
!DEC$ ATTRIBUTES DLLEXPORT :: SetRpmKnob
!DEC$ ATTRIBUTES ALIAS: 'SetRpmKnob' :: SetRpmKnob
! use CSimulationVariables, only: IsPortable
use CDrillingConsoleVariables
use SimulationVariables
use SimulationVariables!, only: data%EquipmentControl%DrillingConsole%RTSwitch, data%EquipmentControl%DrillingConsole%RTThrottle
use CWarnings, only: Activate_TopdriveRotaryTableConfilict
use CScaleRange
implicit none
real, intent(in) :: v
if (IsPortable) then
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) call Activate_TopdriveRotaryTableConfilict()
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState /= 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch == 0) then
data%EquipmentControl%DrillingConsole%RTThrottle = 0
data%EquipmentControl%TopDrivePanel%RpmKnob = v
#ifdef deb
call Log_3( 'RTThrottle=', data%EquipmentControl%DrillingConsole%RTThrottle )
call Log_3( 'RpmKnob=', data%EquipmentControl%TopDrivePanel%RpmKnob )
#endif
endif
if(data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerState == 0 .and. data%EquipmentControl%DrillingConsole%RTSwitch /= 0) then
data%EquipmentControl%TopDrivePanel%RpmKnob = 0
data%EquipmentControl%DrillingConsole%RTThrottle = real(ScaleRange(v, 0.0, 965.0, 0.0, 250.0), 8)
#ifdef deb
call Log_3( 'RpmKnob=', data%EquipmentControl%TopDrivePanel%RpmKnob )
call Log_3( 'RTThrottle=', data%EquipmentControl%DrillingConsole%RTThrottle )
#endif
endif
else
data%EquipmentControl%TopDrivePanel%RpmKnob = v
endif
if (IsPortable) then
!
else
data%EquipmentControl%TopDrivePanel%RpmKnob = v
#ifdef deb
call Log_3( 'RpmKnob=', data%EquipmentControl%TopDrivePanel%RpmKnob )
#endif
endif

end subroutine
! Output routines
integer function GetTopDriveOperationFaultLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveOperationFaultLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveOperationFaultLed' :: GetTopDriveOperationFaultLed
implicit none
GetTopDriveOperationFaultLed = data%EquipmentControl%TopDrivePanel%TopDriveOperationFaultLed
!GetTopDriveOperationFaultLed = 1
end function

integer function GetTopDriveTdsPowerLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTdsPowerLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTdsPowerLed' :: GetTopDriveTdsPowerLed
implicit none
GetTopDriveTdsPowerLed = data%EquipmentControl%TopDrivePanel%TopDriveTdsPowerLed
!GetTopDriveTdsPowerLed = 1
end function

integer function GetTopDriveTorqueWrenchLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueWrenchLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueWrenchLed' :: GetTopDriveTorqueWrenchLed
implicit none
GetTopDriveTorqueWrenchLed = data%EquipmentControl%TopDrivePanel%TopDriveTorqueWrenchLed
!GetTopDriveTorqueWrenchLed = 1
end function

integer function GetTopDriveLinkTiltLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveLinkTiltLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveLinkTiltLed' :: GetTopDriveLinkTiltLed
implicit none
GetTopDriveLinkTiltLed = data%EquipmentControl%TopDrivePanel%TopDriveLinkTiltLed
!GetTopDriveLinkTiltLed = 1
end function

integer function GetTopDriveIbopLed()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveIbopLed
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveIbopLed' :: GetTopDriveIbopLed
implicit none
GetTopDriveIbopLed = data%EquipmentControl%TopDrivePanel%TopDriveIbopLed
!GetTopDriveIbopLed = 1
end function
real function GetTopDriveTorqueGauge()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueGauge
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueGauge' :: GetTopDriveTorqueGauge
implicit none
GetTopDriveTorqueGauge = data%EquipmentControl%TopDrivePanel%TopDriveTorqueGauge
!GetTopDriveTorqueGauge = 340
end function
real function GetTopDriveTorqueLimitGauge()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueLimitGauge
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueLimitGauge' :: GetTopDriveTorqueLimitGauge
implicit none
GetTopDriveTorqueLimitGauge = data%EquipmentControl%TopDrivePanel%TopDriveTorqueLimitGauge
!GetTopDriveTorqueLimitGauge = 442
end function
real function GetTopDriveRpmGauge()
!DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveRpmGauge
!DEC$ ATTRIBUTES ALIAS: 'GetTopDriveRpmGauge' :: GetTopDriveRpmGauge
implicit none
GetTopDriveRpmGauge = data%EquipmentControl%TopDrivePanel%TopDriveRpmGauge
!GetTopDriveRpmGauge = 67
end function

end module CTopDrivePanel

+ 41
- 43
CSharp/Equipments/ControlPanels/CTopDrivePanelVariables.f90 Näytä tiedosto

@@ -1,44 +1,42 @@
module CTopDrivePanelVariables
implicit none
public
! const
integer :: TdsPower_REV = 1
integer :: TdsPower_OFF = 0
integer :: TdsPower_FWD = -1
integer :: TdsMu_TORQ = 1
integer :: TdsMu_SPINE = 0
integer :: TdsMu_DRILL = -1
integer :: TdsLinkTilt_TILT = 1
integer :: TdsLinkTilt_OFF = 0
integer :: TdsLinkTilt_DRILL = -1
integer :: LED_OFF = 0
integer :: LED_ON = 1
integer :: LED_BLINK = 2
! Input vars
Type::TopDrivePanelType
integer :: TopDriveTdsPowerState
logical :: TopDriveTorqueWrench
integer :: TopDriveDrillTorqueState
integer :: TopDriveLinkTiltState
logical :: TopDriveIbop
real :: TopDriveTorqueLimitKnob
real :: RpmKnob
! Output vars
integer :: TopDriveOperationFaultLed
integer :: TopDriveTdsPowerLed
integer :: TopDriveTorqueWrenchLed
integer :: TopDriveLinkTiltLed
integer :: TopDriveIbopLed
real :: TopDriveTorqueLimitGauge
real :: TopDriveTorqueGauge
real :: TopDriveRpmGauge
end type TopDrivePanelType
contains
module CTopDrivePanelVariables
implicit none
public
! const
integer :: TdsPower_REV = 1
integer :: TdsPower_OFF = 0
integer :: TdsPower_FWD = -1
integer :: TdsMu_TORQ = 1
integer :: TdsMu_SPINE = 0
integer :: TdsMu_DRILL = -1
integer :: TdsLinkTilt_TILT = 1
integer :: TdsLinkTilt_OFF = 0
integer :: TdsLinkTilt_DRILL = -1
integer :: LED_OFF = 0
integer :: LED_ON = 1
integer :: LED_BLINK = 2
! Input vars
Type::TopDrivePanelType
integer :: TopDriveTdsPowerState
logical :: TopDriveTorqueWrench
integer :: TopDriveDrillTorqueState
integer :: TopDriveLinkTiltState
logical :: TopDriveIbop
real :: TopDriveTorqueLimitKnob
real :: RpmKnob
! Output vars
integer :: TopDriveOperationFaultLed
integer :: TopDriveTdsPowerLed
integer :: TopDriveTorqueWrenchLed
integer :: TopDriveLinkTiltLed
integer :: TopDriveIbopLed
real :: TopDriveTorqueLimitGauge
real :: TopDriveTorqueGauge
real :: TopDriveRpmGauge
end type TopDrivePanelType
contains
end module CTopDrivePanelVariables

+ 61
- 0
CSharp/Equipments/Tanks/CTanks.f90 Näytä tiedosto

@@ -1,3 +1,4 @@
<<<<<<< HEAD
module CTanks
use SimulationVariables
@@ -17,4 +18,64 @@
end subroutine
=======

module CTanks
use SimulationVariables
use CManifolds
implicit none
public
contains


subroutine CTankToJson(parent)

type(json_value),pointer :: parent
type(json_core) :: json
type(json_value),pointer :: p,pform
integer :: i

call json%create_array(p,'CTank')

do i=1,data%Equipments%Tanks%CTank%Count
call json%create_object(pform,'')
call json%add(pform,"WaterRate",data%Equipments%Tanks%CTanks%WaterRate)
call json%add(pform,"CementTankVolume",data%Equipments%Tanks%CTanks%CementTankVolume)
call json%add(pform,"CementTankDensity",data%Equipments%Tanks%CTanks%CementTankDensity)
call json%add(pform,"TripTankVolume",data%Equipments%Tanks%CTanks%TripTankVolume)
call json%add(pform,"TripTankDensity",data%Equipments%Tanks%CTanks%TripTankDensity)
call json%add(pform,"ManualPumpPower",data%Equipments%Tanks%CTanks%ManualPumpPower)
call json%add(pform,"Valve1",data%Equipments%Tanks%CTanks%Valve1)
call json%add(pform,"Valve2",data%Equipments%Tanks%CTanks%Valve2)
call json%add(pform,"Valve3",data%Equipments%Tanks%CTanks%Valve3)
call json%add(pform,"Valve4",data%Equipments%Tanks%CTanks%Valve4)
call json%add(pform,"Valve5",data%Equipments%Tanks%CTanks%Valve5)
call json%add(pform,"Valve6",data%Equipments%Tanks%CTanks%Valve6)
call json%add(pform,"Valve7",data%Equipments%Tanks%CTanks%Valve7)
call json%add(pform,"Valve8",data%Equipments%Tanks%CTanks%Valve8)
call json%add(pform,"Valve9",data%Equipments%Tanks%CTanks%Valve9)
call json%add(pform,"Valve10",data%Equipments%Tanks%CTanks%Valve10)
call json%add(pform,"Valve11",data%Equipments%Tanks%CTanks%Valve11)

call json%add(p,pform)
end do


call json%add(parent,p)
end subroutine


subroutine Set_ManualPumpPower(v)
use CManifolds, only:ChangeValve
implicit none
logical, intent(in) :: v
data%EquipmentControl%Tank%ManualPumpPower = v
call ChangeValve(43, v)
#ifdef deb
print*, 'ManualPumpPower=', data%EquipmentControl%Tank%ManualPumpPower
#endif
end subroutine

>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
end module CTanks

+ 8
- 0
Simulator.f90 Näytä tiedosto

@@ -200,9 +200,17 @@ module Simulator
call ProblemsToJson(jsonvalue)

print *,"write starts"
<<<<<<< HEAD
call jsoncore%serialize(jsonvalue,redisContent)
! s = "Test redis write!"
call setData(redisContent)
=======
call json%create_object(p,'') !create the root
call ConfigurationToJson(p)
call json%print(p,'test.json') !write it to a file
call json%destroy(p) !cleanup print *,"written"
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
print *,"write ends"
end subroutine



+ 19
- 1
Text1.txt Näytä tiedosto

@@ -1,3 +1,21 @@
<<<<<<< HEAD
integer :: ElevatorConnection
integer :: StringUpdate
integer :: KellyConnection
integer :: KellyConnection
=======
integer :: TopDriveTdsPowerState
logical :: TopDriveTorqueWrench
integer :: TopDriveDrillTorqueState
integer :: TopDriveLinkTiltState
logical :: TopDriveIbop
real :: TopDriveTorqueLimitKnob
real :: RpmKnob
integer :: TopDriveOperationFaultLed
integer :: TopDriveTdsPowerLed
integer :: TopDriveTorqueWrenchLed
integer :: TopDriveLinkTiltLed
integer :: TopDriveIbopLed
real :: TopDriveTorqueLimitGauge
real :: TopDriveTorqueGauge
real :: TopDriveRpmGauge
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2

+ 273
- 0
UpgradeLog.htm Näytä tiedosto

@@ -0,0 +1,273 @@
<!DOCTYPE html>
<!-- saved from url=(0014)about:internet -->
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="ConversionReport0">
Migration Report
</title><style>
/* Body style, for the entire document */
body
{
background: #F3F3F4;
color: #1E1E1F;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
padding: 0;
margin: 0;
}

/* Header1 style, used for the main title */
h1
{
padding: 10px 0px 10px 10px;
font-size: 21pt;
background-color: #E2E2E2;
border-bottom: 1px #C1C1C2 solid;
color: #201F20;
margin: 0;
font-weight: normal;
}

/* Header2 style, used for "Overview" and other sections */
h2
{
font-size: 18pt;
font-weight: normal;
padding: 15px 0 5px 0;
margin: 0;
}

/* Header3 style, used for sub-sections, such as project name */
h3
{
font-weight: normal;
font-size: 15pt;
margin: 0;
padding: 15px 0 5px 0;
background-color: transparent;
}

/* Color all hyperlinks one color */
a
{
color: #1382CE;
}

/* Table styles */
table
{
border-spacing: 0 0;
border-collapse: collapse;
font-size: 10pt;
}

table th
{
background: #E7E7E8;
text-align: left;
text-decoration: none;
font-weight: normal;
padding: 3px 6px 3px 6px;
}

table td
{
vertical-align: top;
padding: 3px 6px 5px 5px;
margin: 0px;
border: 1px solid #E7E7E8;
background: #F7F7F8;
}

/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
.localLink
{
color: #1E1E1F;
background: #EEEEED;
text-decoration: none;
}

.localLink:hover
{
color: #1382CE;
background: #FFFF99;
text-decoration: none;
}

/* Center text, used in the over views cells that contain message level counts */
.textCentered
{
text-align: center;
}

/* The message cells in message tables should take up all avaliable space */
.messageCell
{
width: 100%;
}

/* Padding around the content after the h1 */
#content
{
padding: 0px 12px 12px 12px;
}

/* The overview table expands to width, with a max width of 97% */
#overview table
{
width: auto;
max-width: 75%;
}

/* The messages tables are always 97% width */
#messages table
{
width: 97%;
}

/* All Icons */
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
{
min-width:18px;
min-height:18px;
background-repeat:no-repeat;
background-position:center;
}

/* Success icon encoded */
.IconSuccessEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconSuccess#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
}

/* Information icon encoded */
.IconInfoEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconInformation#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
}

/* Warning icon encoded */
.IconWarningEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconWarning#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
}

/* Error icon encoded */
.IconErrorEncoded
{
/* Note: Do not delete the comment below. It is used to verify the correctness of the encoded image resource below before the product is released */
/* [---XsltValidateInternal-Base64EncodedImage:IconError#Begin#background-image: url(data:image/png;base64,#Separator#);#End#] */
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
}
</style><script type="text/javascript" language="javascript">
// Startup
// Hook up the the loaded event for the document/window, to linkify the document content
var startupFunction = function() { linkifyElement("messages"); };
if(window.attachEvent)
{
window.attachEvent('onload', startupFunction);
}
else if (window.addEventListener)
{
window.addEventListener('load', startupFunction, false);
}
else
{
document.addEventListener('load', startupFunction, false);
}
// Toggles the visibility of table rows with the specified name
function toggleTableRowsByName(name)
{
var allRows = document.getElementsByTagName('tr');
for (i=0; i < allRows.length; i++)
{
var currentName = allRows[i].getAttribute('name');
if(!!currentName && currentName.indexOf(name) == 0)
{
var isVisible = allRows[i].style.display == '';
isVisible ? allRows[i].style.display = 'none' : allRows[i].style.display = '';
}
}
}
function scrollToFirstVisibleRow(name)
{
var allRows = document.getElementsByTagName('tr');
for (i=0; i < allRows.length; i++)
{
var currentName = allRows[i].getAttribute('name');
var isVisible = allRows[i].style.display == '';
if(!!currentName && currentName.indexOf(name) == 0 && isVisible)
{
allRows[i].scrollIntoView(true);
return true;
}
}
return false;
}
// Linkifies the specified text content, replaces candidate links with html links
function linkify(text)
{
if(!text || 0 === text.length)
{
return text;
}

// Find http, https and ftp links and replace them with hyper links
var urlLink = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~;\{\}])*/gi;
return text.replace(urlLink, '<a href="$&">$&</a>') ;
}
// Linkifies the specified element by ID
function linkifyElement(id)
{
var element = document.getElementById(id);
if(!!element)
{
element.innerHTML = linkify(element.innerHTML);
}
}
function ToggleMessageVisibility(projectName)
{
if(!projectName || 0 === projectName.length)
{
return;
}
toggleTableRowsByName("MessageRowClass" + projectName);
toggleTableRowsByName('MessageRowHeaderShow' + projectName);
toggleTableRowsByName('MessageRowHeaderHide' + projectName);
}
function ScrollToFirstVisibleMessage(projectName)
{
if(!projectName || 0 === projectName.length)
{
return;
}
// First try the 'Show messages' row
if(!scrollToFirstVisibleRow('MessageRowHeaderShow' + projectName))
{
// Failed to find a visible row for 'Show messages', try an actual message row
scrollToFirstVisibleRow('MessageRowClass' + projectName);
}
}
</script></head><body><h1 _locID="ConversionReport">
Migration Report - </h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div id="overview"><table><tr><th></th><th _locID="ProjectTableHeader">Project</th><th _locID="PathTableHeader">Path</th><th _locID="ErrorsTableHeader">Errors</th><th _locID="WarningsTableHeader">Warnings</th><th _locID="MessagesTableHeader">Messages</th></tr><tr><td class="IconErrorEncoded" /><td><strong><a href="#SimulationCore2">SimulationCore2</a></strong></td><td>SimulationCore2.vfproj</td><td class="textCentered"><a href="#SimulationCore2Error">1</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#">0</a></td></tr><tr><td class="IconSuccessEncoded" /><td><strong><a href="#Solution"><span _locID="OverviewSolutionSpan">Solution</span></a></strong></td><td>SimulationCore2.sln</td><td class="textCentered"><a>0</a></td><td class="textCentered"><a>0</a></td><td class="textCentered"><a href="#" onclick="ScrollToFirstVisibleMessage('Solution'); return false;">1</a></td></tr></table></div><h2 _locID="SolutionAndProjectsTitle">Solution and projects</h2><div id="messages"><a name="SimulationCore2" /><h3>SimulationCore2</h3><table><tr id="SimulationCore2HeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr name="ErrorRowClassSimulationCore2"><td class="IconErrorEncoded"><a name="SimulationCore2Error" /></td><td class="messageCell"><strong>SimulationCore2.vfproj:
</strong><span>The application which this project type is based on was not found. Please try this link for further information: 6989167d-11e4-40fe-8c1a-2192a86a7e90</span></td></tr></table><a name="Solution" /><h3 _locID="ProjectDisplayNameHeader">Solution</h3><table><tr id="SolutionHeaderRow"><th></th><th class="messageCell" _locID="MessageTableHeader">Message</th></tr><tr name="MessageRowHeaderShowSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="ShowAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
Show 1 additional messages
</a></td></tr><tr name="MessageRowClassSolution" style="display: none"><td class="IconInfoEncoded"><a name="SolutionMessage" /></td><td class="messageCell"><strong>SimulationCore2.sln:
</strong><span>The solution file does not require migration.</span></td></tr><tr style="display: none" name="MessageRowHeaderHideSolution"><td class="IconInfoEncoded" /><td class="messageCell"><a _locID="HideAdditionalMessages" href="#" name="SolutionMessage" onclick="ToggleMessageVisibility('Solution'); return false;">
Hide 1 additional messages
</a></td></tr></table></div></div></body></html>

+ 78
- 4
helper.ipynb Näytä tiedosto

@@ -1,22 +1,73 @@
{
"cells": [
{
<<<<<<< HEAD
"attachments": {},
"cell_type": "markdown",
"metadata": {},
=======
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[' real(8) :: AnnularRegulatorSetControl\\n',\n",
" ' real(8) :: AirMasterValve\\n',\n",
" ' real(8) :: ByePassValve\\n',\n",
" ' real(8) :: AnnularValve\\n',\n",
" ' real(8) :: UpperRamsValve\\n',\n",
" ' real(8) :: MiddleRamsValve\\n',\n",
" ' real(8) :: KillLineValve\\n',\n",
" ' real(8) :: ChokeLineValve\\n',\n",
" ' real(8) :: LowerRamsValve\\n',\n",
" ' real(8) :: ManifoldPressureGauge\\n',\n",
" ' real(8) :: AirSupplyPressureGauge\\n',\n",
" ' real(8) :: AccumulatorPressureGauge\\n',\n",
" ' real(8) :: AnnularPressureGauge\\n',\n",
" ' integer :: AnnularOpenLED\\n',\n",
" ' integer :: AnnularCloseLED\\n',\n",
" ' integer :: UpperRamsOpenLED\\n',\n",
" ' integer :: UpperRamsCloseLED\\n',\n",
" ' integer :: MiddleRamsOpenLED\\n',\n",
" ' integer :: MiddleRamsCloseLED\\n',\n",
" ' integer :: KillLineOpenLED\\n',\n",
" ' integer :: KillLineCloseLED\\n',\n",
" ' integer :: ChokeLineOpenLED\\n',\n",
" ' integer :: ChokeLineCloseLED\\n',\n",
" ' integer :: LowerRamsOpenLED\\n',\n",
" ' integer :: LowerRamsCloseLED\\n',\n",
" ' real(8) :: AnnularStatus\\n',\n",
" ' real(8) :: UpperRamsStatus\\n',\n",
" ' real(8) :: MiddleRamsStatus\\n',\n",
" ' real(8) :: LowerRamsStatus']"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
"source": [
"# Make makefile"
]
},
{
"cell_type": "code",
<<<<<<< HEAD
"execution_count": 72,
=======
"execution_count": 5,
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
<<<<<<< HEAD
"\tCSharp/OperationScenarios/Common/COperationScenariosVariables.f90 /\n",
"\tTorqueDrag/TD_Modules/TD_WellGeometry.f90 /\n",
"\tTorqueDrag/TD_Modules/TD_WellElements.f90 /\n",
@@ -322,10 +373,28 @@
"\tSimulationCore2.f90 /\n",
"\tEquipments/MudSystem/Plot_Final_Mud_Elements.f90 /\n",
"\tFluidFlow/Fluid_Flow_Solver.f90 /\n"
=======
"call json%add(p,\"TopDriveTdsPowerState\",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerState)\n",
"call json%add(p,\"TopDriveTorqueWrench\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrench)\n",
"call json%add(p,\"TopDriveDrillTorqueState\",data%Equipments%ControlPanel%CTopDrive%TopDriveDrillTorqueState)\n",
"call json%add(p,\"TopDriveLinkTiltState\",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltState)\n",
"call json%add(p,\"TopDriveIbop\",data%Equipments%ControlPanel%CTopDrive%TopDriveIbop)\n",
"call json%add(p,\"TopDriveTorqueLimitKnob\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitKnob)\n",
"call json%add(p,\"RpmKnob\",data%Equipments%ControlPanel%CTopDrive%RpmKnob)\n",
"call json%add(p,\"TopDriveOperationFaultLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveOperationFaultLed)\n",
"call json%add(p,\"TopDriveTdsPowerLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerLed)\n",
"call json%add(p,\"TopDriveTorqueWrenchLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrenchLed)\n",
"call json%add(p,\"TopDriveLinkTiltLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltLed)\n",
"call json%add(p,\"TopDriveIbopLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveIbopLed)\n",
"call json%add(p,\"TopDriveTorqueLimitGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitGauge)\n",
"call json%add(p,\"TopDriveTorqueGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueGauge)\n",
"call json%add(p,\"TopDriveRpmGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveRpmGauge)\n"
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
]
}
],
"source": [
<<<<<<< HEAD
"import re\n",
"current_dir = 'C:\\\\Projects\\\\VSIM\\\\SimulationCore2\\\\'\n",
"target_dir = 'x64\\\\Debug\\\\'\n",
@@ -952,6 +1021,9 @@
],
"source": [
"precode = \"\"\"call ProblemToJson(p,\"\",data%State%OperationScenarios%\"\"\"\n",
=======
"precode = \"\"\"call json%add(pform,\"\",data%Equipments%ControlPanel%CTopDrive%\"\"\"\n",
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
"input = open(\"Text1.txt\")\n",
"lines = input.readlines()\n",
"for line in lines:\n",
@@ -965,6 +1037,7 @@
},
{
"cell_type": "code",
<<<<<<< HEAD
"execution_count": 20,
"metadata": {},
"outputs": [
@@ -1050,6 +1123,9 @@
{
"cell_type": "code",
"execution_count": 3,
=======
"execution_count": 2,
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2
"metadata": {},
"outputs": [
{
@@ -1080,7 +1156,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
@@ -1490,7 +1565,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "base",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -1504,9 +1579,8 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
"version": "3.11.4"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "1ef4a26de7183d96d6da1045a38581e0a15b2215d0c1b98c7b273c6e514c6c7e"


Ladataan…
Peruuta
Tallenna