@@ -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 | |||
use SimulationVariables !@ | |||
use json_module | |||
@@ -42,4 +43,31 @@ module CPathGeneration | |||
call json%add(parent,ppath) | |||
end subroutine | |||
======= | |||
module CPathGeneration | |||
use SimulationVariables !@ | |||
use json_module | |||
implicit none | |||
public | |||
contains | |||
subroutine PathGenerationToJson(parent) | |||
type(json_value),pointer :: parent | |||
type(json_core) :: json | |||
type(json_value),pointer :: p | |||
! 1. create new node | |||
call json%create_object(p,'Path') | |||
! 2. add member of data type to new node | |||
! call StringConfigurationToJson(p) | |||
! call FormationToJson(p) | |||
! call json%add(p,"",data%Configuration%Formation%Formations(i)%Abrasiveness) | |||
! 3. add new node to parent | |||
call json%add(parent,p) | |||
end subroutine | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
end module CPathGeneration |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -1,3 +1,4 @@ | |||
<<<<<<< HEAD | |||
module CTanks | |||
use SimulationVariables | |||
@@ -17,4 +18,64 @@ | |||
end subroutine | |||
======= | |||
module CTanks | |||
use SimulationVariables | |||
use CManifolds | |||
implicit none | |||
public | |||
contains | |||
subroutine CTankToJson(parent) | |||
type(json_value),pointer :: parent | |||
type(json_core) :: json | |||
type(json_value),pointer :: p,pform | |||
integer :: i | |||
call json%create_array(p,'CTank') | |||
do i=1,data%Equipments%Tanks%CTank%Count | |||
call json%create_object(pform,'') | |||
call json%add(pform,"WaterRate",data%Equipments%Tanks%CTanks%WaterRate) | |||
call json%add(pform,"CementTankVolume",data%Equipments%Tanks%CTanks%CementTankVolume) | |||
call json%add(pform,"CementTankDensity",data%Equipments%Tanks%CTanks%CementTankDensity) | |||
call json%add(pform,"TripTankVolume",data%Equipments%Tanks%CTanks%TripTankVolume) | |||
call json%add(pform,"TripTankDensity",data%Equipments%Tanks%CTanks%TripTankDensity) | |||
call json%add(pform,"ManualPumpPower",data%Equipments%Tanks%CTanks%ManualPumpPower) | |||
call json%add(pform,"Valve1",data%Equipments%Tanks%CTanks%Valve1) | |||
call json%add(pform,"Valve2",data%Equipments%Tanks%CTanks%Valve2) | |||
call json%add(pform,"Valve3",data%Equipments%Tanks%CTanks%Valve3) | |||
call json%add(pform,"Valve4",data%Equipments%Tanks%CTanks%Valve4) | |||
call json%add(pform,"Valve5",data%Equipments%Tanks%CTanks%Valve5) | |||
call json%add(pform,"Valve6",data%Equipments%Tanks%CTanks%Valve6) | |||
call json%add(pform,"Valve7",data%Equipments%Tanks%CTanks%Valve7) | |||
call json%add(pform,"Valve8",data%Equipments%Tanks%CTanks%Valve8) | |||
call json%add(pform,"Valve9",data%Equipments%Tanks%CTanks%Valve9) | |||
call json%add(pform,"Valve10",data%Equipments%Tanks%CTanks%Valve10) | |||
call json%add(pform,"Valve11",data%Equipments%Tanks%CTanks%Valve11) | |||
call json%add(p,pform) | |||
end do | |||
call json%add(parent,p) | |||
end subroutine | |||
subroutine Set_ManualPumpPower(v) | |||
use CManifolds, only:ChangeValve | |||
implicit none | |||
logical, intent(in) :: v | |||
data%EquipmentControl%Tank%ManualPumpPower = v | |||
call ChangeValve(43, v) | |||
#ifdef deb | |||
print*, 'ManualPumpPower=', data%EquipmentControl%Tank%ManualPumpPower | |||
#endif | |||
end subroutine | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
end module CTanks |
@@ -200,9 +200,17 @@ module Simulator | |||
call ProblemsToJson(jsonvalue) | |||
print *,"write starts" | |||
<<<<<<< HEAD | |||
call jsoncore%serialize(jsonvalue,redisContent) | |||
! s = "Test redis write!" | |||
call setData(redisContent) | |||
======= | |||
call json%create_object(p,'') !create the root | |||
call ConfigurationToJson(p) | |||
call json%print(p,'test.json') !write it to a file | |||
call json%destroy(p) !cleanup print *,"written" | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
print *,"write ends" | |||
end subroutine | |||
@@ -1,3 +1,21 @@ | |||
<<<<<<< HEAD | |||
integer :: ElevatorConnection | |||
integer :: StringUpdate | |||
integer :: KellyConnection | |||
integer :: KellyConnection | |||
======= | |||
integer :: TopDriveTdsPowerState | |||
logical :: TopDriveTorqueWrench | |||
integer :: TopDriveDrillTorqueState | |||
integer :: TopDriveLinkTiltState | |||
logical :: TopDriveIbop | |||
real :: TopDriveTorqueLimitKnob | |||
real :: RpmKnob | |||
integer :: TopDriveOperationFaultLed | |||
integer :: TopDriveTdsPowerLed | |||
integer :: TopDriveTorqueWrenchLed | |||
integer :: TopDriveLinkTiltLed | |||
integer :: TopDriveIbopLed | |||
real :: TopDriveTorqueLimitGauge | |||
real :: TopDriveTorqueGauge | |||
real :: TopDriveRpmGauge | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 |
@@ -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": [ | |||
{ | |||
<<<<<<< HEAD | |||
"attachments": {}, | |||
"cell_type": "markdown", | |||
"metadata": {}, | |||
======= | |||
"cell_type": "code", | |||
"execution_count": 10, | |||
"metadata": {}, | |||
"outputs": [ | |||
{ | |||
"data": { | |||
"text/plain": [ | |||
"[' real(8) :: AnnularRegulatorSetControl\\n',\n", | |||
" ' real(8) :: AirMasterValve\\n',\n", | |||
" ' real(8) :: ByePassValve\\n',\n", | |||
" ' real(8) :: AnnularValve\\n',\n", | |||
" ' real(8) :: UpperRamsValve\\n',\n", | |||
" ' real(8) :: MiddleRamsValve\\n',\n", | |||
" ' real(8) :: KillLineValve\\n',\n", | |||
" ' real(8) :: ChokeLineValve\\n',\n", | |||
" ' real(8) :: LowerRamsValve\\n',\n", | |||
" ' real(8) :: ManifoldPressureGauge\\n',\n", | |||
" ' real(8) :: AirSupplyPressureGauge\\n',\n", | |||
" ' real(8) :: AccumulatorPressureGauge\\n',\n", | |||
" ' real(8) :: AnnularPressureGauge\\n',\n", | |||
" ' integer :: AnnularOpenLED\\n',\n", | |||
" ' integer :: AnnularCloseLED\\n',\n", | |||
" ' integer :: UpperRamsOpenLED\\n',\n", | |||
" ' integer :: UpperRamsCloseLED\\n',\n", | |||
" ' integer :: MiddleRamsOpenLED\\n',\n", | |||
" ' integer :: MiddleRamsCloseLED\\n',\n", | |||
" ' integer :: KillLineOpenLED\\n',\n", | |||
" ' integer :: KillLineCloseLED\\n',\n", | |||
" ' integer :: ChokeLineOpenLED\\n',\n", | |||
" ' integer :: ChokeLineCloseLED\\n',\n", | |||
" ' integer :: LowerRamsOpenLED\\n',\n", | |||
" ' integer :: LowerRamsCloseLED\\n',\n", | |||
" ' real(8) :: AnnularStatus\\n',\n", | |||
" ' real(8) :: UpperRamsStatus\\n',\n", | |||
" ' real(8) :: MiddleRamsStatus\\n',\n", | |||
" ' real(8) :: LowerRamsStatus']" | |||
] | |||
}, | |||
"execution_count": 10, | |||
"metadata": {}, | |||
"output_type": "execute_result" | |||
} | |||
], | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
"source": [ | |||
"# Make makefile" | |||
] | |||
}, | |||
{ | |||
"cell_type": "code", | |||
<<<<<<< HEAD | |||
"execution_count": 72, | |||
======= | |||
"execution_count": 5, | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
"metadata": {}, | |||
"outputs": [ | |||
{ | |||
"name": "stdout", | |||
"output_type": "stream", | |||
"text": [ | |||
<<<<<<< HEAD | |||
"\tCSharp/OperationScenarios/Common/COperationScenariosVariables.f90 /\n", | |||
"\tTorqueDrag/TD_Modules/TD_WellGeometry.f90 /\n", | |||
"\tTorqueDrag/TD_Modules/TD_WellElements.f90 /\n", | |||
@@ -322,10 +373,28 @@ | |||
"\tSimulationCore2.f90 /\n", | |||
"\tEquipments/MudSystem/Plot_Final_Mud_Elements.f90 /\n", | |||
"\tFluidFlow/Fluid_Flow_Solver.f90 /\n" | |||
======= | |||
"call json%add(p,\"TopDriveTdsPowerState\",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerState)\n", | |||
"call json%add(p,\"TopDriveTorqueWrench\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrench)\n", | |||
"call json%add(p,\"TopDriveDrillTorqueState\",data%Equipments%ControlPanel%CTopDrive%TopDriveDrillTorqueState)\n", | |||
"call json%add(p,\"TopDriveLinkTiltState\",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltState)\n", | |||
"call json%add(p,\"TopDriveIbop\",data%Equipments%ControlPanel%CTopDrive%TopDriveIbop)\n", | |||
"call json%add(p,\"TopDriveTorqueLimitKnob\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitKnob)\n", | |||
"call json%add(p,\"RpmKnob\",data%Equipments%ControlPanel%CTopDrive%RpmKnob)\n", | |||
"call json%add(p,\"TopDriveOperationFaultLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveOperationFaultLed)\n", | |||
"call json%add(p,\"TopDriveTdsPowerLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveTdsPowerLed)\n", | |||
"call json%add(p,\"TopDriveTorqueWrenchLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueWrenchLed)\n", | |||
"call json%add(p,\"TopDriveLinkTiltLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveLinkTiltLed)\n", | |||
"call json%add(p,\"TopDriveIbopLed\",data%Equipments%ControlPanel%CTopDrive%TopDriveIbopLed)\n", | |||
"call json%add(p,\"TopDriveTorqueLimitGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueLimitGauge)\n", | |||
"call json%add(p,\"TopDriveTorqueGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveTorqueGauge)\n", | |||
"call json%add(p,\"TopDriveRpmGauge\",data%Equipments%ControlPanel%CTopDrive%TopDriveRpmGauge)\n" | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
] | |||
} | |||
], | |||
"source": [ | |||
<<<<<<< HEAD | |||
"import re\n", | |||
"current_dir = 'C:\\\\Projects\\\\VSIM\\\\SimulationCore2\\\\'\n", | |||
"target_dir = 'x64\\\\Debug\\\\'\n", | |||
@@ -952,6 +1021,9 @@ | |||
], | |||
"source": [ | |||
"precode = \"\"\"call ProblemToJson(p,\"\",data%State%OperationScenarios%\"\"\"\n", | |||
======= | |||
"precode = \"\"\"call json%add(pform,\"\",data%Equipments%ControlPanel%CTopDrive%\"\"\"\n", | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
"input = open(\"Text1.txt\")\n", | |||
"lines = input.readlines()\n", | |||
"for line in lines:\n", | |||
@@ -965,6 +1037,7 @@ | |||
}, | |||
{ | |||
"cell_type": "code", | |||
<<<<<<< HEAD | |||
"execution_count": 20, | |||
"metadata": {}, | |||
"outputs": [ | |||
@@ -1050,6 +1123,9 @@ | |||
{ | |||
"cell_type": "code", | |||
"execution_count": 3, | |||
======= | |||
"execution_count": 2, | |||
>>>>>>> 12c8e5ea51ec0ab746d971224588f794381f80d2 | |||
"metadata": {}, | |||
"outputs": [ | |||
{ | |||
@@ -1080,7 +1156,6 @@ | |||
] | |||
}, | |||
{ | |||
"attachments": {}, | |||
"cell_type": "markdown", | |||
"metadata": {}, | |||
"source": [ | |||
@@ -1490,7 +1565,7 @@ | |||
], | |||
"metadata": { | |||
"kernelspec": { | |||
"display_name": "base", | |||
"display_name": "Python 3 (ipykernel)", | |||
"language": "python", | |||
"name": "python3" | |||
}, | |||
@@ -1504,9 +1579,8 @@ | |||
"name": "python", | |||
"nbconvert_exporter": "python", | |||
"pygments_lexer": "ipython3", | |||
"version": "3.9.12" | |||
"version": "3.11.4" | |||
}, | |||
"orig_nbformat": 4, | |||
"vscode": { | |||
"interpreter": { | |||
"hash": "1ef4a26de7183d96d6da1045a38581e0a15b2215d0c1b98c7b273c6e514c6c7e" | |||