@@ -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 | |||||
} |
@@ -1,3 +1,4 @@ | |||||
<<<<<<< HEAD | |||||
module CPathGeneration | module CPathGeneration | ||||
use SimulationVariables !@ | use SimulationVariables !@ | ||||
use json_module | use json_module | ||||
@@ -42,4 +43,31 @@ module CPathGeneration | |||||
call json%add(parent,ppath) | call json%add(parent,ppath) | ||||
end subroutine | 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 | end module CPathGeneration |
@@ -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 |
@@ -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 | end module CChokeControlPanel |
@@ -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 | end module CChokeManifold |
@@ -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 | end module CDataDisplayConsole |
@@ -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 |
@@ -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 | end module CStandPipeManifold |
@@ -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 |
@@ -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 | end module CTopDrivePanelVariables |
@@ -1,3 +1,4 @@ | |||||
<<<<<<< HEAD | |||||
module CTanks | module CTanks | ||||
use SimulationVariables | use SimulationVariables | ||||
@@ -17,4 +18,64 @@ | |||||
end subroutine | 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 | end module CTanks |
@@ -200,9 +200,17 @@ module Simulator | |||||
call ProblemsToJson(jsonvalue) | call ProblemsToJson(jsonvalue) | ||||
print *,"write starts" | print *,"write starts" | ||||
<<<<<<< HEAD | |||||
call jsoncore%serialize(jsonvalue,redisContent) | call jsoncore%serialize(jsonvalue,redisContent) | ||||
! s = "Test redis write!" | ! s = "Test redis write!" | ||||
call setData(redisContent) | 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" | print *,"write ends" | ||||
end subroutine | end subroutine | ||||
@@ -1,3 +1,21 @@ | |||||
<<<<<<< HEAD | |||||
integer :: ElevatorConnection | integer :: ElevatorConnection | ||||
integer :: StringUpdate | 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 |
@@ -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> |
@@ -1,22 +1,73 @@ | |||||
{ | { | ||||
"cells": [ | "cells": [ | ||||
{ | { | ||||
<<<<<<< HEAD | |||||
"attachments": {}, | "attachments": {}, | ||||
"cell_type": "markdown", | "cell_type": "markdown", | ||||
"metadata": {}, | "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": [ | "source": [ | ||||
"# Make makefile" | "# Make makefile" | ||||
] | ] | ||||
}, | }, | ||||
{ | { | ||||
"cell_type": "code", | "cell_type": "code", | ||||
<<<<<<< HEAD | |||||
"execution_count": 72, | "execution_count": 72, | ||||
======= | |||||
"execution_count": 5, | |||||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||||
"metadata": {}, | "metadata": {}, | ||||
"outputs": [ | "outputs": [ | ||||
{ | { | ||||
"name": "stdout", | "name": "stdout", | ||||
"output_type": "stream", | "output_type": "stream", | ||||
"text": [ | "text": [ | ||||
<<<<<<< HEAD | |||||
"\tCSharp/OperationScenarios/Common/COperationScenariosVariables.f90 /\n", | "\tCSharp/OperationScenarios/Common/COperationScenariosVariables.f90 /\n", | ||||
"\tTorqueDrag/TD_Modules/TD_WellGeometry.f90 /\n", | "\tTorqueDrag/TD_Modules/TD_WellGeometry.f90 /\n", | ||||
"\tTorqueDrag/TD_Modules/TD_WellElements.f90 /\n", | "\tTorqueDrag/TD_Modules/TD_WellElements.f90 /\n", | ||||
@@ -322,10 +373,28 @@ | |||||
"\tSimulationCore2.f90 /\n", | "\tSimulationCore2.f90 /\n", | ||||
"\tEquipments/MudSystem/Plot_Final_Mud_Elements.f90 /\n", | "\tEquipments/MudSystem/Plot_Final_Mud_Elements.f90 /\n", | ||||
"\tFluidFlow/Fluid_Flow_Solver.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": [ | "source": [ | ||||
<<<<<<< HEAD | |||||
"import re\n", | "import re\n", | ||||
"current_dir = 'C:\\\\Projects\\\\VSIM\\\\SimulationCore2\\\\'\n", | "current_dir = 'C:\\\\Projects\\\\VSIM\\\\SimulationCore2\\\\'\n", | ||||
"target_dir = 'x64\\\\Debug\\\\'\n", | "target_dir = 'x64\\\\Debug\\\\'\n", | ||||
@@ -952,6 +1021,9 @@ | |||||
], | ], | ||||
"source": [ | "source": [ | ||||
"precode = \"\"\"call ProblemToJson(p,\"\",data%State%OperationScenarios%\"\"\"\n", | "precode = \"\"\"call ProblemToJson(p,\"\",data%State%OperationScenarios%\"\"\"\n", | ||||
======= | |||||
"precode = \"\"\"call json%add(pform,\"\",data%Equipments%ControlPanel%CTopDrive%\"\"\"\n", | |||||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||||
"input = open(\"Text1.txt\")\n", | "input = open(\"Text1.txt\")\n", | ||||
"lines = input.readlines()\n", | "lines = input.readlines()\n", | ||||
"for line in lines:\n", | "for line in lines:\n", | ||||
@@ -965,6 +1037,7 @@ | |||||
}, | }, | ||||
{ | { | ||||
"cell_type": "code", | "cell_type": "code", | ||||
<<<<<<< HEAD | |||||
"execution_count": 20, | "execution_count": 20, | ||||
"metadata": {}, | "metadata": {}, | ||||
"outputs": [ | "outputs": [ | ||||
@@ -1050,6 +1123,9 @@ | |||||
{ | { | ||||
"cell_type": "code", | "cell_type": "code", | ||||
"execution_count": 3, | "execution_count": 3, | ||||
======= | |||||
"execution_count": 2, | |||||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||||
"metadata": {}, | "metadata": {}, | ||||
"outputs": [ | "outputs": [ | ||||
{ | { | ||||
@@ -1080,7 +1156,6 @@ | |||||
] | ] | ||||
}, | }, | ||||
{ | { | ||||
"attachments": {}, | |||||
"cell_type": "markdown", | "cell_type": "markdown", | ||||
"metadata": {}, | "metadata": {}, | ||||
"source": [ | "source": [ | ||||
@@ -1490,7 +1565,7 @@ | |||||
], | ], | ||||
"metadata": { | "metadata": { | ||||
"kernelspec": { | "kernelspec": { | ||||
"display_name": "base", | |||||
"display_name": "Python 3 (ipykernel)", | |||||
"language": "python", | "language": "python", | ||||
"name": "python3" | "name": "python3" | ||||
}, | }, | ||||
@@ -1504,9 +1579,8 @@ | |||||
"name": "python", | "name": "python", | ||||
"nbconvert_exporter": "python", | "nbconvert_exporter": "python", | ||||
"pygments_lexer": "ipython3", | "pygments_lexer": "ipython3", | ||||
"version": "3.9.12" | |||||
"version": "3.11.4" | |||||
}, | }, | ||||
"orig_nbformat": 4, | |||||
"vscode": { | "vscode": { | ||||
"interpreter": { | "interpreter": { | ||||
"hash": "1ef4a26de7183d96d6da1045a38581e0a15b2215d0c1b98c7b273c6e514c6c7e" | "hash": "1ef4a26de7183d96d6da1045a38581e0a15b2215d0c1b98c7b273c6e514c6c7e" | ||||